You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vk...@apache.org on 2015/03/03 21:28:54 UTC
[50/50] incubator-ignite git commit: # IGNITE-141 - Marshallers
refactoring
# IGNITE-141 - Marshallers refactoring
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/39c7f542
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/39c7f542
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/39c7f542
Branch: refs/heads/ignite-141
Commit: 39c7f542dac62efc3922167671295b3f49b9bc5e
Parents: 8c0875f
Author: Valentin Kulichenko <vk...@gridgain.com>
Authored: Tue Mar 3 12:28:45 2015 -0800
Committer: Valentin Kulichenko <vk...@gridgain.com>
Committed: Tue Mar 3 12:28:45 2015 -0800
----------------------------------------------------------------------
.../ignite/internal/GridKernalContextImpl.java | 2 +-
.../ignite/internal/MarshallerContextImpl.java | 58 ++++----------------
.../deployment/GridDeploymentLocalStore.java | 1 -
.../GridDeploymentPerLoaderStore.java | 1 -
.../GridDeploymentPerVersionStore.java | 1 -
.../internal/util/nio/GridNioSelfTest.java | 18 ++++--
.../marshaller/MarshallerContextTestImpl.java | 17 ++++--
7 files changed, 37 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39c7f542/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
index 2b83df3..8544c60 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
@@ -360,7 +360,7 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable
this.igfsExecSvc = igfsExecSvc;
this.restExecSvc = restExecSvc;
- marshCtx = new MarshallerContextImpl(log);
+ marshCtx = new MarshallerContextImpl();
try {
spring = SPRING.create(false);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39c7f542/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
index 408e70d..f06896d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
@@ -19,14 +19,11 @@ package org.apache.ignite.internal;
import org.apache.ignite.*;
import org.apache.ignite.internal.processors.cache.*;
-import org.apache.ignite.internal.util.typedef.*;
import org.apache.ignite.internal.util.typedef.internal.*;
-import org.apache.ignite.lang.*;
import org.apache.ignite.marshaller.*;
import org.jdk8.backport.*;
import java.io.*;
-import java.util.*;
import java.util.concurrent.*;
/**
@@ -37,7 +34,7 @@ public class MarshallerContextImpl implements MarshallerContext {
private static final String CLS_NAMES_FILE = "org/apache/ignite/internal/classnames.properties";
/** */
- private final ConcurrentMap<Integer, IgniteBiTuple<Class, Boolean>> clsById = new ConcurrentHashMap8<>();
+ private final ConcurrentMap<Integer, String> clsNameById = new ConcurrentHashMap8<>();
/** */
private final CountDownLatch latch = new CountDownLatch(1);
@@ -46,9 +43,9 @@ public class MarshallerContextImpl implements MarshallerContext {
private volatile GridCacheAdapter<Integer, String> cache;
/**
- * @param log Logger.
+ * Constructor.
*/
- MarshallerContextImpl(IgniteLogger log) {
+ MarshallerContextImpl() {
try {
ClassLoader ldr = getClass().getClassLoader();
@@ -56,17 +53,8 @@ public class MarshallerContextImpl implements MarshallerContext {
String clsName;
- while ((clsName = rdr.readLine()) != null) {
- try {
- Class cls = U.forName(clsName, ldr);
-
- clsById.put(cls.getName().hashCode(), F.t(cls, true));
- }
- catch (ClassNotFoundException | NoClassDefFoundError ignored) {
- if (log.isDebugEnabled())
- log.debug("Class defined in classnames.properties doesn't exist (ignoring): " + clsName);
- }
- }
+ while ((clsName = rdr.readLine()) != null)
+ clsNameById.put(clsName.hashCode(), clsName);
}
catch (IOException e) {
throw new IllegalStateException("Failed to initialize marshaller context.", e);
@@ -84,29 +72,9 @@ public class MarshallerContextImpl implements MarshallerContext {
latch.countDown();
}
- /**
- * @param ldr Undeployed class loader.
- */
- public void onUndeployed(ClassLoader ldr) {
- for (Map.Entry<Integer, IgniteBiTuple<Class, Boolean>> e : clsById.entrySet()) {
- if (!e.getValue().get2() && ldr.equals(e.getValue().get1().getClassLoader()))
- clsById.remove(e.getKey());
- }
- }
-
- /**
- * Clears cached classes.
- */
- public void clear() {
- for (Map.Entry<Integer, IgniteBiTuple<Class, Boolean>> e : clsById.entrySet()) {
- if (!e.getValue().get2())
- clsById.remove(e.getKey());
- }
- }
-
/** {@inheritDoc} */
@Override public void registerClass(int id, Class cls) {
- if (clsById.putIfAbsent(id, F.t(cls, false)) == null) {
+ if (clsNameById.putIfAbsent(id, cls.getName()) == null) {
try {
if (cache == null)
U.awaitQuiet(latch);
@@ -126,14 +94,12 @@ public class MarshallerContextImpl implements MarshallerContext {
/** {@inheritDoc} */
@Override public Class className(int id, ClassLoader ldr) throws ClassNotFoundException {
- IgniteBiTuple<Class, Boolean> t = clsById.get(id);
+ String clsName = clsNameById.get(id);
- if (t == null) {
+ if (clsName == null) {
if (cache == null)
U.awaitQuiet(latch);
- String clsName;
-
try {
clsName = cache.get(id);
}
@@ -143,14 +109,12 @@ public class MarshallerContextImpl implements MarshallerContext {
assert clsName != null : id;
- Class cls = U.forName(clsName, ldr);
-
- IgniteBiTuple<Class, Boolean> old = clsById.putIfAbsent(id, t = F.t(cls, false));
+ String old = clsNameById.putIfAbsent(id, clsName);
if (old != null)
- t = old;
+ clsName = old;
}
- return t.get1();
+ return U.forName(clsName, ldr);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39c7f542/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
index 7657137..195621c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
@@ -522,7 +522,6 @@ class GridDeploymentLocalStore extends GridDeploymentStoreAdapter {
if (dep.obsolete()) {
// Resource cleanup.
ctx.resource().onUndeployed(dep);
- ctx.marshallerContext().onUndeployed(ldr);
// Clear optimized marshaller's cache. If another marshaller is used, this is no-op.
OptimizedMarshaller.onUndeploy(ldr);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39c7f542/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerLoaderStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerLoaderStore.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerLoaderStore.java
index 0d09489..7a98cbc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerLoaderStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerLoaderStore.java
@@ -495,7 +495,6 @@ public class GridDeploymentPerLoaderStore extends GridDeploymentStoreAdapter {
ctx.cache().onUndeployed(ldr);
ctx.stream().onUndeployed(ldr);
- ctx.marshallerContext().onUndeployed(ldr);
// Clear optimized marshaller's cache. If another marshaller is used, this is no-op.
OptimizedMarshaller.onUndeploy(ldr);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39c7f542/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
index 6eb41aa..dc72248 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
@@ -1258,7 +1258,6 @@ public class GridDeploymentPerVersionStore extends GridDeploymentStoreAdapter {
ctx.cache().onUndeployed(ldr);
ctx.stream().onUndeployed(ldr);
- ctx.marshallerContext().onUndeployed(ldr);
// Clear optimized marshaller's cache. If another marshaller is used, this is no-op.
OptimizedMarshaller.onUndeploy(ldr);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39c7f542/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSelfTest.java
index 83729fc..e3baeb0 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSelfTest.java
@@ -23,6 +23,7 @@ import org.apache.ignite.internal.util.*;
import org.apache.ignite.internal.util.tostring.*;
import org.apache.ignite.internal.util.typedef.*;
import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.marshaller.*;
import org.apache.ignite.testframework.junits.common.*;
import org.jetbrains.annotations.*;
@@ -63,14 +64,19 @@ public class GridNioSelfTest extends GridCommonAbstractTest {
/** Count of statistics segments. */
private static final int STATISTICS_SEGMENTS_CNT = 10;
- /** {@inheritDoc} */
- @Override protected void afterTestsStopped() throws Exception {
- getTestResources().stopThreads();
- }
+ /** Marshaller. */
+ private static volatile Marshaller marsh;
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
getTestResources().startThreads(true);
+
+ marsh = getTestResources().getMarshaller();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ getTestResources().stopThreads();
}
/**
@@ -1115,7 +1121,7 @@ public class GridNioSelfTest extends GridCommonAbstractTest {
* @throws IgniteCheckedException If failed.
*/
private <T extends Serializable> byte[] serializeMessage(T msg) throws IgniteCheckedException {
- return getTestResources().getMarshaller().marshal(msg);
+ return marsh.marshal(msg);
}
/**
@@ -1128,7 +1134,7 @@ public class GridNioSelfTest extends GridCommonAbstractTest {
*/
@SuppressWarnings({"RedundantTypeArguments"})
private <T> T deserializeMessage(byte[] data) throws IgniteCheckedException {
- return getTestResources().getMarshaller().<T>unmarshal(data, getClass().getClassLoader());
+ return marsh.<T>unmarshal(data, getClass().getClassLoader());
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/39c7f542/modules/core/src/test/java/org/apache/ignite/marshaller/MarshallerContextTestImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/MarshallerContextTestImpl.java b/modules/core/src/test/java/org/apache/ignite/marshaller/MarshallerContextTestImpl.java
index 095ee3f..594a022 100644
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/MarshallerContextTestImpl.java
+++ b/modules/core/src/test/java/org/apache/ignite/marshaller/MarshallerContextTestImpl.java
@@ -18,9 +18,10 @@
package org.apache.ignite.marshaller;
import org.apache.ignite.internal.util.typedef.internal.*;
+import org.jdk8.backport.*;
import java.io.*;
-import java.util.*;
+import java.util.concurrent.*;
/**
* Test marshaller context.
@@ -30,7 +31,7 @@ public class MarshallerContextTestImpl implements MarshallerContext {
private static final String CLS_NAMES_FILE = "org/apache/ignite/internal/classnames.properties";
/** */
- private final Map<Integer, Class> map = new HashMap<>();
+ private final ConcurrentMap<Integer, Class> map = new ConcurrentHashMap8<>();
/**
*/
@@ -60,11 +61,19 @@ public class MarshallerContextTestImpl implements MarshallerContext {
/** {@inheritDoc} */
@Override public void registerClass(int id, Class cls) {
- map.put(id, cls);
+ Class old = map.putIfAbsent(id, cls);
+
+ if (old != null && !cls.getName().equals(old.getName()))
+ throw new IllegalStateException("Collision [id=" + id + ", cls1=" + cls.getName() +
+ ", cls2=" + old.getName() + ']');
}
/** {@inheritDoc} */
@Override public Class className(int id, ClassLoader ldr) throws ClassNotFoundException {
- return map.get(id);
+ Class cls = map.get(id);
+
+ assert cls != null;
+
+ return cls;
}
}