-
Bug
-
Resolution: Fixed
-
High
-
2.7.0
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.
- is superseded by
-
FE-3791 Change authentication providers to return CommunicationException when appropriate
- Closed