com.cenqua.fisheye.rep.DbException

There are no available Samebug tips for this exception. Do you have an idea how to solve this issue? A short tip would help users who saw this issue last week.

  • There are at least 2 issues with the DefaultUserManager used in FishEye/Crucible regarding thread safety. The first one has been seen in practice, the second one however has not. h3. importUser race condition It is possible that 2 threads can enter any of the getOrImportXXX methods that do an upfront check for the existence of a User. If the user doesn't exist, then the user is imported. It is possible for 2 threads to both try and import a user, where both see the user doesn't exist first, then 1 will fail if it loses the race to create the user. Seen in studio: {code} 012-04-02 00:07:11,980 INFO [btpool0-4 ] fisheye.app DefaultUserManager-importUser - auto-import user: "mlandis@5amsolutions.com" 2012-04-02 00:07:11,982 INFO [btpool0-7 ] fisheye.app DefaultUserManager-importUser - auto-import user: "mlandis@5amsolutions.com" 2012-04-02 00:07:12,067 INFO [btpool0-9 ] fisheye.app DefaultUserManager-importUser - auto-import user: "mlandis@5amsolutions.com" 2012-04-02 00:07:12,089 WARN [btpool0-7 ] fisheye.app UserDetector-tryRequestDelegatedLogin - problem logging user delegated com.cenqua.fisheye.rep.DbException: User named "mlandis@5amsolutions.com" already exists. at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1251) at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1245) at com.cenqua.fisheye.config.DB0Handle.write(DB0Handle.java:96) at com.cenqua.fisheye.user.DefaultUserManager.addUserImpl(DefaultUserManager.java:1245) at com.cenqua.fisheye.user.DefaultUserManager.importUser(DefaultUserManager.java:634) at com.cenqua.fisheye.user.DefaultUserManager.getOrImportDelegatedUser(DefaultUserManager.java:594) at com.cenqua.fisheye.user.DefaultUserManager.tryRequestDelegatedLogin(DefaultUserManager.java:762) {code} h3. the mAuth member variable is not protected from multiple threads It is possible for the importUser() method to see a null mAuth member variable if the reload method is called during the import of a user.
    via by Nick Pellow [Atlassian],
  • There are at least 2 issues with the DefaultUserManager used in FishEye/Crucible regarding thread safety. The first one has been seen in practice, the second one however has not. h3. importUser race condition It is possible that 2 threads can enter any of the getOrImportXXX methods that do an upfront check for the existence of a User. If the user doesn't exist, then the user is imported. It is possible for 2 threads to both try and import a user, where both see the user doesn't exist first, then 1 will fail if it loses the race to create the user. Seen in studio: {code} 012-04-02 00:07:11,980 INFO [btpool0-4 ] fisheye.app DefaultUserManager-importUser - auto-import user: "mlandis@5amsolutions.com" 2012-04-02 00:07:11,982 INFO [btpool0-7 ] fisheye.app DefaultUserManager-importUser - auto-import user: "mlandis@5amsolutions.com" 2012-04-02 00:07:12,067 INFO [btpool0-9 ] fisheye.app DefaultUserManager-importUser - auto-import user: "mlandis@5amsolutions.com" 2012-04-02 00:07:12,089 WARN [btpool0-7 ] fisheye.app UserDetector-tryRequestDelegatedLogin - problem logging user delegated com.cenqua.fisheye.rep.DbException: User named "mlandis@5amsolutions.com" already exists. at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1251) at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1245) at com.cenqua.fisheye.config.DB0Handle.write(DB0Handle.java:96) at com.cenqua.fisheye.user.DefaultUserManager.addUserImpl(DefaultUserManager.java:1245) at com.cenqua.fisheye.user.DefaultUserManager.importUser(DefaultUserManager.java:634) at com.cenqua.fisheye.user.DefaultUserManager.getOrImportDelegatedUser(DefaultUserManager.java:594) at com.cenqua.fisheye.user.DefaultUserManager.tryRequestDelegatedLogin(DefaultUserManager.java:762) {code} h3. the mAuth member variable is not protected from multiple threads It is possible for the importUser() method to see a null mAuth member variable if the reload method is called during the import of a user.
    via by Nick Pellow [Atlassian],
  • If a user logs in with a username containing upper case characters, but the external auth system is case independent, they may get an error like: com.cenqua.fisheye.rep.DbException: User named "djdch" already exists. at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1251) at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1245) at com.cenqua.fisheye.config.DB0Handle.write(DB0Handle.java:96) at com.cenqua.fisheye.user.DefaultUserManager.addUserImpl(DefaultUserManager.java:1245) at com.cenqua.fisheye.user.DefaultUserManager.importUser(DefaultUserManager.java:634) at com.cenqua.fisheye.user.DefaultUserManager.getOrImportUser(DefaultUserManager.java:614) at com.cenqua.fisheye.user.DefaultUserManager.loginWithSanitizedUserName(DefaultUserManager.java:432) at com.cenqua.fisheye.user.DefaultUserManager.login(DefaultUserManager.java:407) at sun.reflect.GeneratedMethodAccessor412.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196) at $Proxy40.login(Unknown Source) at com.cenqua.fisheye.web.LoginServlet.login(LoginServlet.java:108) when they login. This is because the initial check to see if the user exists uses the mixed case name, and FeCru is case sensitive, but the name used to create the user is that returned by the external auth, which is mapped to lower case. We should always use the name provided by the user to create the local user, not the name returned by the external auth system, or should always map user names to lower case when external auth is used (which would probably not be backward compatible).
    via by Tom Davies [Atlassian],
  • If a user logs in with a username containing upper case characters, but the external auth system is case independent, they may get an error like: com.cenqua.fisheye.rep.DbException: User named "djdch" already exists. at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1251) at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1245) at com.cenqua.fisheye.config.DB0Handle.write(DB0Handle.java:96) at com.cenqua.fisheye.user.DefaultUserManager.addUserImpl(DefaultUserManager.java:1245) at com.cenqua.fisheye.user.DefaultUserManager.importUser(DefaultUserManager.java:634) at com.cenqua.fisheye.user.DefaultUserManager.getOrImportUser(DefaultUserManager.java:614) at com.cenqua.fisheye.user.DefaultUserManager.loginWithSanitizedUserName(DefaultUserManager.java:432) at com.cenqua.fisheye.user.DefaultUserManager.login(DefaultUserManager.java:407) at sun.reflect.GeneratedMethodAccessor412.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196) at $Proxy40.login(Unknown Source) at com.cenqua.fisheye.web.LoginServlet.login(LoginServlet.java:108) when they login. This is because the initial check to see if the user exists uses the mixed case name, and FeCru is case sensitive, but the name used to create the user is that returned by the external auth, which is mapped to lower case. We should always use the name provided by the user to create the local user, not the name returned by the external auth system, or should always map user names to lower case when external auth is used (which would probably not be backward compatible).
    via by Tom Davies [Atlassian],
    • com.cenqua.fisheye.rep.DbException: User named "mlandis@5amsolutions.com" already exists. at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1251) at com.cenqua.fisheye.user.DefaultUserManager$19.write(DefaultUserManager.java:1245) at com.cenqua.fisheye.config.DB0Handle.write(DB0Handle.java:96) at com.cenqua.fisheye.user.DefaultUserManager.addUserImpl(DefaultUserManager.java:1245) at com.cenqua.fisheye.user.DefaultUserManager.importUser(DefaultUserManager.java:634) at com.cenqua.fisheye.user.DefaultUserManager.getOrImportDelegatedUser(DefaultUserManager.java:594) at com.cenqua.fisheye.user.DefaultUserManager.tryRequestDelegatedLogin(DefaultUserManager.java:762)
    No Bugmate found.