When i'm using the google safebrowsing api through the google java client for the same(https://developers.google.com/resources/api-libraries/documentation/safebrowsing/v4/java/latest/) it is working fine when I'm trying to make one api request at a time.
Now, i'm trying to make simultaneous requests for full hashes using the java ExecutorService threadpool, i'm getting the following error :
java.io.IOException: insufficient data written
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.close(HttpURLConnection.java:3501)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:81)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at net.media.safeBrowsing.request.FindFullHashesApiRequest.makeRequest(FindFullHashesApiRequest.java:35)
at net.media.safeBrowsing.util.FindFullHashesCallable.retryRequest(FindFullHashesCallable.java:35)
at net.media.safeBrowsing.util.FindFullHashesCallable.call(FindFullHashesCallable.java:29)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
I'm adding around 5000 prefixes in each findFullHashes request in both cases(single request at a time and multithreading). Can anyone please point out my mistake?