Authentication OkHttp验证器有时不会对多个改装实例调用authenticate

Authentication OkHttp验证器有时不会对多个改装实例调用authenticate,authentication,retrofit2,okhttp3,authenticator,Authentication,Retrofit2,Okhttp3,Authenticator,对于两个不同的API,我有两个不同的改型实例。我还有两个不同的OkHttp3客户端,但它们共享相同的Authenticator,因为两个api的auth令牌是相同的 问题是,当令牌过期时,有时(但几乎总是)一个改型/OkHttpClient对象不会调用HTTP 401上的验证器的身份验证方法。它将愉快地进行API调用,所有调用都将以401结束,而验证器将被完全忽略。在这种情况下,当第二次改造进行API调用时,它将收到401,并调用验证,令牌被刷新,一切恢复正常。包括第二个改型API,它失败了40

对于两个不同的API,我有两个不同的
改型
实例。我还有两个不同的
OkHttp3
客户端,但它们共享相同的
Authenticator
,因为两个api的auth令牌是相同的

问题是,当令牌过期时,有时(但几乎总是)一个
改型
/
OkHttpClient
对象不会调用HTTP 401上的
验证器
身份验证
方法。它将愉快地进行API调用,所有调用都将以401结束,而验证器将被完全忽略。在这种情况下,当第二次
改造
进行API调用时,它将收到401,并调用
验证
,令牌被刷新,一切恢复正常。包括第二个
改型
API,它失败了401的所有调用

更大的问题是,这种行为是随机的,但超过一半的令牌过期会导致失败。我们尝试了使用一个共享的
OkHttp3
客户端对两个
实例进行改造,然后使用共享的拦截器和验证器对两个
OkHttp3
客户端进行改造,最后还没有共享的拦截器和验证器。即使在最后一种情况下,由于每件事物都有自己的实例,在某些401错误上也不会调用authenticate

Interceptor
s工作时,它们将旧令牌注入头中,只是在每次HTTP 401错误时不会调用
Authenticator
authenticate
方法

当单步执行调试器时,这种情况永远不会发生,并且始终调用authenticate。在我看来,这似乎是一个多线程问题。即时运行在Android Studio中被禁用。在Android 6的真实设备上运行

编辑:
OkHttp 3.10.0、改型2.4.0、android编译SDK 27和构建工具28.0.1

您能够修复此问题吗?我有一个类似的一个多令牌刷新,由于某些原因,我们没有看到任何401@user12865完全没有,但根本原因在我的另一个问题中描述了,这看起来像是OkHttp和/或改造中的一个bug。我无法为他们创建一个小样本来修复它:(一个解决方案是使用特定版本的OkHttp和改型。