diff options
| author | chrislu <chrislu@roblox.com> | 2021-12-05 17:15:01 -0800 |
|---|---|---|
| committer | chrislu <chrislu@roblox.com> | 2021-12-05 17:15:01 -0800 |
| commit | c7c60d1f8a4b22798bc96f2a7ce646ddecab3237 (patch) | |
| tree | 0b0b42acfef4c351f519e79f37dbc12433f616f0 | |
| parent | e6c026db65eacbfd7fb10fc95ca3b5452c3efebc (diff) | |
| download | seaweedfs-c7c60d1f8a4b22798bc96f2a7ce646ddecab3237.tar.xz seaweedfs-c7c60d1f8a4b22798bc96f2a7ce646ddecab3237.zip | |
Java: add retry on write
| -rw-r--r-- | other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java | 26 |
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, |
