influxdata / influxdata/influxdb-client-java
Exceptions on Reason: 'timeout' and 'null'
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 477
- Forks
- 129
- PR merge metrics
- No merged PRs in 30d
Description
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
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the stack-trace entry points in AbstractRestClient.toInfluxException and AbstractWriteClient, then trace how writeTimeout and retry handling produce the logged reasons. Use the listed InfluxDB 2.7.1, client 6.7.0, JDK 8, and Linux setup to reproduce the long-running write workload. Done means the timeout and null outcomes have a confirmed cause and a validated fix or documented resolution.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100