Uploaded image for project: 'Crowd Data Center'
  1. Crowd Data Center
  2. CWD-5396

Group name with cyrillic characters can not be created when using MSSQL

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not a bug
    • Icon: Low Low
    • None
    • 3.3.0, 3.4.0
    • Database
    • None

      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

      1. Install Crowd with SQL server.
      2. 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:

      1. Shutdown Crowd.
      2. Backup the database.
      3. Delete the row that contain the Cyrillic characters.
      4. 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);
        
      5. Restart Crowd and try to create the group or trigger the synchronzation again.

              Unassigned Unassigned
              yilinmo Yilin (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: