Skip to content

Commit

Permalink
[SPARK-20940][CORE] Replace IllegalAccessError with IllegalStateExcep…
Browse files Browse the repository at this point in the history
…tion

## What changes were proposed in this pull request?

`IllegalAccessError` is a fatal error (a subclass of LinkageError) and its meaning is `Thrown if an application attempts to access or modify a field, or to call a method that it does not have access to`. Throwing a fatal error for AccumulatorV2 is not necessary and is pretty bad because it usually will just kill executors or SparkContext ([SPARK-20666](https://issues.apache.org/jira/browse/SPARK-20666) is an example of killing SparkContext due to `IllegalAccessError`). I think the correct type of exception in AccumulatorV2 should be `IllegalStateException`.

## How was this patch tested?

Jenkins

Author: Shixiong Zhu <[email protected]>

Closes apache#18168 from zsxwing/SPARK-20940.

(cherry picked from commit 24db358)
Signed-off-by: Shixiong Zhu <[email protected]>
  • Loading branch information
zsxwing committed Jun 1, 2017
1 parent 4640086 commit dade85f
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions core/src/main/scala/org/apache/spark/util/AccumulatorV2.scala
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ abstract class AccumulatorV2[IN, OUT] extends Serializable {

private def assertMetadataNotNull(): Unit = {
if (metadata == null) {
throw new IllegalAccessError("The metadata of this accumulator has not been assigned yet.")
throw new IllegalStateException("The metadata of this accumulator has not been assigned yet.")
}
}

Expand Down Expand Up @@ -250,7 +250,7 @@ private[spark] object AccumulatorContext {
// Since we are storing weak references, we must check whether the underlying data is valid.
val acc = ref.get
if (acc eq null) {
throw new IllegalAccessError(s"Attempted to access garbage collected accumulator $id")
throw new IllegalStateException(s"Attempted to access garbage collected accumulator $id")
}
acc
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ class AccumulatorSuite extends SparkFunSuite with Matchers with LocalSparkContex
assert(ref.get.isEmpty)

// Getting a garbage collected accum should throw error
intercept[IllegalAccessError] {
intercept[IllegalStateException] {
AccumulatorContext.get(accId)
}

Expand Down

0 comments on commit dade85f

Please sign in to comment.