diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-06-17 14:59:43 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-06-17 14:59:43 -0700 |
| commit | 222f93e8166ed73be3afeb1a656ff5007b82e525 (patch) | |
| tree | 463163f4dbd75ea45b1559e057cd8d1dccccc331 /other/java/client | |
| parent | b74eced7a37448e0007e40190a1aff4f6495f1ad (diff) | |
| download | seaweedfs-222f93e8166ed73be3afeb1a656ff5007b82e525.tar.xz seaweedfs-222f93e8166ed73be3afeb1a656ff5007b82e525.zip | |
possibly fix concurrent access to entry object in SeaweedOutputStream
Diffstat (limited to 'other/java/client')
| -rw-r--r-- | other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java | 34 |
1 files changed, 19 insertions, 15 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 dc6203e52..18ec77b76 100644 --- a/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java +++ b/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java @@ -45,28 +45,32 @@ public class SeaweedWrite { String etag = multipartUpload(targetUrl, auth, bytes, bytesOffset, bytesLength, cipherKey); + synchronized (entry) { + entry.addChunks(FilerProto.FileChunk.newBuilder() + .setFileId(fileId) + .setOffset(offset) + .setSize(bytesLength) + .setMtime(System.currentTimeMillis() / 10000L) + .setETag(etag) + .setCipherKey(cipherKeyString) + ); + } + // cache fileId ~ bytes SeaweedRead.chunkCache.setChunk(fileId, bytes); - entry.addChunks(FilerProto.FileChunk.newBuilder() - .setFileId(fileId) - .setOffset(offset) - .setSize(bytesLength) - .setMtime(System.currentTimeMillis() / 10000L) - .setETag(etag) - .setCipherKey(cipherKeyString) - ); - } public static void writeMeta(final FilerGrpcClient filerGrpcClient, final String parentDirectory, final FilerProto.Entry.Builder entry) { - filerGrpcClient.getBlockingStub().createEntry( - FilerProto.CreateEntryRequest.newBuilder() - .setDirectory(parentDirectory) - .setEntry(entry) - .build() - ); + synchronized (entry){ + filerGrpcClient.getBlockingStub().createEntry( + FilerProto.CreateEntryRequest.newBuilder() + .setDirectory(parentDirectory) + .setEntry(entry) + .build() + ); + } } private static String multipartUpload(String targetUrl, |
