public static boolean isGroupByCounterEventWithTag(JetstreamEvent event, Map<String, String> tags) { boolean result = false; if ((event != null) && event.getEventType().contains(COUNTERGROUPBYEVENT)) { Set<String> keys = event.keySet(); String[] keyArray = keys.toArray(new String[0]); for (int i = 0; i < keyArray.length; i++) { if (keyArray[i].contains(COUNTERGROUPBYEVENTTAG)) { result = true; if (tags != null) { tags.put(keyArray[i], String.valueOf(event.get(keyArray[i]))); } } } if (event.getEventType().contains(COUNTERGROUPBYMETICTIMEEVENT)) { tags.put(TAG_METRICTIME, String.valueOf(event.get(MCConstant.METRIC_TIME))); } } return result; }
private void processSessionizableEvent(JetstreamEvent event, Sessionizer sessionizer, SessionizationInfo info) { counters.get(Integer.valueOf(sessionizer.getType())).incRawEvents(); String identifier = info.getIdentifier(); String ak = (String) event.get(AFFINITY_KEY); if (ak == null) { ak = identifier; } processNormalEvent(identifier, event, sessionizer, ak, info); }
private void postMetricFromEvent(JetstreamEvent event) { MetricDef metricDef = new MetricDef(); metricDef.setMetricName((String) event.get(VALIDATION_TYPE)); Long time = (Long) event.get("timestamp"); if (currentMaxTime < time) { currentMaxTime = time; } long metricTime = (time / ONE_HOUR) * ONE_HOUR; try { String groupName = ThreadSafeDateParser.format(new Date(time), DATEPATTERN, TIMEZONE); metricDef.setMetricGroup(groupName); } catch (ParseException e) { LOGGER.warn("failed to format date from time:" + time); } metricDef.setMetricTime(metricTime); metricDef.setFrequency(ONE_MINUTE); metricDef.setMetricTable(event.getEventType()); metricDef.setAffinityKey(event.get(affinityKey)); metricDef.setTopics(event.getForwardingTopics()); updateMetric(metricDef); }
postAlert( "The topic: " + event.get(JetstreamReservedKeys.EventReplayTopic.toString()) + " has issue, replay occurs on replay agent", AlertStrength.RED); postAlert( "The topic: " + event.get(JetstreamReservedKeys.EventReplayTopic.toString()) + " has issue, replay occurs on replay agent", AlertStrength.RED);
@Override public void sendEvent(JetstreamEvent event) throws EventException { String key = JetstreamReservedKeys.EventReplayTopic.toString(); if (event.containsKey(key)) { String retryTopic = (String) event.get(key); if (retryTopic != null && retryTopic.length() != 0) { retryTopic = "Replay-" + retryTopic.replaceAll("/", "-"); event.setForwardingTopics(new String[] { retryTopic }); } } super.sendEvent(event); } }
private void handleInternalEvent(JetstreamEvent event, String eventType) { Integer sessionType = (Integer) event.get(Constants.EVENT_PAYLOAD_SESSION_TYPE); if (sessionType == null) { errorManager.registerError("Session type Missed", ErrorType.MissedData, "Session type not found in event"); return; String uid = (String) event.get(Constants.EVENT_PAYLOAD_SESSION_UNIQUEID); if (uid == null) { errorManager.registerError("Can not find unique session id", ErrorType.Unexpected,
@Override public void sendEvent(JetstreamEvent event) throws EventException { String key = JetstreamReservedKeys.EventReplayTopic.toString(); if (event.containsKey(key)) { String retryTopic = (String) event.get(key); if (retryTopic != null && retryTopic.length() != 0) { retryTopic = "Replay-" + retryTopic.replaceAll("/", "-"); event.setForwardingTopics(new String[] { retryTopic }); } } super.sendEvent(event); } }
handleRawEvent(uid, identifier, null, firstEvent, sessionizer, info); } else if (Constants.EVENT_TYPE_SESSION_TRANSFERED_EVENT.equals(firstEvent.getEventType())) { Session session = (Session) firstEvent.get(Constants.EVENT_PAYLOAD_SESSION_OBJ); if (session != null) { updateRemoteSession(uid, identifier, session, sessionizer);
public Session reconstructSession(JetstreamEvent event, String uid) { Session session = new Session(); byte[] payload = (byte[]) event.get(Constants.EVENT_PAYLOAD_SESSION_PAYLOAD); if (payload == null) { return null; } byte[] metaData = (byte[]) event.get(Constants.EVENT_PAYLOAD_SESSION_METADATA); if (metaData == null) { return null; } if (!BinaryFormatSerializer.getInstance().setSessionPayload(session, ByteBuffer.wrap(payload))) { return null; } if (!BinaryFormatSerializer.getInstance().setSessionMetadata(session, ByteBuffer.wrap(metaData))) { return null; } session.setType(Integer.valueOf(uid.substring(0, uid.indexOf(':')))); session.setIdentifier(uid.substring(uid.indexOf(':') + 1)); return session; }
String ak = (String) event.get(AFFINITY_KEY); if (ak == null) { ak = "";
private void execute(BoundStatement q, JetstreamEvent event) { try { ResultSetFuture future = cassandraSession.executeAsync(q); CallBackListener listener = new CallBackListener(future, event); future.addListener(listener, pool); pendingRequestCounter.incrementAndGet(); } catch (Throwable ex) { LOGGER.error( "Error publising metrics in MetricCassandraCollector:" + ex.getMessage()); cassandraErrorCount.increment(); if (event.get(JetstreamReservedKeys.MessageAffinityKey.toString()) == null) { event.put(JetstreamReservedKeys.MessageAffinityKey.toString(), (String) event.get(MCConstant.METRIC_NAME)); } getAdviceListener().retry(event, RetryEventCode.MSG_RETRY, ex.getMessage()); eventSentToAdviceListener.increment(); registerError(ex); } }
@Override public void run() { pendingRequestCounter.decrementAndGet(); try { future.getUninterruptibly(); } catch (DriverException e) { cassandraErrorCount.increment(); if (event != null) { if (event.get(JetstreamReservedKeys.MessageAffinityKey .toString()) == null) { event.put(JetstreamReservedKeys.MessageAffinityKey .toString(), (String) event .get(MCConstant.METRIC_NAME)); } getAdviceListener().retry(event, RetryEventCode.MSG_RETRY, e.getMessage()); eventSentToAdviceListener.increment(); } registerError(e); } } }
incrementEventSentCounter(); Object metricNameInEvent = event .get(MCConstant.METRIC_NAME); if ((!EVPS_SEND_COUNT.equals(metricNameInEvent)) && (!CASSANDRA_SEND_COUNT.equals(metricNameInEvent))) {
@Override public void sendEvent(JetstreamEvent event) throws EventException { if (isPaused() || shutdownFlag.get()) { super.incrementEventDroppedCounter(); return; } if (MCCounterHelper.isGroupByCounterEvent(event)) { if (!connected.get()) { if (config.getEnableCassandra()) { if (event.get(JetstreamReservedKeys.MessageAffinityKey .toString()) == null) { event.put(JetstreamReservedKeys.MessageAffinityKey .toString(), (String) event .get(MCConstant.METRIC_NAME)); } getAdviceListener().retry(event, RetryEventCode.MSG_RETRY, "Cassandra Down"); eventSentToAdviceListener.increment(); } else { super.incrementEventDroppedCounter(); } return; } incrementEventRecievedCounter(); m_lastEvent = event; publishAsync(event); } }
@Override public BatchResponse onNextBatch(BatchSource source, Collection<JetstreamEvent> events) throws EventException { // check if it's time to send the batch, check the delay time of the // lastEvent, if it's no time to send the batch, tell the IKC to wait // and resend this batch long start = System.currentTimeMillis(); if (getReplayConfig().getTimestampKey() != null && getReplayConfig().getDelayInMs() > 0) { JetstreamEvent[] eventArr = events .toArray(new JetstreamEvent[events.size()]); JetstreamEvent lastEvent = eventArr[eventArr.length - 1]; Long ts = (Long) lastEvent.get(getReplayConfig().getTimestampKey()); if (ts != null) { long v = ts + getReplayConfig().getDelayInMs() - start; if (v > 0) { incrementEventRecievedCounter(events.size()); incrementEventDelayedCounter(events.size()); return BatchResponse.getNextBatch() .setOffset(source.getHeadOffset()) .setWaitTimeInMs(v); } } } return super.onNextBatch(source, events); }
session.setAffinityKey((String) event.get(AFFINITY_KEY)); if (session.getAffinityKey() == null) { session.setAffinityKey(identifier);
private void handleExpiredSession(String identifier, String uid, JetstreamEvent event, Sessionizer sessionizer) { String ak = (String) event.get(AFFINITY_KEY); Session localSession = localSessionCache.get(uid);
public Session createNewSession(String identifier, JetstreamEvent event, long currentTimestamp, SessionizationInfo info) { Session session = new Session(); session.setIdentifier(identifier); session.setAffinityKey((String) event.get(AFFINITY_KEY)); if (session.getAffinityKey() == null) { session.setAffinityKey(identifier); } session.setType(getType()); if (info.getTtl() > 0) { session.setTtl(Math.min(info.getTtl(), maxSessionIdleTime)); } else { session.setTtl(Math.min(this.defaultTtl, maxSessionIdleTime)); } long eventTimestamp = info.getTimestamp(); session.setFirstEventTimestamp(eventTimestamp); session.setCreationTime(currentTimestamp); session.setLastModifiedTime(currentTimestamp); session.setExpirationTime(currentTimestamp + session.getTtl()); session.setEventCount(0); initSessionData(event, session); if (mainSessionProfile.getBeginMarker() != null) { sessionBegin(session); } return session; }
event.addMetaData(Constants.REPLAY_LAST_TS, current); } else if (event.containsKey(Constants.REPLAY_LAST_TS)) { long initTs = (Long) event.get(Constants.REPLAY_INITIAL_TS);