cloudfoundry / cloudfoundry/cf-java-client
AbstractUaaTokenProvider violates Publisher Spec. Rule 1.3
まだ誰も着手していません。
- 主要言語
- Java
- スター
- 334
- フォーク
- 319
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Hi,
I have observed below error related to Publisher Spec. Rule 1.3, while trying to get token in AbstractUaaTokenProvider.token(…) method -
reactor.core.Exceptions$ErrorCallbackNotImplemented: reactor.core.publisher.Sinks$EmissionException: Spec. Rule 1.3 - onSubscribe, onNext, onError and onComplete signaled to a Subscriber MUST be signaled serially.
Stack trace -
reactor.core.Exceptions$ErrorCallbackNotImplemented: reactor.core.publisher.Sinks$EmissionException: Spec. Rule 1.3 - onSubscribe, onNext, onError and onComplete signaled to a Subscriber MUST be signaled serially.
Caused by: reactor.core.publisher.Sinks$EmissionException: Spec. Rule 1.3 - onSubscribe, onNext, onError and onComplete signaled to a Subscriber MUST be signaled serially.
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:56)
Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below:
Assembly trace from producer [reactor.core.publisher.MonoCacheTime] :
reactor.core.publisher.Mono.checkpoint(Mono.java:2206)
org.cloudfoundry.reactor.tokenprovider.AbstractUaaTokenProvider.token(AbstractUaaTokenProvider.java:261)
Error has been observed at the following site(s):
*__checkpoint() ⇢ at org.cloudfoundry.reactor.tokenprovider.AbstractUaaTokenProvider.token(AbstractUaaTokenProvider.java:261)
While checking the flow with this stacktrace, it seems this error is getting thrown at InternalManySink.emitNext(...) level. It is failing due to state 'FAIL_NON_SERIALIZED', as tryEmitNext(..) is getting triggered by different threads at the same time.
It will be helpful if someone can share some insights on the same, and share any document for more idea on tokenprovider feature of cf java client or share any already existing issue on the same line for more details
Thanks.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
AbstractUaaTokenProvider.java:261 の AbstractUaaTokenProvider.token(...) から開始し、周辺のトークンプロバイダーのフローと Reactor sink の使用方法を確認します。FAIL_NON_SERIALIZED に至る並行した tryEmitNext 呼び出しを再現し、その後、トークンのサブスクライバーがシグナルをシリアルに受信し、報告されたエラーが発生しなくなったことを検証します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- authentication
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100