influxdb-java: java.net.SocketException: Connection reset

We are getting a strange error when pulling a lot of data through chunking.

java.lang.RuntimeException: java.net.SocketException: Connection reset
	at org.influxdb.impl.InfluxDBImpl$1.onResponse(InfluxDBImpl.java:384)
	at retrofit2.OkHttpCall$1.callSuccess(OkHttpCall.java:132)
	at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:111)
	at okhttp3.RealCall$AsyncCall.execute(RealCall.java:141)
	at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(Unknown Source)
	at java.net.SocketInputStream.read(Unknown Source)
	at okio.Okio$2.read(Okio.java:138)
	at okio.AsyncTimeout$2.read(AsyncTimeout.java:236)
	at okio.RealBufferedSource.read(RealBufferedSource.java:45)
	at okhttp3.internal.http1.Http1Codec$ChunkedSource.read(Http1Codec.java:429)
	at okio.RealBufferedSource.read(RealBufferedSource.java:45)
	at okio.RealBufferedSource.exhausted(RealBufferedSource.java:55)
	at okio.InflaterSource.refill(InflaterSource.java:101)
	at okio.InflaterSource.read(InflaterSource.java:62)
	at okio.GzipSource.read(GzipSource.java:80)
	at okio.RealBufferedSource.read(RealBufferedSource.java:45)
	at okio.ForwardingSource.read(ForwardingSource.java:35)
	at retrofit2.OkHttpCall$ExceptionCatchingRequestBody$1.read(OkHttpCall.java:285)
	at okio.RealBufferedSource.request(RealBufferedSource.java:66)
	at com.squareup.moshi.JsonUtf8Reader.peekNumber(JsonUtf8Reader.java:401)
	at com.squareup.moshi.JsonUtf8Reader.doPeek(JsonUtf8Reader.java:335)
	at com.squareup.moshi.JsonUtf8Reader.hasNext(JsonUtf8Reader.java:163)
	at com.squareup.moshi.CollectionJsonAdapter.fromJson(CollectionJsonAdapter.java:74)
	at com.squareup.moshi.CollectionJsonAdapter$2.fromJson(CollectionJsonAdapter.java:52)
	at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:127)
	at com.squareup.moshi.CollectionJsonAdapter.fromJson(CollectionJsonAdapter.java:75)
	at com.squareup.moshi.CollectionJsonAdapter$2.fromJson(CollectionJsonAdapter.java:52)
	at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:127)
	at com.squareup.moshi.ClassJsonAdapter$FieldBinding.read(ClassJsonAdapter.java:204)
	at com.squareup.moshi.ClassJsonAdapter.fromJson(ClassJsonAdapter.java:166)
	at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:127)
	at com.squareup.moshi.CollectionJsonAdapter.fromJson(CollectionJsonAdapter.java:75)
	at com.squareup.moshi.CollectionJsonAdapter$2.fromJson(CollectionJsonAdapter.java:52)
	at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:127)
	at com.squareup.moshi.ClassJsonAdapter$FieldBinding.read(ClassJsonAdapter.java:204)
	at com.squareup.moshi.ClassJsonAdapter.fromJson(ClassJsonAdapter.java:166)
	at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:127)
	at com.squareup.moshi.CollectionJsonAdapter.fromJson(CollectionJsonAdapter.java:75)
	at com.squareup.moshi.CollectionJsonAdapter$2.fromJson(CollectionJsonAdapter.java:52)
	at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:127)
	at com.squareup.moshi.ClassJsonAdapter$FieldBinding.read(ClassJsonAdapter.java:204)
	at com.squareup.moshi.ClassJsonAdapter.fromJson(ClassJsonAdapter.java:166)
	at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:127)
	at com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:34)
	at org.influx

We are pulling about 200’000 datapoints in total, which takes the application about 1.5 hours to process. Originally we have used chunkSize=10000, then we reduced it to 1000 and 200. The lower the chunkSize the longer it takes for the Exception to show up.

Any idea what might be causing this?

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 15

Most upvoted comments

We have experienced the same issue when adding GROUP BY time() to a simple query. We are still investigating, but the current workaround implemented addresses the URLEncoding in the org.influxdb.dto.Query class:

import org.influxdb.dto.Query;

public class MyQuery extends Query {
	public MyQuery(String command, String database) {
		super(command, database);
	}

	@Override
	public String getCommandWithUrlEncoded() {
		return super.getCommandWithUrlEncoded().replace("+", "%20");
	}
}

Who has experience with encoding URLs?