|
@ -29,11 +29,29 @@ public class SeaweedWrite { |
|
|
final byte[] bytes, |
|
|
final byte[] bytes, |
|
|
final long bytesOffset, final long bytesLength, |
|
|
final long bytesOffset, final long bytesLength, |
|
|
final String path) throws IOException { |
|
|
final String path) throws IOException { |
|
|
|
|
|
for (long waitTime = 1000L; waitTime < 10 * 1000; waitTime += waitTime / 2) { |
|
|
|
|
|
try { |
|
|
FilerProto.FileChunk.Builder chunkBuilder = writeChunk( |
|
|
FilerProto.FileChunk.Builder chunkBuilder = writeChunk( |
|
|
replication, filerClient, offset, bytes, bytesOffset, bytesLength, path); |
|
|
replication, filerClient, offset, bytes, bytesOffset, bytesLength, path); |
|
|
|
|
|
lastException = null; |
|
|
synchronized (entry) { |
|
|
synchronized (entry) { |
|
|
entry.addChunks(chunkBuilder); |
|
|
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, |
|
|
public static FilerProto.FileChunk.Builder writeChunk(final String replication, |
|
|