|
26 | 26 | import com.google.cloud.storage.BlobInfo;
|
27 | 27 | import com.google.cloud.storage.BlobWriteSessionConfigs;
|
28 | 28 | import com.google.cloud.storage.ParallelCompositeUploadBlobWriteSessionConfig;
|
| 29 | +import com.google.cloud.storage.ParallelCompositeUploadBlobWriteSessionConfig.BufferAllocationStrategy; |
29 | 30 | import com.google.cloud.storage.ParallelCompositeUploadBlobWriteSessionConfig.ExecutorSupplier;
|
30 | 31 | import com.google.cloud.storage.Storage;
|
31 | 32 | import com.google.cloud.storage.Storage.BlobWriteOption;
|
@@ -83,7 +84,11 @@ final class TransferManagerImpl implements TransferManager {
|
83 | 84 | if (transferManagerConfig.isAllowParallelCompositeUpload()) {
|
84 | 85 | ParallelCompositeUploadBlobWriteSessionConfig pcuConfig =
|
85 | 86 | BlobWriteSessionConfigs.parallelCompositeUpload()
|
86 |
| - .withExecutorSupplier(ExecutorSupplier.useExecutor(executor)); |
| 87 | + .withExecutorSupplier(ExecutorSupplier.useExecutor(executor)) |
| 88 | + .withBufferAllocationStrategy( |
| 89 | + BufferAllocationStrategy.fixedPool( |
| 90 | + transferManagerConfig.getMaxWorkers(), |
| 91 | + transferManagerConfig.getPerWorkerBufferSize())); |
87 | 92 | storageOptions = storageOptions.toBuilder().setBlobWriteSessionConfig(pcuConfig).build();
|
88 | 93 | }
|
89 | 94 | this.pcuQueue = new ConcurrentLinkedDeque<>();
|
@@ -264,8 +269,13 @@ public void run() {
|
264 | 269 | return;
|
265 | 270 | }
|
266 | 271 |
|
267 |
| - UploadResult result = poll.callable.call(); |
268 |
| - poll.resultFuture.set(result); |
| 272 | + try { |
| 273 | + UploadResult result = poll.callable.call(); |
| 274 | + poll.resultFuture.set(result); |
| 275 | + } catch (Throwable e) { |
| 276 | + poll.resultFuture.setException(e); |
| 277 | + throw e; |
| 278 | + } |
269 | 279 |
|
270 | 280 | } while (true);
|
271 | 281 | }
|
|
0 commit comments