package com.mozilla.grouperfish.services.hazelcast; import java.util.Map; import java.util.concurrent.BlockingQueue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.hazelcast.config.Config; import com.hazelcast.config.MapConfig; import com.hazelcast.core.Hazelcast; import com.mozilla.grouperfish.services.api.Grid; public class HazelcastGrid implements Grid { private static final Logger log = LoggerFactory.getLogger(HazelcastGrid.class); public HazelcastGrid() { // Initialize some of Hazelcast now rather than waiting for the first request Hazelcast.getDefaultInstance(); final Config config = Hazelcast.getConfig(); final StringBuilder sb = new StringBuilder(); for (final Map.Entry<String, MapConfig> entry : config.getMapConfigs().entrySet()) { sb.append(entry.getKey()).append(", "); } final int numMembers = Hazelcast.getCluster().getMembers().size(); // Force initialization of index. // :TODO: make less hacky... log.info("Initializing HC ES node..."); Hazelcast.getMap("documents_grouperfish").get("unused"); log.info(String.format("Instantiated service: %s (maps=%smembers=%s)", getClass().getSimpleName(), sb.toString(), numMembers)); } @Override public Map<String, String> map(final String name) { return Hazelcast.getMap(name); } @Override public <E> BlockingQueue<E> queue(final String name) { return Hazelcast.getQueue(name); } }