Skip to content

Commit

Permalink
Merge pull request #115 from alek-sys/master
Browse files Browse the repository at this point in the history
Migrate to Hazelcast 4
  • Loading branch information
vladimir-bukhtoyarov committed Feb 10, 2020
2 parents 8d8b118 + 6d7d961 commit 2ef1b57
Show file tree
Hide file tree
Showing 12 changed files with 50 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@

import io.github.bucket4j.Bucket;

import java.time.temporal.ChronoUnit;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.function.Supplier;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
package io.github.bucket4j.grid.hazelcast;


import com.hazelcast.core.IMap;
import com.hazelcast.map.IMap;
import io.github.bucket4j.Extension;
import io.github.bucket4j.grid.GridBucketState;
import io.github.bucket4j.grid.ProxyManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package io.github.bucket4j.grid.hazelcast;

import com.hazelcast.core.IMap;
import com.hazelcast.map.IMap;
import io.github.bucket4j.AbstractBucketBuilder;
import io.github.bucket4j.Bucket;
import io.github.bucket4j.BucketConfiguration;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package io.github.bucket4j.grid.hazelcast;

import com.hazelcast.map.EntryBackupProcessor;
import com.hazelcast.map.EntryProcessor;
import io.github.bucket4j.grid.CommandResult;
import io.github.bucket4j.grid.GridBucketState;
Expand All @@ -27,12 +26,12 @@
import java.util.Map;


