Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-19993

Trailing space username will crash Bamboo during administrator setup

    XMLWordPrintable

Details

    Description

      Summary

      If the username have a trailing space during administrator setup installation step, Bamboo will crash

      Steps to Reproduce

      1. Install Bamboo
      2. During Administrator setup step, add a trailing space for the username

      Expected Results

      It will just have the warning message "Invalid username. Username mustn't be blank, have trailing or leading space and must have no more length than 255 characters."

      Actual Results

      It crash with the below exception is thrown in the atlassian-bamboo.log file:

      2018-07-19 17:31:34,069 ERROR [http-nio-8085-exec-14] [ExceptionMappingInterceptor] com.atlassian.user.impl.EntityValidationException: com.atlassian.crowd.exception.InvalidUserException: User name may not contain leading or trailing whitespace
      com.atlassian.core.exception.InfrastructureException: com.atlassian.user.impl.EntityValidationException: com.atlassian.crowd.exception.InvalidUserException: User name may not contain leading or trailing whitespace
      	at bucket.user.DefaultUserAccessor.addUser(DefaultUserAccessor.java:106)
      	at bucket.user.DefaultUserAccessor.addUser(DefaultUserAccessor.java:74)
      	at com.atlassian.bamboo.user.BambooUserManagerImpl.setupInitialAdminUser(BambooUserManagerImpl.java:671)
      	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:497)
      ...
      Caused by: com.atlassian.user.impl.EntityValidationException: com.atlassian.crowd.exception.InvalidUserException: User name may not contain leading or trailing whitespace
      	at com.atlassian.crowd.embedded.atlassianuser.EmbeddedCrowdUserManagerImpl.createUser(EmbeddedCrowdUserManagerImpl.java:124)
      	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:497)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
      	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
      	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
      	at com.sun.proxy.$Proxy165.createUser(Unknown Source)
      	at bucket.user.DefaultUserAccessor.addUser(DefaultUserAccessor.java:101)
      	... 187 more
      Caused by: com.atlassian.crowd.exception.InvalidUserException: User name may not contain leading or trailing whitespace
      	at com.atlassian.crowd.manager.application.ApplicationServiceGeneric.addUser(ApplicationServiceGeneric.java:516)
      	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:497)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
      	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
      	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
      	at com.sun.proxy.$Proxy163.addUser(Unknown Source)
      	at com.atlassian.crowd.embedded.core.CrowdServiceImpl.addUser(CrowdServiceImpl.java:259)
      	at com.atlassian.crowd.embedded.core.CrowdServiceImpl.addUser(CrowdServiceImpl.java:250)
      	at com.atlassian.crowd.embedded.atlassianuser.EmbeddedCrowdUserManagerImpl.createUser(EmbeddedCrowdUserManagerImpl.java:122)
      

      Notes

      • Trying to setup administrator without trailing space on the second time will have the following error:
        2018-07-19 17:33:14,516 ERROR [http-nio-8085-exec-5] [ExceptionMappingInterceptor] could not execute batch; SQL [insert into CWD_DIRECTORY (DIRECTORY_NAME, LOWER_DIRECTORY_NAME, CREATED_DATE, UPDATED_DATE, ACTIVE, DESCRIPTION, IMPL_CLASS, LOWER_IMPL_CLASS, DIRECTORY_TYPE, ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; constraint [uk_dir_l_name]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch
        org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into CWD_DIRECTORY (DIRECTORY_NAME, LOWER_DIRECTORY_NAME, CREATED_DATE, UPDATED_DATE, ACTIVE, DESCRIPTION, IMPL_CLASS, LOWER_IMPL_CLASS, DIRECTORY_TYPE, ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; constraint [uk_dir_l_name]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch
        	at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:247)
        	at org.springframework.orm.hibernate5.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:785)
        	at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:621)
        	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:746)
        	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714)
        	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:497)
        	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
        	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:206)
        	at com.sun.proxy.$Proxy106.commit(Unknown Source)
        	at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:532)
        	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:304)
        	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
        	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
        	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
        	at com.sun.proxy.$Proxy296.initialiseEmbeddedCrowd(Unknown Source)
        	at com.atlassian.bamboo.ww2.actions.setup.SetupUtilityBean.setupUser(SetupUtilityBean.java:210)
        	at com.atlassian.bamboo.ww2.actions.setup.SetupAdminUserAction.execute(SetupAdminUserAction.java:42)
        ...
        Caused by: java.sql.BatchUpdateException: Duplicate entry 'bamboo internal directory' for key 'uk_dir_l_name'
        	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        	at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
        	at com.mysql.jdbc.Util.getInstance(Util.java:387)
        	at com.mysql.jdbc.SQLError.createBatchUpdateException(SQLError.java:1154)
        	at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1773)
        	at com.mysql.jdbc.PreparedStatement.executeBatchInternal(PreparedStatement.java:1257)
        	at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:959)
        	at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:2544)
        	at org.hibernate.engine.jdbc.batch.internal.BatchingBatch.performExecution(BatchingBatch.java:111)
        	... 208 more
        Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'bamboo internal directory' for key 'uk_dir_l_name'
        	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        	at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
        	at com.mysql.jdbc.Util.getInstance(Util.java:387)
        	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:932)
        	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
        	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
        	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)
        	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)
        	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551)
        	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
        	at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
        	at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1751)
        
      • Bamboo Home and database have to be deleted to install Bamboo again
      • Creating user with trailing or leading space works fine at Administration >> Security >> Users - it will just be trimmed

      Attachments

        Issue Links

          Activity

            People

              achystoprudov Alexey Chystoprudov
              klfoong Foong (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: