mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
async copy
This commit is contained in:
parent
8a1baafcb3
commit
0b9d73fb7c
|
@ -169,12 +169,35 @@ public class SeaweedOutputStream extends OutputStream {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer.flip();
|
position += submitWriteBufferToService(buffer, position);
|
||||||
int bytesLength = buffer.limit() - buffer.position();
|
|
||||||
SeaweedWrite.writeData(entry, replication, filerGrpcClient, position, buffer.array(), buffer.position(), buffer.limit());
|
buffer = ByteBufferPool.request(bufferSize);
|
||||||
// System.out.println(path + " saved [" + (position) + "," + ((position) + bytesLength) + ")");
|
|
||||||
position += bytesLength;
|
}
|
||||||
buffer.clear();
|
|
||||||
|
private synchronized int submitWriteBufferToService(final ByteBuffer bufferToWrite, final long writePosition) throws IOException {
|
||||||
|
|
||||||
|
bufferToWrite.flip();
|
||||||
|
int bytesLength = bufferToWrite.limit() - bufferToWrite.position();
|
||||||
|
|
||||||
|
if (threadExecutor.getQueue().size() >= maxConcurrentRequestCount * 2) {
|
||||||
|
waitForTaskToComplete();
|
||||||
|
}
|
||||||
|
final Future<Void> job = completionService.submit(() -> {
|
||||||
|
System.out.println(path + " is going to save [" + (writePosition) + "," + ((writePosition) + bytesLength) + ")");
|
||||||
|
SeaweedWrite.writeData(entry, replication, filerGrpcClient, writePosition, bufferToWrite.array(), bufferToWrite.position(), bufferToWrite.limit());
|
||||||
|
System.out.println(path + " saved [" + (writePosition) + "," + ((writePosition) + bytesLength) + ")");
|
||||||
|
bufferToWrite.clear();
|
||||||
|
ByteBufferPool.release(bufferToWrite);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
writeOperations.add(new WriteOperation(job, writePosition, bytesLength));
|
||||||
|
|
||||||
|
// Try to shrink the queue
|
||||||
|
shrinkWriteOperationQueue();
|
||||||
|
|
||||||
|
return bytesLength;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue