-
Bug
-
Resolution: Not a bug
-
Low
-
None
-
3.3.0, 3.4.0
-
None
-
1
-
Severity 2 - Major
-
Issue Summary
The group name with Cyrillic characters is not accepted by the Crowd when using MSSQL, it will throw the following error message when trying to create the group:
2019-05-13 21:38:54,161 http-nio-8096-exec-21 ERROR [console.action.group.ViewGroup] Group <*********> does not exist com.atlassian.crowd.exception.GroupNotFoundException: Group <*********> does not exist at com.atlassian.crowd.dao.group.GroupDAOHibernate.findByName(GroupDAOHibernate.java:148) at com.atlassian.crowd.dao.group.GroupDAOHibernate.findByName(GroupDAOHibernate.java:51) at com.atlassian.crowd.directory.AbstractInternalDirectory.findGroupByName(AbstractInternalDirectory.java:699) at com.atlassian.crowd.directory.AbstractInternalDirectory.findGroupByName(AbstractInternalDirectory.java:63) at com.atlassian.crowd.manager.directory.DirectoryManagerGeneric.findGroupByName(DirectoryManagerGeneric.java:464) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) at com.sun.proxy.$Proxy97.findGroupByName(Unknown Source)
Steps to Reproduce
- Install Crowd with SQL server.
- Create a group with Cyrillic characters such as Greek or Russian.
Expected Results
The group should be created normally.
Actual Results
- It throws an error on the UI with the message "Group <*********> does not exist"
- The group name column in the table cwd_group is showing question marks for all Cyrillic characters.
Notes
The root cause of the issue is that all string type related column in Crowd is still using the data type VARCHAR instead of NVARCHAR, which does not support the Cyrillic characters.
This issue apparently causes the user or the group creation failure on both manual creation and synchronization from any external user repositories.
Workaround
For the group name, please use the following:
- Shutdown Crowd.
- Backup the database.
- Delete the row that contain the Cyrillic characters.
- Run the following queries to change the datatype:
alter table cwd_group drop CONSTRAINT uk_group_name_dir_id; alter table cwd_group alter column lower_group_name nvarchar(255); alter table cwd_group alter column group_name nvarchar(255); alter table cwd_group add CONSTRAINT uk_group_name_dir_id UNIQUE (lower_group_name, directory_id);
- Restart Crowd and try to create the group or trigger the synchronzation again.
- is caused by
-
CWD-5358 During db schema creation on 3.3 all tables will be created in varchar
- Closed