/** * Adds local event listener. * * @param lsnr Listener. * @param evts Types of events. */ public void addListener(GridLocalEventListener lsnr, int... evts) { cctx.gridEvents().addLocalEventListener(lsnr, evts); }
/** {@inheritDoc} */ @SuppressWarnings("NonSynchronizedMethodOverridesSynchronizedMethod") @Override public void close() throws IOException { if (closeGuard.compareAndSet(false, true)) { super.close(); metrics.decrementFilesOpenedForRead(); if (evts.isRecordable(EVT_GGFS_FILE_CLOSED_READ)) evts.record(new GridGgfsEvent(path, localNode(), EVT_GGFS_FILE_CLOSED_READ, bytes())); } } }
/** {@inheritDoc} */ @Override public void onEvent(GridEvent evt) { if (!lsnr.apply(evt)) removeLocalEventListener(this); }
/** * Records event if it's recordable. * * @param evt Event to record. */ public void record(GridEvent evt) { assert evt != null; if (!enterBusy()) return; try { int type = evt.type(); if (!isRecordable(type)) { LT.warn(log, null, "Trying to record event without checking if it is recordable: " + U.gridEventName(type)); } // Override user recordable settings for daemon node. if ((isDaemon || isUserRecordable(type)) && !isHiddenEvent(type)) try { getSpi().record(evt); } catch (GridSpiException e) { U.error(log, "Failed to record event: " + evt, e); } if (isRecordable(type)) notifyListeners(evt); } finally { leaveBusy(); } }
/** * Adds local event listener. Note that this method specifically disallow an empty * array of event type to prevent accidental subscription for all system event that * may lead to a drastic performance decrease. * * @param lsnr Listener to add. * @param types Event types to subscribe listener for. */ public void addLocalEventListener(GridLocalEventListener lsnr, int[] types) { assert lsnr != null; assert types != null; assert types.length > 0; if (!enterBusy()) return; try { for (int t : types) { getOrCreate(t).add(lsnr); if (!isRecordable(t)) U.warn(log, "Added listener for disabled event type: " + U.gridEventName(t)); if (t == GridEventType.EVT_NODE_RECONNECTED) U.warn(log, "Added local listener for deprecated EVT_NODE_RECONNECT event " + "(local listener will never get called)."); } } finally { leaveBusy(); } }
ctx.event().addLocalEventListener(discoLsnr, EVT_NODE_FAILED, EVT_NODE_LEFT); ctx.event().removeLocalEventListener(discoLsnr);
@Override public boolean isEventRecordable(int... types) { for (int t : types) if (!ctx.event().isRecordable(t)) return false; return true; }
addLocalEventListener(evtLsnr, new int[] { EVT_NODE_LEFT, EVT_NODE_FAILED dep.participants()); sendMessage(nodes, TOPIC_EVENT, msg, PUBLIC_POOL); ioMgr.removeMessageListener(resTopic, resLsnr); removeLocalEventListener(evtLsnr);
/** {@inheritDoc} */ @Override public void start() throws GridException { Map<GridPredicate<? extends GridEvent>, int[]> evtLsnrs = ctx.config().getLocalEventListeners(); if (evtLsnrs != null) { for (GridPredicate<? extends GridEvent> lsnr : evtLsnrs.keySet()) addLocalEventListener(lsnr, evtLsnrs.get(lsnr)); } startSpi(); msgLsnr = new RequestListener(); ctx.io().addMessageListener(TOPIC_EVENT, msgLsnr); if (log.isDebugEnabled()) log.debug(startInfo()); }
/** {@inheritDoc} */ @Override public void recordLocal(GridEvent evt) { A.notNull(evt, "evt"); if (evt.type() <= 1000) throw new IllegalArgumentException("All types in range from 1 to 1000 are reserved for " + "internal GridGain events [evtType=" + evt.type() + ", evt=" + evt + ']'); guard(); try { ctx.event().record(evt); } finally { unguard(); } }
if (binarySearch(cfgInclEvtTypes, type)) { U.warn(log, "Can't disable event since it was enabled in configuration: " + U.gridEventName(type)); userRecordableEvts0[type] = false; if (!isInternalEvent(type)) recordableEvts0[type] = false; Arrays.sort(userTypes, 0, userTypesLen); userTypes = compact(userTypes, userTypesLen);
cfgInclEvtTypes = EMPTY; else { cfgInclEvtTypes0 = copy(cfgInclEvtTypes0); throw new IllegalArgumentException("Invalid event type: " + cfgInclEvtTypes0[0]); cfgInclEvtTypes = compact(cfgInclEvtTypes0, cfgInclEvtTypes0.length); if (isInternalEvent(type) || userRecordable) recordableEvts[type] = true;
/** * Checks if the event type is user-recordable against grid configuration. * * @param type Event type to check. * @return {@code true} if passed event should be recorded, {@code false} - otherwise. */ private boolean isUserRecordable0(int type) { return binarySearch(inclEvtTypes, type); }
/** {@inheritDoc} */ @Override public void enableLocal(int[] types) { A.notEmpty(types, "types"); guard(); try { ctx.event().enableEvents(types); } finally { unguard(); } }
/** {@inheritDoc} */ @Override public void disableLocal(int[] types) { A.notEmpty(types, "types"); guard(); try { ctx.event().disableEvents(types); } finally { unguard(); } }
Arrays.sort(userTypes, 0, userTypesLen); userTypes = compact(userTypes, userTypesLen);
startManager(ctx, new GridCheckpointManager(ctx), attrs); startManager(ctx, new GridEventStorageManager(ctx), attrs); startManager(ctx, new GridDeploymentManager(ctx), attrs); startManager(ctx, new GridLoadBalancerManager(ctx), attrs);
/** * Adds local event listener. * * @param lsnr Listener to add. * @param type Event type to subscribe listener for. * @param types Additional event types to subscribe listener for. */ public void addLocalEventListener(GridLocalEventListener lsnr, int type, @Nullable int... types) { assert lsnr != null; if (!enterBusy()) return; try { getOrCreate(type).add(lsnr); if (!isRecordable(type)) U.warn(log, "Added listener for disabled event type: " + U.gridEventName(type)); if (types != null) { for (int t : types) { getOrCreate(t).add(lsnr); if (!isRecordable(t)) U.warn(log, "Added listener for disabled event type: " + U.gridEventName(t)); if (t == GridEventType.EVT_NODE_RECONNECTED) U.warn(log, "Added local listener for deprecated EVT_NODE_RECONNECT event " + "(local listener will never get called)."); } } } finally { leaveBusy(); } }
ctx.event().addLocalEventListener(discoLsnr, EVT_NODE_FAILED, EVT_NODE_LEFT); ctx.event().removeLocalEventListener(discoLsnr);
/** * @param evts Collection (created if {@code null}). * @param evt Event. * @param msg Message (optional). * @return Collection with event added. */ Collection<GridBiTuple<Integer, String>> addEvent(@Nullable Collection<GridBiTuple<Integer, String>> evts, Integer evt, @Nullable String msg) { assert ctx.event().isRecordable(evt); assert !internal; if (evts == null) evts = new ArrayList<>(); evts.add(F.t(evt, msg)); return evts; }