aboutsummaryrefslogtreecommitdiff
path: root/other/java/client/src
diff options
context:
space:
mode:
Diffstat (limited to 'other/java/client/src')
-rw-r--r--other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java26
1 files changed, 22 insertions, 4 deletions
diff --git a/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java b/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java
index db7f1a19c..81c9ccb6c 100644
--- a/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java
+++ b/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java
@@ -29,11 +29,29 @@ public class SeaweedWrite {
final byte[] bytes,
final long bytesOffset, final long bytesLength,
final String path) throws IOException {
- FilerProto.FileChunk.Builder chunkBuilder = writeChunk(
- replication, filerClient, offset, bytes, bytesOffset, bytesLength, path);
- synchronized (entry) {
- entry.addChunks(chunkBuilder);
+ for (long waitTime = 1000L; waitTime < 10 * 1000; waitTime += waitTime / 2) {
+ try {
+ FilerProto.FileChunk.Builder chunkBuilder = writeChunk(
+ replication, filerClient, offset, bytes, bytesOffset, bytesLength, path);
+ lastException = null;
+ synchronized (entry) {
+ entry.addChunks(chunkBuilder);
+ }
+ break;
+ } catch (IOException ioe) {
+ LOG.debug("writeData:{}", ioe);
+ lastException = ioe;
+ }
+ try {
+ Thread.sleep(waitTime);
+ } catch (InterruptedException e) {
+ }
+ }
+
+ if (lastException != null) {
+ throw lastException;
}
+
}
public static FilerProto.FileChunk.Builder writeChunk(final String replication,