-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[SPARK-36464][CORE] Fix Underlying Size Variable Initialization in Ch…
…unkedByteBufferOutputStream for Writing Over 2GB Data ### What changes were proposed in this pull request? The `size` method of `ChunkedByteBufferOutputStream` returns a `Long` value; however, the underlying `_size` variable is initialized as `Int`. That causes an overflow and returns a negative size when over 2GB data is written into `ChunkedByteBufferOutputStream` This PR proposes to change the underlying `_size` variable from `Int` to `Long` at the initialization ### Why are the changes needed? Be cause the `size` method of `ChunkedByteBufferOutputStream` incorrectly returns a negative value when over 2GB data is written. ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? Passed existing tests ``` build/sbt "core/testOnly *ChunkedByteBufferOutputStreamSuite" ``` Also added a new unit test ``` build/sbt "core/testOnly *ChunkedByteBufferOutputStreamSuite – -z SPARK-36464" ``` Closes #33690 from kazuyukitanimura/SPARK-36464. Authored-by: Kazuyuki Tanimura <[email protected]> Signed-off-by: Dongjoon Hyun <[email protected]>
- Loading branch information
Showing
29 changed files
with
680 additions
and
277 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
86 changes: 86 additions & 0 deletions
86
...-shuffle/src/main/java/org/apache/spark/network/shuffle/NoOpMergedShuffleFileManager.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
/* | ||
* Licensed to the Apache Software Foundation (ASF) under one or more | ||
* contributor license agreements. See the NOTICE file distributed with | ||
* this work for additional information regarding copyright ownership. | ||
* The ASF licenses this file to You under the Apache License, Version 2.0 | ||
* (the "License"); you may not use this file except in compliance with | ||
* the License. You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package org.apache.spark.network.shuffle; | ||
|
||
import java.io.IOException; | ||
|
||
import org.apache.spark.network.buffer.ManagedBuffer; | ||
import org.apache.spark.network.client.StreamCallbackWithID; | ||
import org.apache.spark.network.shuffle.protocol.ExecutorShuffleInfo; | ||
import org.apache.spark.network.shuffle.protocol.FinalizeShuffleMerge; | ||
import org.apache.spark.network.shuffle.protocol.MergeStatuses; | ||
import org.apache.spark.network.shuffle.protocol.PushBlockStream; | ||
import org.apache.spark.network.util.TransportConf; | ||
|
||
/** | ||
* Dummy implementation of merged shuffle file manager. Suitable for when push-based shuffle | ||
* is not enabled. | ||
* | ||
* @since 3.1.0 | ||
*/ | ||
public class NoOpMergedShuffleFileManager implements MergedShuffleFileManager { | ||
|
||
// This constructor is needed because we use this constructor to instantiate an implementation | ||
// of MergedShuffleFileManager using reflection. | ||
// See YarnShuffleService#newMergedShuffleFileManagerInstance. | ||
public NoOpMergedShuffleFileManager(TransportConf transportConf) {} | ||
|
||
@Override | ||
public StreamCallbackWithID receiveBlockDataAsStream(PushBlockStream msg) { | ||
throw new UnsupportedOperationException("Cannot handle shuffle block merge"); | ||
} | ||
|
||
@Override | ||
public MergeStatuses finalizeShuffleMerge(FinalizeShuffleMerge msg) throws IOException { | ||
throw new UnsupportedOperationException("Cannot handle shuffle block merge"); | ||
} | ||
|
||
@Override | ||
public void registerExecutor(String appId, ExecutorShuffleInfo executorInfo) { | ||
// No-Op. Do nothing. | ||
} | ||
|
||
@Override | ||
public void applicationRemoved(String appId, boolean cleanupLocalDirs) { | ||
// No-Op. Do nothing. | ||
} | ||
|
||
@Override | ||
public ManagedBuffer getMergedBlockData( | ||
String appId, | ||
int shuffleId, | ||
int shuffleMergeId, | ||
int reduceId, | ||
int chunkId) { | ||
throw new UnsupportedOperationException("Cannot handle shuffle block merge"); | ||
} | ||
|
||
@Override | ||
public MergedBlockMeta getMergedBlockMeta( | ||
String appId, | ||
int shuffleId, | ||
int shuffleMergeId, | ||
int reduceId) { | ||
throw new UnsupportedOperationException("Cannot handle shuffle block merge"); | ||
} | ||
|
||
@Override | ||
public String[] getMergedBlockDirs(String appId) { | ||
throw new UnsupportedOperationException("Cannot handle shuffle block merge"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.