BugFix: getBoolean could not map the String 'N ' to Boolean type

We migrated the database backing JIRA from SQL Server 2008 R2 to SQL Server 2014 by taking a SQL backup from the original server and restoring to the target server. We also changed the compatibility level on the database from SQL 2008 to SQL 2014, and had to mess around will column-level collation settings. But everything worked for a day or two afterward. Then our support license expired, and within a day or so our JIRA instance stopped working with a 500 error.

The logs on the JIRA server had a stack trace that eventually resolved to

Caused by: java.lang.IllegalArgumentException: getBoolean could not map the String 'N ' to Boolean type
	at org.ofbiz.core.entity.GenericEntity.getBoolean(GenericEntity.java:414)
	at com.atlassian.jira.application.OfBizApplicationRoleStore.isDefault(OfBizApplicationRoleStore.java:168)
	at com.atlassian.jira.application.OfBizApplicationRoleStore.get(OfBizApplicationRoleStore.java:59)
	at com.atlassian.jira.application.DefaultApplicationRoleManager$RoleLoader.lambda$load$0(DefaultApplicationRoleManager.java:688)
	at com.atlassian.fugue.Option.map(Option.java:272)
	at com.atlassian.jira.application.DefaultApplicationRoleManager$RoleLoader.load(DefaultApplicationRoleManager.java:682)
	at com.atlassian.cache.memory.MemoryCacheManager$3$1.load(MemoryCacheManager.java:162)
	at com.atlassian.cache.memory.DelegatingCache.lambda$get$0(DelegatingCache.java:158)
	at com.atlassian.cache.memory.DelegatingCache.lambda$get$1(DelegatingCache.java:186)
	at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4742)
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527)
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319)
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282)
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197)
	at com.google.common.cache.LocalCache.get(LocalCache.java:3937)
	at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4739)
	at com.atlassian.cache.memory.DelegatingCache.get(DelegatingCache.java:173)
	... 646 more

 

From there, Google brought me to https://developer.atlassian.com/static/javadoc/jira/latest/reference/com/atlassian/jira/application/OfBizApplicationRoleStore.html. Based on what that class seemed to be doing, I started looking through the SQL database for tables that had 'app' or 'role' in their name, and seemed to be related to permissions. I queried each table, looking for Boolean flags ('Y' and 'N').

I finally found the licenserolesgroup table, and the PRIMARY_GROUP column. Doing something like SELECT QUOTENAME(PRIMARY_GROUP) FROM licenserolesgroup showed the values all had a trailing space.

I tried the obvious: UPDATE licenserolesgroup SET PRIMARY_GROUP = RTRIM(PRIMARY_GROUP), but that didn't work.

The cause turned out to be that the PRIMARY_GROUP column is a NCHAR(2), so SQL Server will always pad the value with spaces. Looking back at the SQL 2008 instance, this column is a NCHAR(1) there, so something about the transition from one database version to another altered the datatype.

The fix was: ALTER TABLE licenserolesgroup ALTER COLUMN PRIMARY_GROUP nchar(1) null

Submitting this here in hopes of saving the next guy a couple hours of time debugging.

2 answers

Thanks for sharing your experience! smile

Thank You So much!!

 

You really saved hell lot of time for me. I was strugling since past 2 days and even Atlassian could not come over with response on time and with correct solution. After googling I found your answers and it really worked like magic. My application is now up & RUnning.

 

I would have appreciated if Atlassian has mentioned in their Upgrade guide.

 

Thanks a Ton!!

 

Best Regards,

Akash

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published Sunday in Agility

You asked for it, so we delivered: images on issues have arrived

A picture tells a thousand words. And agility boards have just released their latest feature: cover images on issues – so now your board can tell a story at first glance. Upload attachmen...

627 views 3 11
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you