From 18bd09ee30404111d7b152fcfef96d3b2c887fd6 Mon Sep 17 00:00:00 2001 From: Karol Sobczak Date: Mon, 30 Jan 2023 13:28:40 +0100 Subject: [PATCH 1/2] Fix formatting --- .../exchange/UniformPartitionRebalancer.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/trino-main/src/main/java/io/trino/operator/exchange/UniformPartitionRebalancer.java b/core/trino-main/src/main/java/io/trino/operator/exchange/UniformPartitionRebalancer.java index 037e33cc1cb8..118f376425b0 100644 --- a/core/trino-main/src/main/java/io/trino/operator/exchange/UniformPartitionRebalancer.java +++ b/core/trino-main/src/main/java/io/trino/operator/exchange/UniformPartitionRebalancer.java @@ -47,14 +47,14 @@ * Example: *

* Before: For three writers with skewed partitions - * Writer 1 -> No partition assigned -> 0 bytes - * Writer 2 -> No partition assigned -> 0 bytes - * Writer 3 -> Partition 1 (100MB) + Partition 2 (100MB) + Partition 3 (100MB) -> 300 MB + * Writer 1 -> No partition assigned -> 0 bytes + * Writer 2 -> No partition assigned -> 0 bytes + * Writer 3 -> Partition 1 (100MB) + Partition 2 (100MB) + Partition 3 (100MB) -> 300 MB *

* After scaling: - * Writer 1 -> Partition 1 (50MB) + Partition 3 (50MB) -> 100 MB - * Writer 2 -> Partition 2 (50MB) -> 50 MB - * Writer 3 -> Partition 1 (150MB) + Partition 2 (150MB) + Partition 3 (150MB) -> 450 MB + * Writer 1 -> Partition 1 (50MB) + Partition 3 (50MB) -> 100 MB + * Writer 2 -> Partition 2 (50MB) -> 50 MB + * Writer 3 -> Partition 1 (150MB) + Partition 2 (150MB) + Partition 3 (150MB) -> 450 MB */ @ThreadSafe public class UniformPartitionRebalancer From 6e1bff28273497202c50c7ca903a1fb563ef342b Mon Sep 17 00:00:00 2001 From: Karol Sobczak Date: Mon, 30 Jan 2023 13:28:50 +0100 Subject: [PATCH 2/2] Prevent division by 0 --- .../io/trino/operator/exchange/UniformPartitionRebalancer.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/trino-main/src/main/java/io/trino/operator/exchange/UniformPartitionRebalancer.java b/core/trino-main/src/main/java/io/trino/operator/exchange/UniformPartitionRebalancer.java index 118f376425b0..d38ae8e66161 100644 --- a/core/trino-main/src/main/java/io/trino/operator/exchange/UniformPartitionRebalancer.java +++ b/core/trino-main/src/main/java/io/trino/operator/exchange/UniformPartitionRebalancer.java @@ -313,6 +313,9 @@ private boolean isPartitionRebalanced(int partitionId) private long estimatePartitionWrittenBytesSinceLastRebalance(WriterId writer, long partitionRowCount) { + if (writerRowCountSinceLastRebalance[writer.id] == 0) { + return 0L; + } return (writerPhysicalWrittenBytesSinceLastRebalance[writer.id] * partitionRowCount) / writerRowCountSinceLastRebalance[writer.id]; } }