From f6ebed3c7c790aee7869cb8ff72405f011ef163a Mon Sep 17 00:00:00 2001 From: Peter Lawrey Date: Wed, 10 Dec 2014 11:46:34 +0000 Subject: [PATCH] Update lang to the latest version --- .../map/AbstractChronicleMapBuilder.java | 14 ++++++++ .../chronicle/map/ChronicleMapBuilder.java | 7 ++-- .../chronicle/map/ChronicleMapBuilderI.java | 3 ++ .../chronicle/map/StatelessChronicleMap.java | 27 +++++++++------- .../chronicle/map/CHMUseCasesTest.java | 32 +++++++++---------- .../chronicle/map/StatelessClientTest.java | 2 +- 6 files changed, 52 insertions(+), 33 deletions(-) diff --git a/src/main/java/net/openhft/chronicle/map/AbstractChronicleMapBuilder.java b/src/main/java/net/openhft/chronicle/map/AbstractChronicleMapBuilder.java index 2b92941a5..0b4002388 100755 --- a/src/main/java/net/openhft/chronicle/map/AbstractChronicleMapBuilder.java +++ b/src/main/java/net/openhft/chronicle/map/AbstractChronicleMapBuilder.java @@ -143,6 +143,8 @@ abstract class AbstractChronicleMapBuilder keyClass, Class valueClass) { keyBuilder = new SerializationBuilder(keyClass, SerializationBuilder.Role.KEY); @@ -1003,5 +1005,17 @@ abstract class AbstractChronicleMapBuilder checkSerializedValues() { + this.checkSerializedValues = true; + return this; + } + + @Override + public ChronicleMapBuilderI disableOversizedEntries() { + this.disableOversizedEntries = true; + return this; + } } diff --git a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java index 8283f5037..eb6ed4dee 100755 --- a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java +++ b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java @@ -541,13 +541,12 @@ public final class ChronicleMapBuilder implements ChronicleMapBuilderI checkSerializedValues() { - // throw new UnsupportedOperationException("Not implemented"); + delegate.checkSerializedValues(); return this; } - public ChronicleMapBuilder disableOversizedEntries(boolean disableOversizedEntries) { - // throw an exception rather than use oversized entries to test the size is as expected. - // throw new UnsupportedOperationException("Not implemented"); + public ChronicleMapBuilder disableOversizedEntries() { + delegate.disableOversizedEntries(); return this; } } diff --git a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilderI.java b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilderI.java index 8268a2008..454356f04 100755 --- a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilderI.java +++ b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilderI.java @@ -315,4 +315,7 @@ public interface ChronicleMapBuilderI extends Serializable { String name(); + ChronicleMapBuilderI checkSerializedValues(); + + ChronicleMapBuilderI disableOversizedEntries(); } diff --git a/src/main/java/net/openhft/chronicle/map/StatelessChronicleMap.java b/src/main/java/net/openhft/chronicle/map/StatelessChronicleMap.java index bf5cf7f3f..e592fb2a9 100644 --- a/src/main/java/net/openhft/chronicle/map/StatelessChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/StatelessChronicleMap.java @@ -68,8 +68,8 @@ class StatelessChronicleMap implements ChronicleMap, Closeable, Clon private volatile ByteBuffer outBuffer; private volatile ByteBufferBytes outBytes; - private ByteBuffer inBuffer; - private ByteBufferBytes inBytes; + private volatile ByteBuffer inBuffer; + private volatile ByteBufferBytes inBytes; @NotNull private final ReaderWithSize keyReaderWithSize; @@ -331,13 +331,14 @@ class StatelessChronicleMap implements ChronicleMap, Closeable, Clon * @return a unique transactionId */ private long nextUniqueTransaction(long time) { - long old = transactionID.getAndSet(time); - - if (old == time) - return transactionID.incrementAndGet(); - else - return time; - + long id = time * 1000; + for (; ; ) { + long old = transactionID.get(); + if (old > id) id = old + 1; + if (transactionID.compareAndSet(old, id)) + break; + } + return id; } @SuppressWarnings("NullableProblems") @@ -997,13 +998,15 @@ class StatelessChronicleMap implements ChronicleMap, Closeable, Clon receive(SIZE_OF_SIZE + SIZE_OF_TRANSACTION_ID, timeoutTime); final int messageSize = inBytes.readInt(); + assert messageSize > 0 : "Invalid message size " + messageSize; + assert messageSize < 16 << 20 : "Invalid message size " + messageSize; + final int remainingBytes0 = messageSize - (SIZE_OF_SIZE + SIZE_OF_TRANSACTION_ID); final long transactionId0 = inBytes.readLong(); - assert transactionId0 != 0; - // check the transaction id is reasonable - assert String.valueOf(transactionId0).startsWith("14"); + assert transactionId0 > 1410000000000000L : "TransactionId too small " + transactionId0 + " messageSize " + messageSize; + assert transactionId0 < 2100000000000000L : "TransactionId too large " + transactionId0 + " messageSize " + messageSize; // if the transaction id is for this thread process it if (transactionId0 == transactionId) { diff --git a/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java b/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java index ce6187196..a52a72a9b 100644 --- a/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java +++ b/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java @@ -246,7 +246,7 @@ public class CHMUseCasesTest { try (ChronicleMap map = ChronicleMapBuilder .of(Integer.class, Integer.class) .entrySize(8) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .create()) { Integer key1; Integer key2; @@ -300,7 +300,7 @@ public class CHMUseCasesTest { try (ChronicleMap map = ChronicleMapBuilder .of(Long.class, Long.class) .entrySize(16) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .create()) { map.put(1L, 11L); assertEquals((Long) 11L, map.get(1L)); @@ -342,7 +342,7 @@ public class CHMUseCasesTest { public void testDoubleDoubleMap() throws ExecutionException, InterruptedException { try (ChronicleMap map = ChronicleMapBuilder .of(Double.class, Double.class) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .entrySize(16) .create()) { map.put(1.0, 11.0); @@ -386,7 +386,7 @@ public class CHMUseCasesTest { public void testByteArrayByteArrayMap() throws ExecutionException, InterruptedException { try (ChronicleMap map = ChronicleMapBuilder .of(byte[].class, byte[].class) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .entrySize(12) .create()) { byte[] key1 = {1, 1, 1, 1}; @@ -436,7 +436,7 @@ public class CHMUseCasesTest { .of(ByteBuffer.class, ByteBuffer.class) .valueMarshaller(ByteBufferMarshaller.INSTANCE) .keyMarshaller(ByteBufferMarshaller.INSTANCE) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .entrySize(20) .create()) { ByteBuffer key1 = ByteBuffer.wrap(new byte[]{1, 1, 1, 1}); @@ -522,7 +522,7 @@ public class CHMUseCasesTest { ByteBuffer bb1 = ByteBuffer.allocate(8); bb1.put(value1); - bb1.putShort((short)12345); + bb1.putShort((short) 12345); bb1.flip(); assertBBEquals(bb1, valueA); } @@ -543,7 +543,7 @@ public class CHMUseCasesTest { .of(ByteBuffer.class, ByteBuffer.class) .valueMarshaller(ByteBufferMarshaller.INSTANCE) // we should not have to to this ! .keyMarshaller(ByteBufferMarshaller.INSTANCE) // we should not have to to this ! - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .entrySize(12) .create()) { ByteBuffer key1 = ByteBuffer.wrap(new byte[]{1, 1, 1, 1}); @@ -595,7 +595,7 @@ public class CHMUseCasesTest { public void testIntValueIntValueMap() { try (ChronicleMap map = ChronicleMapBuilder .of(IntValue.class, IntValue.class) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .entrySize(8) .create()) { IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false); @@ -677,7 +677,7 @@ public class CHMUseCasesTest { public void testUnsignedIntValueUnsignedIntValueMap() { try (ChronicleMap map = ChronicleMapBuilder .of(UnsignedIntValue.class, UnsignedIntValue.class) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .entrySize(8) .create()) { UnsignedIntValue key1 = ChronicleMapBuilder.newInstance(UnsignedIntValue.class, true); @@ -759,7 +759,7 @@ public class CHMUseCasesTest { public void testIntValueShortValueMap() { try (ChronicleMap map = ChronicleMapBuilder .of(IntValue.class, ShortValue.class) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .entrySize(6) .create()) { IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false); @@ -842,7 +842,7 @@ public class CHMUseCasesTest { try (ChronicleMap map = ChronicleMapBuilder .of(IntValue.class, UnsignedShortValue.class) .entrySize(6) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .create()) { IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false); IntValue key2 = ChronicleMapBuilder.newInstance(IntValue.class, false); @@ -923,7 +923,7 @@ public class CHMUseCasesTest { public void testIntValueCharValueMap() { try (ChronicleMap map = ChronicleMapBuilder .of(IntValue.class, CharValue.class) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .entrySize(6) .create()) { IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false); @@ -1006,7 +1006,7 @@ public class CHMUseCasesTest { try (ChronicleMap map = ChronicleMapBuilder .of(IntValue.class, UnsignedByteValue.class) .entrySize(5) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .create()) { IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false); IntValue key2 = ChronicleMapBuilder.newInstance(IntValue.class, false); @@ -1087,7 +1087,7 @@ public class CHMUseCasesTest { public void testIntValueBooleanValueMap() { try (ChronicleMap map = ChronicleMapBuilder .of(IntValue.class, BooleanValue.class) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .entrySize(5) .create()) { IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false); @@ -1170,7 +1170,7 @@ public class CHMUseCasesTest { try (ChronicleMap map = ChronicleMapBuilder .of(FloatValue.class, FloatValue.class) .entrySize(8) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .create()) { FloatValue key1 = ChronicleMapBuilder.newInstance(FloatValue.class, false); FloatValue key2 = ChronicleMapBuilder.newInstance(FloatValue.class, false); @@ -1337,7 +1337,7 @@ public class CHMUseCasesTest { try (ChronicleMap map = ChronicleMapBuilder .of(LongValue.class, LongValue.class) .entrySize(16) - .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries() // disabled for testing purposes only. .create()) { LongValue key1 = ChronicleMapBuilder.newInstance(LongValue.class, false); LongValue key2 = ChronicleMapBuilder.newInstance(LongValue.class, false); diff --git a/src/test/java/net/openhft/chronicle/map/StatelessClientTest.java b/src/test/java/net/openhft/chronicle/map/StatelessClientTest.java index 9f87f5d1a..c25fcfa6c 100644 --- a/src/test/java/net/openhft/chronicle/map/StatelessClientTest.java +++ b/src/test/java/net/openhft/chronicle/map/StatelessClientTest.java @@ -38,7 +38,7 @@ import static org.junit.Assert.assertTrue; public class StatelessClientTest { public static final int SIZE = 2500; - static int s_port = 9050; + static int s_port = 9070; enum ToString implements Function { INSTANCE;