Repository: ignite Updated Branches: refs/heads/master aabacfa00 -> b1206121e
IGNITE-9794 Handle UnregisteredBinaryTypeException on metadata registration under topology lock. - Fixes #4916. Signed-off-by: Dmitriy Govorukhin <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b1206121 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b1206121 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b1206121 Branch: refs/heads/master Commit: b1206121e7a87f2d84414ab03b86b8614c0bc3c0 Parents: aabacfa Author: Denis Mekhanikov <[email protected]> Authored: Fri Oct 5 16:13:45 2018 +0300 Committer: Dmitriy Govorukhin <[email protected]> Committed: Fri Oct 5 16:13:45 2018 +0300 ---------------------------------------------------------------------- .../internal/binary/BinaryFieldAccessor.java | 3 +- ...ataRegistrationInsideEntryProcessorTest.java | 49 +++++++++++--------- 2 files changed, 30 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b1206121/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java index 87c4f3e..7d138a3 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java @@ -26,6 +26,7 @@ import java.util.Date; import java.util.Map; import java.util.UUID; import org.apache.ignite.binary.BinaryObjectException; +import org.apache.ignite.internal.UnregisteredBinaryTypeException; import org.apache.ignite.internal.UnregisteredClassException; import org.apache.ignite.internal.util.GridUnsafe; import org.apache.ignite.internal.util.typedef.F; @@ -156,7 +157,7 @@ public abstract class BinaryFieldAccessor { write0(obj, writer); } catch (Exception ex) { - if (ex instanceof UnregisteredClassException) + if (ex instanceof UnregisteredClassException || ex instanceof UnregisteredBinaryTypeException) throw ex; if (S.INCLUDE_SENSITIVE && !F.isEmpty(name)) http://git-wip-us.apache.org/repos/asf/ignite/blob/b1206121/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/BinaryMetadataRegistrationInsideEntryProcessorTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/BinaryMetadataRegistrationInsideEntryProcessorTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/BinaryMetadataRegistrationInsideEntryProcessorTest.java index 73dae4b..c7c3757 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/BinaryMetadataRegistrationInsideEntryProcessorTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/BinaryMetadataRegistrationInsideEntryProcessorTest.java @@ -17,7 +17,7 @@ package org.apache.ignite.internal.processors.cache; -import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.cache.processor.EntryProcessor; @@ -40,7 +40,7 @@ public class BinaryMetadataRegistrationInsideEntryProcessorTest extends GridComm /** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration() { TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder() - .setAddresses(Arrays.asList("127.0.0.1:47500..47509")); + .setAddresses(Collections.singletonList("127.0.0.1:47500..47509")); return new IgniteConfiguration() .setDiscoverySpi(new TcpDiscoverySpi().setIpFinder(ipFinder)) @@ -60,9 +60,9 @@ public class BinaryMetadataRegistrationInsideEntryProcessorTest extends GridComm cache.invoke(i, new CustomProcessor()); } catch (Exception e) { - Map<Integer, CustomObj> value = cache.get(1); + Map<Integer, CustomObj> val = cache.get(1); - if ((value != null) && (value.get(1) != null) && (value.get(1).getObj() == CustomEnum.ONE)) + if ((val != null) && (val.get(1).anEnum == CustomEnum.ONE) && val.get(1).obj.data.equals("test")) System.out.println("Data was saved."); else System.out.println("Data wasn't saved."); @@ -82,7 +82,7 @@ public class BinaryMetadataRegistrationInsideEntryProcessorTest extends GridComm Object... objects) throws EntryProcessorException { Map<Integer, CustomObj> map = new HashMap<>(); - map.put(1, new CustomObj(CustomEnum.ONE)); + map.put(1, new CustomObj(new CustomInnerObject("test"), CustomEnum.ONE)); entry.setValue(map); @@ -95,27 +95,20 @@ public class BinaryMetadataRegistrationInsideEntryProcessorTest extends GridComm */ private static class CustomObj { /** Object. */ - private final Object obj; + private final CustomInnerObject obj; + + /** Enum. */ + private final CustomEnum anEnum; /** * @param obj Object. + * @param anEnum Enum. */ - public CustomObj(Object obj) { + CustomObj( + CustomInnerObject obj, + CustomEnum anEnum) { this.obj = obj; - } - - /** - * @param val Value. - */ - public static CustomObj valueOf(int val) { - return new CustomObj(val); - } - - /** - * - */ - public Object getObj() { - return obj; + this.anEnum = anEnum; } } @@ -138,4 +131,18 @@ public class BinaryMetadataRegistrationInsideEntryProcessorTest extends GridComm } } + /** + * + */ + private static class CustomInnerObject { + /** */ + private final String data; + + /** + * @param data Data. + */ + CustomInnerObject(String data) { + this.data = data; + } + } } \ No newline at end of file
