influxdata / influxdata/influxdb-client-java

Exceptions on Reason: 'timeout' and 'null'

Aperta
#585 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Java
Stelle
477
Fork
129
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia dai punti di ingresso dello stack trace in AbstractRestClient.toInfluxException e AbstractWriteClient, quindi segui il modo in cui writeTimeout e la gestione dei retry producono le motivazioni registrate nei log. Usa la configurazione indicata con InfluxDB 2.7.1, client 6.7.0, JDK 8 e Linux per riprodurre il carico di scrittura di lunga durata. Il lavoro è completo quando la causa dei risultati timeout e null è confermata e sono disponibili una correzione convalidata o una risoluzione documentata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
api
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.