Uploaded image for project: 'FishEye'
  1. FishEye
  2. FE-3787

When synchronizing users with Crowd, do not deactivate users if the error is a communication problem

    XMLWordPrintable

Details

    Description

      During the user synchronisation, if there is any error while communicating with Crowd, an exception is thrown by the REST client. When that happens, it is interpreted as "Can't Authenticate", which means we return a null authToken, and remove the user from the user database.

      Instead, we should just skip the user (don't make changes to their entry on the FishEye side), and move on to the next one.

      1) Errors like:

      2011-10-19 20:14:57,799 INFO  [quartzScheduler_Worker-0 ] fisheye.app UserSynchroniserJob-execute - Starting resynchronising users
      2011-10-19 20:14:58,532 INFO  [quartzScheduler_Worker-0 ] fisheye.app DefaultUserManager-synchroniseUsers - resynchronising users with crowd
      2011-10-19 20:14:59,269 ERROR [quartzScheduler_Worker-0 ] fisheye.app CrowdAuth-canAuthenticate - Unexpected exception when retrieving token for user 'USER_NAME'
      com.atlassian.crowd.exception.OperationFailedException
      	at com.atlassian.crowd.integration.rest.service.RestCrowdClient.handleCommonExceptions(RestCrowdClient.java:1084)
      	at com.atlassian.crowd.integration.rest.service.RestCrowdClient.authenticateSSOUserWithoutValidatingPassword(RestCrowdClient.java:830)
      	at com.cenqua.fisheye.user.crowd.CrowdAuth.canAuthenticate(CrowdAuth.java:278)
      	at com.cenqua.fisheye.user.crowd.CrowdAuth.access$500(CrowdAuth.java:54)
      	at com.cenqua.fisheye.user.crowd.CrowdAuth$3.call(CrowdAuth.java:241)
      	at com.cenqua.fisheye.user.crowd.CrowdAuth$3.call(CrowdAuth.java:235)
      	at com.cenqua.fisheye.user.crowd.CrowdAuth.withTimer(CrowdAuth.java:92)
      	at com.cenqua.fisheye.user.crowd.CrowdAuth.recreateAuth(CrowdAuth.java:235)
      	at com.cenqua.fisheye.user.DefaultUserManager.synchroniseUsers(DefaultUserManager.java:631)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
      	at com.googlecode.ehcache.annotations.interceptor.EhCacheInterceptor.invokeTriggersRemove(EhCacheInterceptor.java:191)
      	at com.googlecode.ehcache.annotations.interceptor.EhCacheInterceptor.invoke(EhCacheInterceptor.java:90)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
      	at $Proxy25.synchroniseUsers(Unknown Source)
      	at com.cenqua.fisheye.user.UserSynchroniserJob.execute(UserSynchroniserJob.java:30)
      	at org.quartz.core.JobRunShell.run(JobRunShell.java:195)
      	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
      

      Once the error is fixed, in the next round of synchronization, if the exception goes away, we create a new, different user, which makes the original problem even harder to fix.

      Attachments

        Issue Links

          Activity

            People

              pepoirot Pierre-Etienne Poirot (Inactive)
              aahmed Adam Ahmed (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - Not Specified
                  Not Specified
                  Logged:
                  Time Spent - 0.45h
                  0.45h