You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/10/31 20:56:09 UTC
[29/50] [abbrv] incubator-geode git commit: GEODE-1927: more
protection from seeing com.gemstone.gemfire packaged objects
GEODE-1927: more protection from seeing com.gemstone.gemfire packaged objects
DeadlockDetector can read an archive of dependencies across the distributed
system. This adds a small ObjectInputStream modification to its method that
reads these archives to let it handle those created before the package rename.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/e130e5b6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/e130e5b6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/e130e5b6
Branch: refs/heads/feature/GEODE-1930
Commit: e130e5b62bcb2d3c561be90f46407dc49f100b4a
Parents: 56836e5
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Tue Oct 18 15:47:20 2016 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Tue Oct 18 15:49:59 2016 -0700
----------------------------------------------------------------------
.../internal/deadlock/DeadlockDetector.java | 33 ++++++++++++++++++--
1 file changed, 30 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e130e5b6/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/DeadlockDetector.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/DeadlockDetector.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/DeadlockDetector.java
index 2c70418..65a521a 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/DeadlockDetector.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/DeadlockDetector.java
@@ -19,7 +19,10 @@ package org.apache.geode.distributed.internal.deadlock;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.io.ObjectInputStream;
+import java.io.ObjectStreamClass;
import java.io.Serializable;
import java.lang.management.LockInfo;
import java.lang.management.ManagementFactory;
@@ -314,13 +317,37 @@ public class DeadlockDetector {
System.exit(-1);
}
- ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
+ ObjectInputStream ois = new DDObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
DependencyGraph graph = (DependencyGraph) ois.readObject();
return graph;
}
-
-
+
+ private static class DDObjectInputStream extends ObjectInputStream {
+
+ /**
+ * Creates a new <code>DDObjectInputStream</code> that delegates
+ * its behavior to a given <code>InputStream</code>.
+ */
+ public DDObjectInputStream(InputStream stream) throws IOException {
+ super(stream);
+ }
+
+ @Override
+ protected Class resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
+
+ String className = desc.getName();
+ if (className.startsWith("com.gemstone.gemfire")) {
+ className = "org.apache.geode" + className.substring("com.gemstone.gemfire".length());
+ } try {
+ Class clazz = Class.forName(className);
+ return clazz;
+ } catch (ClassNotFoundException ex) {
+ return super.resolveClass(desc);
+ }
+ }
+ }
+
private static void printHelp() {
System.out.println("DeadlockDetector reads serialized graphs of the state of the distributed");
System.out.println("system created by collectDependencies.");