You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/09/07 11:17:00 UTC
[15/50] [abbrv] ignite git commit: Added node-aware infrastructure.
Added node-aware infrastructure.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0d7049c6
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0d7049c6
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0d7049c6
Branch: refs/heads/ignite-2649
Commit: 0d7049c6a7fcce2fd007d513f0d68189141f87d7
Parents: 6f7e3a8
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Sep 6 17:39:05 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Sep 6 17:39:05 2016 +0300
----------------------------------------------------------------------
.../org/apache/ignite/internal/IgnitionEx.java | 4 +
.../internal/binary/BinaryMarshaller.java | 12 +-
.../internal/binary/BinaryReaderExImpl.java | 5 +-
.../internal/binary/BinaryWriterExImpl.java | 5 +-
.../ignite/internal/util/IgniteUtils.java | 18 ++-
.../AbstractNodeNameAwareMarshaller.java | 134 +++++++++++++++++++
.../ignite/marshaller/jdk/JdkMarshaller.java | 12 +-
.../optimized/OptimizedMarshaller.java | 12 +-
8 files changed, 178 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/0d7049c6/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
index 62bfd4a..07b1e2c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
@@ -76,6 +76,7 @@ import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.logger.LoggerNodeIdAware;
import org.apache.ignite.logger.java.JavaLogger;
+import org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
import org.apache.ignite.mxbean.IgnitionMXBean;
@@ -1934,6 +1935,9 @@ public class IgnitionEx {
marsh = new BinaryMarshaller();
}
+ if (marsh instanceof AbstractNodeNameAwareMarshaller)
+ ((AbstractNodeNameAwareMarshaller)marsh).nodeName(cfg.getGridName());
+
myCfg.setMarshaller(marsh);
if (myCfg.getPeerClassLoadingLocalClassPathExclude() == null)
http://git-wip-us.apache.org/repos/asf/ignite/blob/0d7049c6/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
index 1cbc9ad..7d63353 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
@@ -25,7 +25,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.util.GridUnsafe;
-import org.apache.ignite.marshaller.AbstractMarshaller;
+import org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller;
import org.jetbrains.annotations.Nullable;
import sun.misc.Unsafe;
@@ -33,7 +33,7 @@ import sun.misc.Unsafe;
* Implementation of {@link org.apache.ignite.marshaller.Marshaller} that lets to serialize and deserialize all objects
* in the binary format.
*/
-public class BinaryMarshaller extends AbstractMarshaller {
+public class BinaryMarshaller extends AbstractNodeNameAwareMarshaller {
/** */
private GridBinaryMarshaller impl;
@@ -81,12 +81,12 @@ public class BinaryMarshaller extends AbstractMarshaller {
}
/** {@inheritDoc} */
- @Override public byte[] marshal(@Nullable Object obj) throws IgniteCheckedException {
+ @Override public byte[] marshal0(@Nullable Object obj) throws IgniteCheckedException {
return impl.marshal(obj);
}
/** {@inheritDoc} */
- @Override public void marshal(@Nullable Object obj, OutputStream out) throws IgniteCheckedException {
+ @Override public void marshal0(@Nullable Object obj, OutputStream out) throws IgniteCheckedException {
byte[] arr = marshal(obj);
try {
@@ -98,12 +98,12 @@ public class BinaryMarshaller extends AbstractMarshaller {
}
/** {@inheritDoc} */
- @Override public <T> T unmarshal(byte[] bytes, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
+ @Override public <T> T unmarshal0(byte[] bytes, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
return impl.deserialize(bytes, clsLdr);
}
/** {@inheritDoc} */
- @Override public <T> T unmarshal(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
+ @Override public <T> T unmarshal0(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
ByteArrayOutputStream buf = new ByteArrayOutputStream();
// we have to fully read the InputStream because GridBinaryMarshaller requires support of a method that
http://git-wip-us.apache.org/repos/asf/ignite/blob/0d7049c6/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
index 3481ca3..0d1c839 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderExImpl.java
@@ -1421,13 +1421,14 @@ public class BinaryReaderExImpl implements BinaryReader, BinaryRawReaderEx, Bina
* @throws BinaryObjectException If failed.
*/
@Nullable Object deserialize() throws BinaryObjectException {
- String oldName = IgniteUtils.setCurrentIgniteName(ctx.configuration().getGridName());
+ String newName = ctx.configuration().getGridName();
+ String oldName = IgniteUtils.setCurrentIgniteName(newName);
try {
return deserialize0();
}
finally {
- IgniteUtils.restoreCurrentIgniteName(oldName);
+ IgniteUtils.restoreOldIgniteName(oldName, newName);
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/0d7049c6/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
index b3963d8..9536f31 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java
@@ -140,13 +140,14 @@ public class BinaryWriterExImpl implements BinaryWriter, BinaryRawWriterEx, Obje
* @throws org.apache.ignite.binary.BinaryObjectException In case of error.
*/
void marshal(Object obj, boolean enableReplace) throws BinaryObjectException {
- String oldName = IgniteUtils.setCurrentIgniteName(ctx.configuration().getGridName());
+ String newName = ctx.configuration().getGridName();
+ String oldName = IgniteUtils.setCurrentIgniteName(newName);
try {
marshal0(obj, enableReplace);
}
finally {
- IgniteUtils.restoreCurrentIgniteName(oldName);
+ IgniteUtils.restoreOldIgniteName(oldName, newName);
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/0d7049c6/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index b6f2081..f932bda 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -490,7 +490,7 @@ public abstract class IgniteUtils {
private static Method toStringMtd;
/** Empty local Ignite name. */
- private static final String LOC_IGNITE_NAME_EMPTY = new String();
+ public static final String LOC_IGNITE_NAME_EMPTY = new String();
/** Local Ignite name thread local. */
private static final ThreadLocal<String> LOC_IGNITE_NAME = new ThreadLocal<String>() {
@@ -9592,10 +9592,12 @@ public abstract class IgniteUtils {
* @param newName New name.
* @return Old name.
*/
+ @SuppressWarnings("StringEquality")
@Nullable public static String setCurrentIgniteName(@Nullable String newName) {
String oldName = LOC_IGNITE_NAME.get();
- LOC_IGNITE_NAME.set(newName);
+ if (oldName != newName)
+ LOC_IGNITE_NAME.set(newName);
return oldName;
}
@@ -9608,4 +9610,16 @@ public abstract class IgniteUtils {
public static void restoreCurrentIgniteName(@Nullable String oldName) {
LOC_IGNITE_NAME.set(oldName);
}
+
+ /**
+ * Restore old Ignite name.
+ *
+ * @param oldName Old name.
+ * @param curName Current name.
+ */
+ @SuppressWarnings("StringEquality")
+ public static void restoreOldIgniteName(@Nullable String oldName, @Nullable String curName) {
+ if (oldName != curName)
+ LOC_IGNITE_NAME.set(oldName);
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/0d7049c6/modules/core/src/main/java/org/apache/ignite/marshaller/AbstractNodeNameAwareMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/AbstractNodeNameAwareMarshaller.java b/modules/core/src/main/java/org/apache/ignite/marshaller/AbstractNodeNameAwareMarshaller.java
new file mode 100644
index 0000000..270fdea
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/AbstractNodeNameAwareMarshaller.java
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.marshaller;
+
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.internal.util.IgniteUtils;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.jetbrains.annotations.Nullable;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * Marshaller allowing for {@link Ignition#localIgnite()} calls.
+ */
+public abstract class AbstractNodeNameAwareMarshaller extends AbstractMarshaller {
+ /** Node name. */
+ private volatile String nodeName = U.LOC_IGNITE_NAME_EMPTY;
+
+ /**
+ * Set node name.
+ *
+ * @param nodeName Node name.
+ */
+ public void nodeName(@Nullable String nodeName) {
+ this.nodeName = nodeName;
+ }
+
+ /** {@inheritDoc} */
+ @Override public byte[] marshal(@Nullable Object obj) throws IgniteCheckedException {
+ String oldNodeName = IgniteUtils.setCurrentIgniteName(nodeName);
+
+ try {
+ return marshal0(obj);
+ }
+ finally {
+ IgniteUtils.restoreOldIgniteName(oldNodeName, nodeName);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void marshal(@Nullable Object obj, OutputStream out) throws IgniteCheckedException {
+ String oldNodeName = IgniteUtils.setCurrentIgniteName(nodeName);
+
+ try {
+ marshal0(obj, out);
+ }
+ finally {
+ IgniteUtils.restoreOldIgniteName(oldNodeName, nodeName);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public <T> T unmarshal(byte[] arr, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
+ String oldNodeName = IgniteUtils.setCurrentIgniteName(nodeName);
+
+ try {
+ return unmarshal0(arr, clsLdr);
+ }
+ finally {
+ IgniteUtils.restoreOldIgniteName(oldNodeName, nodeName);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public <T> T unmarshal(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
+ String oldNodeName = IgniteUtils.setCurrentIgniteName(nodeName);
+
+ try {
+ return unmarshal0(in, clsLdr);
+ }
+ finally {
+ IgniteUtils.restoreOldIgniteName(oldNodeName, nodeName);
+ }
+ }
+
+ /**
+ * Marshals object to the output stream. This method should not close
+ * given output stream.
+ *
+ * @param obj Object to marshal.
+ * @param out Output stream to marshal into.
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ protected abstract void marshal0(@Nullable Object obj, OutputStream out) throws IgniteCheckedException;
+
+ /**
+ * Marshals object to byte array.
+ *
+ * @param obj Object to marshal.
+ * @return Byte array.
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ protected abstract byte[] marshal0(@Nullable Object obj) throws IgniteCheckedException;
+
+ /**
+ * Unmarshals object from the input stream using given class loader.
+ * This method should not close given input stream.
+ *
+ * @param <T> Type of unmarshalled object.
+ * @param in Input stream.
+ * @param clsLdr Class loader to use.
+ * @return Unmarshalled object.
+ * @throws IgniteCheckedException If unmarshalling failed.
+ */
+ protected abstract <T> T unmarshal0(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException;
+
+ /**
+ * Unmarshals object from byte array using given class loader.
+ *
+ * @param <T> Type of unmarshalled object.
+ * @param arr Byte array.
+ * @param clsLdr Class loader to use.
+ * @return Unmarshalled object.
+ * @throws IgniteCheckedException If unmarshalling failed.
+ */
+ protected abstract <T> T unmarshal0(byte[] arr, @Nullable ClassLoader clsLdr) throws IgniteCheckedException;
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/0d7049c6/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java b/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
index c8bb383..bcde7f4 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
@@ -27,7 +27,7 @@ import org.apache.ignite.internal.util.io.GridByteArrayInputStream;
import org.apache.ignite.internal.util.io.GridByteArrayOutputStream;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.AbstractMarshaller;
+import org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller;
import org.jetbrains.annotations.Nullable;
/**
@@ -65,9 +65,9 @@ import org.jetbrains.annotations.Nullable;
* <br>
* For information about Spring framework visit <a href="http://www.springframework.org/">www.springframework.org</a>
*/
-public class JdkMarshaller extends AbstractMarshaller {
+public class JdkMarshaller extends AbstractNodeNameAwareMarshaller {
/** {@inheritDoc} */
- @Override public void marshal(@Nullable Object obj, OutputStream out) throws IgniteCheckedException {
+ @Override public void marshal0(@Nullable Object obj, OutputStream out) throws IgniteCheckedException {
assert out != null;
ObjectOutputStream objOut = null;
@@ -89,7 +89,7 @@ public class JdkMarshaller extends AbstractMarshaller {
}
/** {@inheritDoc} */
- @Override public byte[] marshal(@Nullable Object obj) throws IgniteCheckedException {
+ @Override public byte[] marshal0(@Nullable Object obj) throws IgniteCheckedException {
GridByteArrayOutputStream out = null;
try {
@@ -106,7 +106,7 @@ public class JdkMarshaller extends AbstractMarshaller {
/** {@inheritDoc} */
@SuppressWarnings({"unchecked"})
- @Override public <T> T unmarshal(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
+ @Override public <T> T unmarshal0(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
assert in != null;
if (clsLdr == null)
@@ -133,7 +133,7 @@ public class JdkMarshaller extends AbstractMarshaller {
}
/** {@inheritDoc} */
- @Override public <T> T unmarshal(byte[] arr, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
+ @Override public <T> T unmarshal0(byte[] arr, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
GridByteArrayInputStream in = null;
try {
http://git-wip-us.apache.org/repos/asf/ignite/blob/0d7049c6/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
index b2c98b2..7c22dee 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
@@ -28,7 +28,7 @@ import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.AbstractMarshaller;
+import org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller;
import org.jetbrains.annotations.Nullable;
import org.jsr166.ConcurrentHashMap8;
import sun.misc.Unsafe;
@@ -83,7 +83,7 @@ import static org.apache.ignite.IgniteSystemProperties.IGNITE_OPTIMIZED_MARSHALL
* <br>
* For information about Spring framework visit <a href="http://www.springframework.org/">www.springframework.org</a>
*/
-public class OptimizedMarshaller extends AbstractMarshaller {
+public class OptimizedMarshaller extends AbstractNodeNameAwareMarshaller {
/** Use default {@code serialVersionUID} for {@link Serializable} classes. */
public static final boolean USE_DFLT_SUID =
IgniteSystemProperties.getBoolean(IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID, false);
@@ -159,7 +159,7 @@ public class OptimizedMarshaller extends AbstractMarshaller {
}
/** {@inheritDoc} */
- @Override public void marshal(@Nullable Object obj, OutputStream out) throws IgniteCheckedException {
+ @Override public void marshal0(@Nullable Object obj, OutputStream out) throws IgniteCheckedException {
assert out != null;
OptimizedObjectOutputStream objOut = null;
@@ -182,7 +182,7 @@ public class OptimizedMarshaller extends AbstractMarshaller {
}
/** {@inheritDoc} */
- @Override public byte[] marshal(@Nullable Object obj) throws IgniteCheckedException {
+ @Override public byte[] marshal0(@Nullable Object obj) throws IgniteCheckedException {
OptimizedObjectOutputStream objOut = null;
try {
@@ -204,7 +204,7 @@ public class OptimizedMarshaller extends AbstractMarshaller {
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
- @Override public <T> T unmarshal(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
+ @Override public <T> T unmarshal0(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
assert in != null;
OptimizedObjectInputStream objIn = null;
@@ -233,7 +233,7 @@ public class OptimizedMarshaller extends AbstractMarshaller {
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
- @Override public <T> T unmarshal(byte[] arr, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
+ @Override public <T> T unmarshal0(byte[] arr, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
assert arr != null;
OptimizedObjectInputStream objIn = null;