OOZIE-2581 Oozie should reset SecurityManager in finally block (satishsaley via rohini)
diff --git a/release-log.txt b/release-log.txt
index 2036dbc..686378c 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
-- Oozie 4.3.0 release (trunk - unreleased)
+OOZIE-2581 Oozie should reset SecurityManager in finally block (satishsaley via rohini)
OOZIE-2579 Bulk kill tests in TestBulkWorkflowXCommand might fail because of a race condition (pbacsko via rkanter)
OOZIE-2587 Disable SchedulerService on certain tests (pbacsko via rkanter)
OOZIE-2603 Give thread pools a meaningful name in CallableQueueService and SchedulerService (pbacsko via rkanter)
diff --git a/sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/LauncherMapper.java b/sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/LauncherMapper.java
index 545f8e2..17ba97d 100644
--- a/sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/LauncherMapper.java
+++ b/sharelib/oozie/src/main/java/org/apache/oozie/action/hadoop/LauncherMapper.java
@@ -28,8 +28,6 @@
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.io.OutputStream;
-import java.io.FileOutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.security.Permission;
@@ -150,6 +148,7 @@
@Override
public void map(K1 key, V1 value, OutputCollector<K2, V2> collector, Reporter reporter) throws IOException {
+ SecurityManager initialSecurityManager = System.getSecurityManager();
try {
if (configFailure) {
throw configureFailureEx;
@@ -163,7 +162,6 @@
int errorCode = 0;
Throwable errorCause = null;
String errorMessage = null;
-
try {
new LauncherSecurityManager();
}
@@ -321,6 +319,7 @@
}
finally {
uploadActionDataToHDFS();
+ resetSecurityManager(initialSecurityManager);
}
}
@@ -601,6 +600,19 @@
}
}
+ private void resetSecurityManager(SecurityManager initialSecurityManager) {
+ try {
+ SecurityManager prev = System.getSecurityManager();
+ System.setSecurityManager(initialSecurityManager);
+ System.out
+ .println("Successfully reset security manager from " + prev + " to " + System.getSecurityManager());
+ }
+ catch (Throwable t) {
+ System.err.println("Failed to reset security manager: " + t.getMessage());
+ t.printStackTrace(System.err);
+ }
+ }
+
}
class LauncherSecurityManager extends SecurityManager {
@@ -659,4 +671,4 @@
public JavaMainException(Throwable t) {
super(t);
}
-}
+}
\ No newline at end of file