IGNITE-2206-debug: Dirty fix.

Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/3a2db6e8
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3a2db6e8
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3a2db6e8

Branch: refs/heads/ignite-2206
Commit: 3a2db6e85a3b75ce2791a30a73c6aa6fa36fb856
Parents: 40d2291
Author: vozerov-gridgain <voze...@gridgain.com>
Authored: Mon Dec 28 13:17:33 2015 +0300
Committer: vozerov-gridgain <voze...@gridgain.com>
Committed: Mon Dec 28 13:17:33 2015 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsPaths.java     |  23 ++--
 .../hadoop/fs/v1/IgniteHadoopFileSystem.java    |   7 +-
 .../processors/hadoop/HadoopClassLoader.java    |  15 +++
 .../internal/processors/hadoop/TestMain.java    | 110 +++++++++++++++++++
 4 files changed, 137 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/3a2db6e8/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPaths.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPaths.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPaths.java
index 0bb581b..86f00cc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPaths.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPaths.java
@@ -33,6 +33,7 @@ import org.apache.ignite.igfs.IgfsMode;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.internal.util.typedef.T2;
 import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.jdk.JdkMarshaller;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -74,16 +75,11 @@ public class IgfsPaths implements Externalizable {
         if (payload == null)
             payloadBytes = null;
         else {
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
 
-            try (ObjectOutput oo = new ObjectOutputStream(baos)) {
-                oo.writeObject(payload);
-            }
-            catch (IOException e) {
-                throw new IgniteCheckedException("Failed to serialize 
secondary file system factory: " + payload, e);
-            }
+            new JdkMarshaller().marshal(payload, out);
 
-            payloadBytes = baos.toByteArray();
+            payloadBytes = out.toByteArray();
         }
     }
 
@@ -106,16 +102,13 @@ public class IgfsPaths implements Externalizable {
      *
      * @throws IgniteCheckedException If failed to deserialize the payload.
      */
-    @Nullable public Object getPayload() throws IgniteCheckedException {
+    @Nullable public Object getPayload(ClassLoader clsLdr) throws 
IgniteCheckedException {
         if (payloadBytes == null)
             return null;
         else {
-            try (ObjectInput oi = new ObjectInputStream(new 
ByteArrayInputStream(payloadBytes))) {
-                return oi.readObject();
-            }
-            catch (IOException | ClassNotFoundException e) {
-                throw new IgniteCheckedException("Failed to deserialize 
secondary file system factory. ", e);
-            }
+            ByteArrayInputStream in = new ByteArrayInputStream(payloadBytes);
+
+            return new JdkMarshaller().unmarshal(in, clsLdr);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/3a2db6e8/modules/hadoop/src/main/java/org/apache/ignite/hadoop/fs/v1/IgniteHadoopFileSystem.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/hadoop/fs/v1/IgniteHadoopFileSystem.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/hadoop/fs/v1/IgniteHadoopFileSystem.java
index 14b6294..cd83630 100644
--- 
a/modules/hadoop/src/main/java/org/apache/ignite/hadoop/fs/v1/IgniteHadoopFileSystem.java
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/hadoop/fs/v1/IgniteHadoopFileSystem.java
@@ -330,7 +330,9 @@ public class IgniteHadoopFileSystem extends FileSystem {
 
             if (initSecondary) {
                 try {
-                    factory = (HadoopFileSystemFactory) paths.getPayload();
+                    Object payload0 = 
paths.getPayload(getClass().getClassLoader());
+
+                    factory = (HadoopFileSystemFactory) 
paths.getPayload(getClass().getClassLoader());
                 }
                 catch (IgniteCheckedException e) {
                     throw new IOException("Failed to get secondary file system 
factory.", e);
@@ -505,8 +507,7 @@ public class IgniteHadoopFileSystem extends FileSystem {
                 }
 
                 secondaryFs.setOwner(toSecondary(p), username, grpName);
-            }
-            else if (rmtClient.update(convert(p), F.asMap(PROP_USER_NAME, 
username, PROP_GROUP_NAME, grpName)) == null)
+            } else if (rmtClient.update(convert(p), F.asMap(PROP_USER_NAME, 
username, PROP_GROUP_NAME, grpName)) == null)
                 throw new IOException("Failed to set file permission (file not 
found?)" +
                     " [path=" + p + ", userName=" + username + ", groupName=" 
+ grpName + ']');
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/3a2db6e8/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopClassLoader.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopClassLoader.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopClassLoader.java
index f12af46..5d883ab 100644
--- 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopClassLoader.java
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopClassLoader.java
@@ -270,6 +270,15 @@ public class HadoopClassLoader extends URLClassLoader {
      * @return {@code true} If the class has external dependencies.
      */
     boolean hasExternalDependencies(final String clsName, final Set<String> 
visited) {
+        if 
(clsName.equals("org.apache.ignite.hadoop.fs.HadoopFileSystemFactory"))
+            return true;
+
+        if (clsName.contains("BasicHadoopFileSystemFactory"))
+            return true;
+
+        if (clsName.contains("CachingHadoopFileSystemFactory"))
+            return true;
+
         if (isHadoop(clsName)) // Hadoop must not be in classpath but Idea 
sucks, so filtering explicitly as external.
             return true;
 
@@ -361,6 +370,9 @@ public class HadoopClassLoader extends URLClassLoader {
             };
 
             void onClass(String depCls) {
+                if 
(clsName.equals("org.apache.ignite.hadoop.fs.HadoopFileSystemFactory"))
+                    System.out.println("ON_CLASS: " + depCls);
+
                 assert validateClassName(depCls) : depCls;
 
                 if (depCls.startsWith("java.")) // Filter out platform classes.
@@ -429,6 +441,9 @@ public class HadoopClassLoader extends URLClassLoader {
 
             @Override public MethodVisitor visitMethod(int i, String name, 
String desc, String signature,
                 String[] exceptions) {
+                if 
(clsName.equals("org.apache.ignite.hadoop.fs.HadoopFileSystemFactory"))
+                    System.out.println("VISIT_METHOD: " + name);
+
                 if (exceptions != null) {
                     for (String e : exceptions)
                         onType(e);

http://git-wip-us.apache.org/repos/asf/ignite/blob/3a2db6e8/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/TestMain.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/TestMain.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/TestMain.java
new file mode 100644
index 0000000..0cbdbac
--- /dev/null
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/TestMain.java
@@ -0,0 +1,110 @@
+package org.apache.ignite.internal.processors.hadoop;
+
+import org.objectweb.asm.Opcodes;
+import org.objectweb.asm.signature.SignatureReader;
+import org.objectweb.asm.signature.SignatureVisitor;
+
+/**
+ * Created by vozerov on 12/28/2015.
+ */
+public class TestMain {
+
+    public static void main(String[] args) {
+
+        String desc = "(Ljava/lang/String;)Lorg/apache/hadoop/fs/FileSystem;";
+
+        SignatureReader reader = new SignatureReader(desc);
+
+        reader.accept(new SignatureVisitor(Opcodes.ASM4) {
+            @Override
+            public void visitFormalTypeParameter(String name) {
+                System.out.println("visitFormalTypeParameter: " + name);
+
+                super.visitFormalTypeParameter(name);
+            }
+
+            @Override
+            public SignatureVisitor visitClassBound() {
+                return super.visitClassBound();
+            }
+
+            @Override
+            public SignatureVisitor visitInterfaceBound() {
+                return super.visitInterfaceBound();
+            }
+
+            @Override
+            public SignatureVisitor visitSuperclass() {
+                return super.visitSuperclass();
+            }
+
+            @Override
+            public SignatureVisitor visitInterface() {
+                return super.visitInterface();
+            }
+
+            @Override
+            public SignatureVisitor visitParameterType() {
+                return super.visitParameterType();
+            }
+
+            @Override
+            public SignatureVisitor visitReturnType() {
+                return super.visitReturnType();
+            }
+
+            @Override
+            public SignatureVisitor visitExceptionType() {
+                return super.visitExceptionType();
+            }
+
+            @Override
+            public void visitBaseType(char descriptor) {
+                super.visitBaseType(descriptor);
+            }
+
+            @Override
+            public void visitTypeVariable(String name) {
+                System.out.println("visitTypeVariable: " + name);
+
+                super.visitTypeVariable(name);
+            }
+
+            @Override
+            public SignatureVisitor visitArrayType() {
+                return super.visitArrayType();
+            }
+
+            @Override
+            public void visitClassType(String name) {
+                System.out.println("visitClassType: " + name);
+
+                super.visitClassType(name);
+            }
+
+            @Override
+            public void visitInnerClassType(String name) {
+                System.out.println("visitInnerClassType: " + name);
+
+                super.visitInnerClassType(name);
+            }
+
+            @Override
+            public void visitTypeArgument() {
+                super.visitTypeArgument();
+            }
+
+            @Override
+            public SignatureVisitor visitTypeArgument(char wildcard) {
+                System.out.println("visitTypeArgument: " + wildcard);
+
+                return super.visitTypeArgument(wildcard);
+            }
+
+            @Override
+            public void visitEnd() {
+                super.visitEnd();
+            }
+        });
+    }
+}

Reply via email to