in client-spark/common/src/main/java/org/apache/uniffle/shuffle/manager/RssShuffleManagerBase.java [93:123]
private static Method getUnregisterAllMapOutputMethod(MapOutputTrackerMaster tracker) {
if (tracker != null) {
Class<? extends MapOutputTrackerMaster> klass = tracker.getClass();
Method m = null;
try {
if (SparkVersionUtils.isSpark2() && SparkVersionUtils.MINOR_VERSION <= 3) {
// for spark version less than 2.3, there's no unregisterAllMapOutput support
LOG.warn("Spark version <= 2.3, fallback to default method");
} else if (SparkVersionUtils.isSpark2()) {
// this method is added in Spark 2.4+
m = klass.getDeclaredMethod("unregisterAllMapOutput", int.class);
} else if (SparkVersionUtils.isSpark3() && SparkVersionUtils.MINOR_VERSION <= 1) {
// spark 3.1 will have unregisterAllMapOutput method
m = klass.getDeclaredMethod("unregisterAllMapOutput", int.class);
} else if (SparkVersionUtils.isSpark3()) {
m = klass.getDeclaredMethod("unregisterAllMapAndMergeOutput", int.class);
} else {
LOG.warn(
"Unknown spark version({}), fallback to default method",
SparkVersionUtils.SPARK_VERSION);
}
} catch (NoSuchMethodException e) {
LOG.warn(
"Got no such method error when get unregisterAllMapOutput method for spark version({})",
SparkVersionUtils.SPARK_VERSION);
}
return m;
} else {
return null;
}
}