class HazelcastEntryProcessorAdapter<K extends Serializable, T extends Serializable> implements EntryProcessor<K, GridBucketState> {
class HazelcastEntryProcessorAdapter<K extends Serializable, T extends Serializable> implements EntryProcessor<K, GridBucketState, Object> {

private static final long serialVersionUID = 1L;

private final JCacheEntryProcessor<K, T> entryProcessor;
private EntryBackupProcessor<K, GridBucketState> backupProcessor;
private EntryProcessor<K, GridBucketState, Object> backupProcessor;

public HazelcastEntryProcessorAdapter(JCacheEntryProcessor<K, T> entryProcessor) {
this.entryProcessor = entryProcessor;
Expand All @@ -50,7 +49,7 @@ public Object process(Map.Entry<K, GridBucketState> entry) {
}

@Override
public EntryBackupProcessor<K, GridBucketState> getBackupProcessor() {
public EntryProcessor<K, GridBucketState, Object> getBackupProcessor() {
return backupProcessor;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,8 @@

package io.github.bucket4j.grid.hazelcast;

import com.hazelcast.core.ExecutionCallback;
import com.hazelcast.core.IMap;
import com.hazelcast.map.EntryProcessor;
import com.hazelcast.map.IMap;
import io.github.bucket4j.BucketConfiguration;
import io.github.bucket4j.Nothing;
import io.github.bucket4j.grid.CommandResult;
Expand All @@ -31,6 +30,7 @@
import java.io.Serializable;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;

public class HazelcastProxy<K extends Serializable> implements GridProxy<K> {

Expand Down Expand Up @@ -87,24 +87,12 @@ public boolean isAsyncModeSupported() {
return true;
}

private <T extends Serializable> EntryProcessor adoptEntryProcessor(final JCacheEntryProcessor<K, T> entryProcessor) {
private <T extends Serializable> EntryProcessor adoptEntryProcessor(final JCacheEntryProcessor<K, T> entryProcessor) {
return new HazelcastEntryProcessorAdapter<>(entryProcessor);
}

private <T extends Serializable> CompletableFuture<CommandResult<T>> invokeAsync(K key, JCacheEntryProcessor<K, T> entryProcessor) {
CompletableFuture<CommandResult<T>> future = new CompletableFuture<>();
cache.submitToKey(key, adoptEntryProcessor(entryProcessor), new ExecutionCallback() {
@Override
public void onResponse(Object response) {
future.complete((CommandResult<T>) response);
}

@Override
public void onFailure(Throwable t) {
future.completeExceptionally(t);
}
});
return future;
return cache.submitToKey(key, adoptEntryProcessor(entryProcessor)).toCompletableFuture();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package io.github.bucket4j.grid.hazelcast;

import com.hazelcast.core.IMap;
import com.hazelcast.map.IMap;
import io.github.bucket4j.Bucket;
import io.github.bucket4j.BucketConfiguration;
import io.github.bucket4j.grid.GridBucket;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@

package io.github.bucket4j.grid.hazelcast;

import com.hazelcast.map.EntryBackupProcessor;
import io.github.bucket4j.Bandwidth;
import com.hazelcast.map.EntryProcessor;
import io.github.bucket4j.grid.CommandResult;
import io.github.bucket4j.grid.GridBucketState;
import io.github.bucket4j.serialization.DeserializationAdapter;
import io.github.bucket4j.serialization.SerializationAdapter;
Expand All @@ -29,7 +29,7 @@
import java.util.Map;


public class SimpleBackupProcessor<K extends Serializable> implements EntryBackupProcessor<K, GridBucketState> {
public class SimpleBackupProcessor<K extends Serializable> implements EntryProcessor<K, GridBucketState, Object> {

private static final long serialVersionUID = 1L;

Expand All @@ -40,8 +40,9 @@ public SimpleBackupProcessor(GridBucketState state) {
}

@Override
public void processBackup(Map.Entry<K, GridBucketState> entry) {
public Object process(Map.Entry<K, GridBucketState> entry) {
entry.setValue(state);
return null; // return value from backup processor is ignored, see https://github.com/hazelcast/hazelcast/pull/14995
}

public static SerializationHandle<SimpleBackupProcessor> SERIALIZATION_HANDLE = new SerializationHandle<SimpleBackupProcessor>() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import com.hazelcast.config.SerializerConfig;
import com.hazelcast.internal.serialization.InternalSerializationService;
import com.hazelcast.internal.serialization.impl.DefaultSerializationServiceBuilder;
import com.hazelcast.nio.BufferObjectDataInput;
import com.hazelcast.nio.BufferObjectDataOutput;
import com.hazelcast.internal.nio.BufferObjectDataInput;
import com.hazelcast.internal.nio.BufferObjectDataOutput;
import com.hazelcast.nio.serialization.StreamSerializer;
import io.github.bucket4j.Bucket4j;
import io.github.bucket4j.BucketConfiguration;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@
*/

import com.hazelcast.config.Config;
import com.hazelcast.config.JoinConfig;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import com.hazelcast.map.IMap;
import io.github.bucket4j.AbstractDistributedBucketTest;
import io.github.bucket4j.Bucket;
import io.github.bucket4j.Bucket4j;
Expand Down Expand Up @@ -53,6 +54,10 @@ public static void setup() {

server.exec((Runnable & Serializable) () -> {
Config config = new Config();
JoinConfig joinConfig = config.getNetworkConfig().getJoin();
joinConfig.getMulticastConfig().setEnabled(false);
joinConfig.getTcpIpConfig().setEnabled(true);
joinConfig.getTcpIpConfig().addMember("127.0.0.1:5702");
config.setLiteMember(false);
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(config);
hazelcastInstance.getMap("my_buckets");
Expand All @@ -61,6 +66,10 @@ public static void setup() {
// start hazelcast client which works inside current JVM and does not hold data
Config config = new Config();
config.setLiteMember(true);
JoinConfig joinConfig = config.getNetworkConfig().getJoin();
joinConfig.getMulticastConfig().setEnabled(false);
joinConfig.getTcpIpConfig().setEnabled(true);
joinConfig.getTcpIpConfig().addMember("127.0.0.1:5701");
hazelcastInstance = Hazelcast.newHazelcastInstance(config);
map = hazelcastInstance.getMap("my_buckets");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,10 @@
*/

import com.hazelcast.config.Config;
import com.hazelcast.config.SerializationConfig;
import com.hazelcast.config.SerializerConfig;
import com.hazelcast.config.JoinConfig;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import com.hazelcast.map.IMap;
import io.github.bucket4j.AbstractDistributedBucketTest;
import io.github.bucket4j.Bucket;
import io.github.bucket4j.Bucket4j;
Expand Down Expand Up @@ -57,13 +56,21 @@ public static void setup() {
server.exec((Runnable & Serializable) () -> {
Config config = new Config();
HazelcastSerializer.addCustomSerializers(config.getSerializationConfig(), 10_000);
JoinConfig joinConfig = config.getNetworkConfig().getJoin();
joinConfig.getMulticastConfig().setEnabled(false);
joinConfig.getTcpIpConfig().setEnabled(true);
joinConfig.getTcpIpConfig().addMember("127.0.0.1:5702");
config.setLiteMember(false);
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(config);
hazelcastInstance.getMap("my_buckets");
});

// start hazelcast client which works inside current JVM and does not hold data
Config config = new Config();
JoinConfig joinConfig = config.getNetworkConfig().getJoin();
joinConfig.getMulticastConfig().setEnabled(false);
joinConfig.getTcpIpConfig().setEnabled(true);
joinConfig.getTcpIpConfig().addMember("127.0.0.1:5701");
HazelcastSerializer.addCustomSerializers(config.getSerializationConfig(), 10_000);
config.setLiteMember(true);
hazelcastInstance = Hazelcast.newHazelcastInstance(config);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import com.hazelcast.config.CacheSimpleConfig;
import com.hazelcast.config.Config;
import com.hazelcast.config.JoinConfig;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.ICacheManager;
Expand Down Expand Up @@ -51,6 +52,10 @@ public static void setup() {

server.exec((Runnable & Serializable) () -> {
Config config = new Config();
JoinConfig joinConfig = config.getNetworkConfig().getJoin();
joinConfig.getMulticastConfig().setEnabled(false);
joinConfig.getTcpIpConfig().setEnabled(true);
joinConfig.getTcpIpConfig().addMember("127.0.0.1:5702");
config.setLiteMember(false);
CacheSimpleConfig cacheConfig = new CacheSimpleConfig();
cacheConfig.setName("my_buckets");
Expand All @@ -63,6 +68,10 @@ public static void setup() {

// start hazelcast client which works inside current JVM and does not hold data
Config config = new Config();
JoinConfig joinConfig = config.getNetworkConfig().getJoin();
joinConfig.getMulticastConfig().setEnabled(false);
joinConfig.getTcpIpConfig().setEnabled(true);
joinConfig.getTcpIpConfig().addMember("127.0.0.1:5701");
config.setLiteMember(true);
hazelcastInstance = Hazelcast.newHazelcastInstance(config);
ICacheManager cacheManager = hazelcastInstance.getCacheManager();
Expand Down
4 changes: 2 additions & 2 deletions bucket4j-parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
<argLine/>
<jcache.version>1.0.0</jcache.version>
<ignite.version>2.1.0</ignite.version>
<hazelcast.version>3.8</hazelcast.version>
<hazelcast.version>4.0</hazelcast.version>
<!-- <infinispan.version>10.0.0.Final</infinispan.version>-->
<infinispan.version>10.1.0.CR1</infinispan.version>
<testcontainers.version>1.9.0</testcontainers.version>
Expand Down Expand Up @@ -283,4 +283,4 @@
</dependency>
</dependencies>

</project>
</project>

0 comments on commit 2ef1b57

Please sign in to comment.