You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@kylin.apache.org by you Zhuang <zh...@gmail.com> on 2018/12/05 04:02:01 UTC

Kylin user login arise error in cluster mode

org.apache.kylin.common.persistence.WriteConflictException: 
Overwriting conflict /user/admin_mock, expect old TS 1543976358968, but it is 1543976359060

I dive into org.apache.kylin.rest.service.KylinUserService class, the updateUser method setEvictCacheFlag(true);

After getKylinUserManager().update(managedUser);

I suspect that next login will not hit cache, and the inner real authentication provider always  will  authenticate.


And the other place I think that is not reasonable is getKylinUserManager().update(managedUser);

Method,  the user.setLastModified(exist.getLastModified()); line is not reliable  in cluster mode because of constant update described above.


Which depends network notification to update inner user map cache.   When I comment setEvictCacheFlag(true);
 
And add exist = crud.reloadQuietly(user.getUsername()); line , seems everything is going right.




Re: Kylin user login arise error in cluster mode

Posted by JiaTao Tao <ta...@gmail.com>.
hi

It has been fixed, see more details in this JIRA:
https://issues.apache.org/jira/browse/KYLIN-3562.

you Zhuang <zh...@gmail.com> 于2018年12月5日周三 上午4:02写道:

> org.apache.kylin.common.persistence.WriteConflictException:
> Overwriting conflict /user/admin_mock, expect old TS 1543976358968, but it
> is 1543976359060
>
> I dive into *org.apache.kylin.rest.service.KylinUserService* class, the
> *updateUser* method *setEvictCacheFlag(true)*;
>
> After *getKylinUserManager().update(managedUser)*;
>
> I suspect that next login will not hit cache, and the inner real
> authentication provider always  will  authenticate.
>
>
> And the other place I think that is not reasonable
> is getKylinUserManager().update(managedUser);
>
> Method,  the *user.setLastModified(exist.getLastModified());* line is not
> reliable  in cluster mode because of constant update described above.
>
>
> Which depends network notification to update inner user map cache.   When
> I comment setEvictCacheFlag(true);
>
> And add* exist = crud.reloadQuietly(user.getUsername());* line , seems
> everything is going right.
>
>
>
>

-- 


Regards!

Aron Tao