public AbstractActiveGossiper(GossipManager gossipManager, GossipCore gossipCore, MetricRegistry registry) { this.gossipManager = gossipManager; this.gossipCore = gossipCore; sharedDataHistogram = registry.histogram(name(AbstractActiveGossiper.class, "sharedDataHistogram-time")); sendPerNodeDataHistogram = registry.histogram(name(AbstractActiveGossiper.class, "sendPerNodeDataHistogram-time")); sendMembershipHistogram = registry.histogram(name(AbstractActiveGossiper.class, "sendMembershipHistogram-time")); random = new Random(); gossipSettings = gossipManager.getSettings(); }
public DatacenterRackAwareActiveGossiper(GossipManager gossipManager, GossipCore gossipCore, MetricRegistry registry) { super(gossipManager, gossipCore, registry); scheduledExecutorService = Executors.newScheduledThreadPool(2); workQueue = new ArrayBlockingQueue<Runnable>(1024); threadService = new ThreadPoolExecutor(1, 30, 1, TimeUnit.SECONDS, workQueue, new ThreadPoolExecutor.DiscardOldestPolicy()); try { sameRackGossipIntervalMs = Integer.parseInt(gossipManager.getSettings() .getActiveGossipProperties().get("sameRackGossipIntervalMs")); } catch (RuntimeException ex) { } try { sameDcGossipIntervalMs = Integer.parseInt(gossipManager.getSettings() .getActiveGossipProperties().get("sameDcGossipIntervalMs")); } catch (RuntimeException ex) { } try { differentDatacenterGossipIntervalMs = Integer.parseInt(gossipManager.getSettings() .getActiveGossipProperties().get("differentDatacenterGossipIntervalMs")); } catch (RuntimeException ex) { } try { randomDeadMemberSendIntervalMs = Integer.parseInt(gossipManager.getSettings() .getActiveGossipProperties().get("randomDeadMemberSendIntervalMs")); } catch (RuntimeException ex) { } }
/** required for reflection to work! */ public UdpTransportManager(GossipManager gossipManager, GossipCore gossipCore) { super(gossipManager, gossipCore); soTimeout = gossipManager.getSettings().getGossipInterval() * 2; try { SocketAddress socketAddress = new InetSocketAddress(gossipManager.getMyself().getUri().getHost(), gossipManager.getMyself().getUri().getPort()); server = new DatagramSocket(socketAddress); } catch (SocketException ex) { LOGGER.warn(ex); throw new RuntimeException(ex); } me = new Thread(this); }
public AbstractTransportManager(GossipManager gossipManager, GossipCore gossipCore) { this.gossipManager = gossipManager; this.gossipCore = gossipCore; gossipThreadExecutor = Executors.newCachedThreadPool(); activeGossipThread = ReflectionUtils.constructWithReflection( gossipManager.getSettings().getActiveGossipClass(), new Class<?>[]{ GossipManager.class, GossipCore.class, MetricRegistry.class }, new Object[]{ gossipManager, gossipCore, gossipManager.getRegistry() }); }
@Override public void init() { super.init(); scheduledExecutorService.scheduleAtFixedRate(() -> { threadService.execute(() -> { sendToALiveMember(); }); }, 0, gossipManager.getSettings().getGossipInterval(), TimeUnit.MILLISECONDS); scheduledExecutorService.scheduleAtFixedRate(() -> { sendToDeadMember(); }, 0, gossipManager.getSettings().getGossipInterval(), TimeUnit.MILLISECONDS); scheduledExecutorService.scheduleAtFixedRate( () -> sendPerNodeData(gossipManager.getMyself(), selectPartner(gossipManager.getLiveMembers())), 0, gossipManager.getSettings().getGossipInterval(), TimeUnit.MILLISECONDS); scheduledExecutorService.scheduleAtFixedRate( () -> sendSharedData(gossipManager.getMyself(), selectPartner(gossipManager.getLiveMembers())), 0, gossipManager.getSettings().getGossipInterval(), TimeUnit.MILLISECONDS); }
public static File buildRingStatePath(GossipManager manager) { return new File(manager.getSettings().getPathToRingState(), "ringstate." + manager.getMyself().getClusterName() + "." + manager.getMyself().getId() + ".json"); }
public static File buildSharedDataPath(GossipManager manager){ return new File(manager.getSettings().getPathToDataState(), "shareddata." + manager.getMyself().getClusterName() + "." + manager.getMyself().getId() + ".json"); }
public static File buildPerNodeDataPath(GossipManager manager) { return new File(manager.getSettings().getPathToDataState(), "pernodedata." + manager.getMyself().getClusterName() + "." + manager.getMyself().getId() + ".json"); }
remoteMember.getHeartbeat(), remoteMember.getProperties(), gossipManager.getSettings().getWindowSize(), gossipManager.getSettings().getMinimumSamples(), gossipManager.getSettings().getDistribution()); aNewMember.recordHeartbeat(remoteMember.getHeartbeat()); Object result = gossipManager.getMembers().putIfAbsent(aNewMember, GossipState.UP);