influxdata / influxdata/influxdb-client-java

Exceptions on Reason: 'timeout' and 'null'

オープン
#585 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
Java
スター
477
フォーク
129
PR マージ指標
30日以内にマージされた PR はありません

説明

Hi there,
There are some ‘timeout’ errors as follows when I run a Java Spring program with influxdb-client-java. Could someone tell me how to fix these errors? Thanks a lot.

__Steps to reproduce:__
List the minimal actions needed to reproduce the behavior.
1. setup InfluxDB version 2.7.1 on cloud VM;
2. setup a Java Spring program with Influxdb-client-java version 6.7.0;
3. setup the influx.writeTimeout = 15S;
4. write a lot of data to InfluxDB with this program;
5. run this program for at last a week, there are some 'timeout' and 'null' erros:

__Expected behavior:__
There are no 'timeout' or 'null' errors.

__Actual behavior:__
there are some 'timeout' and 'null' erros:

error logs

```
2023-06-24 17:00:15,715 WARN [RxNewThreadScheduler-1] com.influxdb.client.write.events.WriteRetriableErrorEvent: The retriable error occurred during writing of data. Reason: 'timeout'. Retry in: 18.225s.
2023-06-24 17:00:44,143 WARN [RxNewThreadScheduler-463230] com.influxdb.client.write.events.WriteRetriableErrorEvent: The retriable error occurred during writing of data. Reason: 'timeout'. Retry in: 37.234s.
2023-06-24 17:01:21,714 WARN [RxNewThreadScheduler-463231] com.influxdb.client.write.events.WriteRetriableErrorEvent: The retriable error occurred during writing of data. Reason: 'null'. Retry in: 50.281s.
2023-06-24 17:02:12,110 WARN [RxNewThreadScheduler-463232] com.influxdb.client.write.events.WriteRetriableErrorEvent: The retriable error occurred during writing of data. Reason: 'null'. Retry in: 85.256s.
2023-06-24 17:03:05,626 ERROR [RxNewThreadScheduler-463229] com.influxdb.client.write.events.WriteErrorEvent: The error occurred during writing of data
com.influxdb.exceptions.InfluxException: Max retry time exceeded.
at com.influxdb.internal.AbstractRestClient.toInfluxException(AbstractRestClient.java:102)
at com.influxdb.client.internal.AbstractWriteClient.lambda$new$8(AbstractWriteClient.java:174)
at io.reactivex.rxjava3.internal.subscribers.LambdaSubscriber.onNext(LambdaSubscriber.java:65)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoFinally$DoFinallySubscriber.onNext(FlowableDoFinally.java:85)
at io.reactivex.rxjava3.internal.operators.mixed.FlowableConcatMapMaybe$ConcatMapMaybeSubscriber.drain(FlowableConcatMapMaybe.java:238)
at io.reactivex.rxjava3.internal.operators.mixed.FlowableConcatMapMaybe$ConcatMapMaybeSubscriber.innerSuccess(FlowableConcatMapMaybe.java:119)
at io.reactivex.rxjava3.internal.operators.mixed.FlowableConcatMapMaybe$ConcatMapMaybeSubscriber$ConcatMapMaybeObserver.onSuccess(FlowableConcatMapMaybe.java:276)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeOnErrorNext$OnErrorNextMaybeObserver$NextMaybeObserver.onSuccess(MaybeOnErrorNext.java:122)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeJust.subscribeActual(MaybeJust.java:36)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5375)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeOnErrorNext$OnErrorNextMaybeObserver.onError(MaybeOnErrorNext.java:97)
at io.reactivex.rxjava3.internal.operators.maybe.MaybePeek$MaybePeekObserver.onErrorInner(MaybePeek.java:147)
at io.reactivex.rxjava3.internal.operators.maybe.MaybePeek$MaybePeekObserver.onError(MaybePeek.java:134)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeMap$MapMaybeObserver.onError(MaybeMap.java:95)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeTimeoutMaybe$TimeoutFallbackMaybeObserver.onError(MaybeTimeoutMaybe.java:195)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeError.subscribeActual(MaybeError.java:35)
at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5375)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeTimeoutMaybe$TimeoutMainMaybeObserver.otherComplete(MaybeTimeoutMaybe.java:133)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeTimeoutMaybe$TimeoutOtherMaybeObserver.onSuccess(MaybeTimeoutMaybe.java:158)
at io.reactivex.rxjava3.internal.operators.maybe.MaybeTimer$TimerDisposable.run(MaybeTimer.java:58)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
Caused by: java.util.concurrent.TimeoutException: Max retry time exceeded.
at com.influxdb.client.internal.AbstractWriteClient$ToWritePointsMaybe.apply(AbstractWriteClient.java:501)
at com.influxdb.client.internal.AbstractWriteClient$ToWritePointsMaybe.apply(AbstractWriteClient.java:432)
at io.reactivex.rxjava3.internal.operators.mixed.FlowableConcatMapMaybe$ConcatMapMaybeSubscriber.drain(FlowableConcatMapMaybe.java:219)
at io.reactivex.rxjava3.internal.operators.mixed.ConcatMapXMainSubscriber.onNext(ConcatMapXMainSubscriber.java:106)
at com.influxdb.client.internal.flowable.BackpressureBatchesBufferStrategy$OnBackpressureBufferStrategySubscriber.drain(BackpressureBatchesBufferStrategy.java:238)
at com.influxdb.client.internal.flowable.BackpressureBatchesBufferStrategy$OnBackpressureBufferStrategySubscriber.onNext(BackpressureBatchesBufferStrategy.java:149)
at com.influxdb.client.internal.flowable.BackpressureBatchesBufferStrategy$OnBackpressureBufferStrategySubscriber.onNext(BackpressureBatchesBufferStrategy.java:54)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.tryEmitScalar(FlowableFlatMap.java:232)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.onNext(FlowableFlatMap.java:150)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableFilter$FilterSubscriber.tryOnNext(FlowableFilter.java:75)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableFilter$FilterSubscriber.onNext(FlowableFilter.java:53)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.tryEmit(FlowableFlatMap.java:270)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableFlatMap$InnerSubscriber.onNext(FlowableFlatMap.java:627)
at io.reactivex.rxjava3.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:69)
at io.reactivex.rxjava3.subscribers.SerializedSubscriber.onNext(SerializedSubscriber.java:103)
at com.influxdb.client.internal.flowable.FlowableBufferTimedFlushable$BufferExactBoundedSubscriber.accept(FlowableBufferTimedFlushable.java:227)
at com.influxdb.client.internal.flowable.FlowableBufferTimedFlushable$BufferExactBoundedSubscriber.accept(FlowableBufferTimedFlushable.java:85)
at io.reactivex.rxjava3.internal.subscribers.QueueDrainSubscriber.fastPathOrderedEmitMax(QueueDrainSubscriber.java:107)
at com.influxdb.client.internal.flowable.FlowableBufferTimedFlushable$BufferExactBoundedSubscriber.run(FlowableBufferTimedFlushable.java:281)
at io.reactivex.rxjava3.core.Scheduler$Worker$PeriodicTask.run(Scheduler.java:543)
... 8 common frames omitted

```

__Specifications:__
- Client Version: Influxdb-client-java 6.7.0
- InfluxDB Version: 2.7.1
- JDK Version: JDK 8
- Platform: Linux

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

AbstractRestClient.toInfluxException と AbstractWriteClient のスタックトレースのエントリーポイントから始め、writeTimeout と retry 処理によってログに記録される理由がどのように生成されるかを追跡します。記載されている InfluxDB 2.7.1、client 6.7.0、JDK 8、Linux のセットアップを使用して、長時間実行される書き込みワークロードを再現します。timeout と null の結果の原因が確認され、検証済みの修正または文書化された解決策が得られれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
api
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。