/** * Announce an event out to peer kylin servers */ public void announce(String entity, String event, String key) { announce(new BroadcastEvent(entity, event, key)); }
public void remove(K key) { boolean exists = innerCache.containsKey(key); innerCache.remove(key); if (exists) { getBroadcaster().announce(syncEntity, Broadcaster.Event.DROP.getType(), key.toString()); } }
public void put(K key, V value) { boolean exists = innerCache.containsKey(key); innerCache.put(key, value); if (!exists) { getBroadcaster().announce(syncEntity, Broadcaster.Event.CREATE.getType(), key.toString()); } else { getBroadcaster().announce(syncEntity, Broadcaster.Event.UPDATE.getType(), key.toString()); } }
public void annouceWipeCache(String entity, String event, String cacheKey) { Broadcaster broadcaster = Broadcaster.getInstance(getConfig()); broadcaster.announce(entity, event, cacheKey); }
@Override public void handleAnnounceError(String targetNode, RestClient restClient, BroadcastEvent event) { int retry = event.getRetryTime() + 1; // when sync failed, put back to queue to retry if (retry < maxRetryTimes) { event.setRetryTime(retry); event.setTargetNode(targetNode); broadcaster.announce(event); } else { logger.error("Announce broadcast event exceeds retry limit, abandon targetNode {} broadcastEvent {}", targetNode, event); } } }
@Test public void testAnnounceErrorHandler() throws IOException, InterruptedException { System.setProperty("kylin.server.cluster-servers", "localhost:717"); System.setProperty("kylin.metadata.sync-error-handler", MockupErrHandler.class.getName()); try { Broadcaster broadcaster = Broadcaster.getInstance(getTestConfig()); broadcaster.announce("all", "update", "all"); for (int i = 0; i < 30 && MockupErrHandler.atom.get() == 0; i++) { Thread.sleep(1000); } broadcaster.stopAnnounce(); Broadcaster.staticListenerMap.clear(); } finally { System.clearProperty("kylin.server.cluster-servers"); System.clearProperty("kylin.metadata.sync-error-handler"); } Assert.assertTrue(MockupErrHandler.atom.get() > 0); }
/** * Announce an event out to peer kylin servers */ public void announce(String entity, String event, String key) { announce(new BroadcastEvent(entity, event, key)); }
public void remove(K key) { boolean exists = innerCache.containsKey(key); innerCache.remove(key); if (exists) { getBroadcaster().announce(syncEntity, Broadcaster.Event.DROP.getType(), key.toString()); } }
public void put(K key, V value) { boolean exists = innerCache.containsKey(key); innerCache.put(key, value); if (!exists) { getBroadcaster().announce(syncEntity, Broadcaster.Event.CREATE.getType(), key.toString()); } else { getBroadcaster().announce(syncEntity, Broadcaster.Event.UPDATE.getType(), key.toString()); } }
@Override public void handleAnnounceError(String targetNode, RestClient restClient, BroadcastEvent event) { int retry = event.getRetryTime() + 1; // when sync failed, put back to queue to retry if (retry < maxRetryTimes) { event.setRetryTime(retry); event.setTargetNode(targetNode); broadcaster.announce(event); } else { logger.error("Announce broadcast event exceeds retry limit, abandon targetNode {} broadcastEvent {}", targetNode, event); } } }