Implement exchange spooling#10823
Conversation
...in/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSourceHandle.java
Outdated
Show resolved
Hide resolved
12602ab to
3744cc9
Compare
9cb13e3 to
2e04fae
Compare
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchange.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchange.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeManager.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeManager.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeManager.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSource.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeConfig.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
7fe9ab9 to
54b8b7a
Compare
820e6cb to
379c630
Compare
...in/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSourceHandle.java
Outdated
Show resolved
Hide resolved
...-hive/src/test/java/io/trino/plugin/hive/TestHiveFaultTolerantExecutionAggregationsFile.java
Outdated
Show resolved
Hide resolved
...ino-hive/src/test/java/io/trino/plugin/hive/TestHiveFaultTolerantExecutionConnectorTest.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/PartitionFile.java
Outdated
Show resolved
Hide resolved
...no-exchange/src/main/java/io/trino/plugin/exchange/local/LocalFileSystemExchangeStorage.java
Outdated
Show resolved
Hide resolved
...no-exchange/src/main/java/io/trino/plugin/exchange/local/LocalFileSystemExchangeStorage.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/s3/ByteBufferAsyncRequestBody.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/s3/ExchangeS3Config.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/s3/ExchangeS3Config.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeManager.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/test/java/io/trino/plugin/exchange/containers/MinioStorage.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/PartitionFile.java
Outdated
Show resolved
Hide resolved
...trino-hive/src/test/java/io/trino/plugin/hive/TestHiveFaultTolerantExecutionJoinQueries.java
Outdated
Show resolved
Hide resolved
plugin/trino-hive/src/test/java/io/trino/plugin/hive/TestHiveFileQueryFailureRecoveryTest.java
Outdated
Show resolved
Hide resolved
plugin/trino-hive/src/test/java/io/trino/plugin/hive/TestHiveFileTaskFailureRecoveryTest.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
@losipiuk Actually I'm thinking if we even need these tests. These tests take a lot of time to finish. I wonder if we should simply run with MinIO for both exchange and storage?
There was a problem hiding this comment.
Changed to both use MinIO. Indeed, these tests are really time-consuming.
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
I'm afraid synchronization is still needed, as both abort and finish may run concurrently.
There was a problem hiding this comment.
If abort and finish run concurrently, per-partition locking will not help. Added null check for buffer and writers.
(however at the very end you suggested a restructure of the code organization which should simplify the concurrency reasoning here)
...in/trino-exchange/src/main/java/io/trino/plugin/exchange/s3/S3FileSystemExchangeStorage.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
0c634b4 to
574b005
Compare
There was a problem hiding this comment.
why not synchronize this as a whole?
There was a problem hiding this comment.
I assume to avoid running completableFuture.complete(null); under a lock
There was a problem hiding this comment.
Yes, trying to complete the future outside of the lock here.
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileStatus.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
I assume to avoid running completableFuture.complete(null); under a lock
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeSink.java
Outdated
Show resolved
Hide resolved
c02b71c to
fe8c17b
Compare
fe8c17b to
cba3788
Compare
plugin/trino-exchange/src/main/java/io/trino/plugin/exchange/FileSystemExchangeConfig.java
Outdated
Show resolved
Hide resolved
cba3788 to
58c48c5
Compare
See previous PR #10376 for discussions. I accidentally deleted the remote branch and the PR became orphaned so open this new one. I have addressed or responded to all the comments in the previous PR.
This PR resolves #9936
Overview
Supports both local file system and AWS S3. Parallel reading will be a separate PR.
Testing
Added MinIO testing to test S3-related codepaths. Tested TPC-H Q1-Q6 locally on a scale factor of 10.