public static void sendAlert(byte level, String title, String emsg, MapValue tags) { long now = System.currentTimeMillis(); if (title == null) title = "none"; Long last = sendTimeTable.get(title); if (last == null || now - last.longValue() >= conf.alert_send_interval_ms) { sendTimeTable.put(title, now); DataProxy.sendAlert(level, title, StringUtil.limiting(emsg, conf.alert_message_length), tags); } } }
public static void sendAlert(byte level, String title, String emsg, MapValue tags) { long now = System.currentTimeMillis(); if (title == null) title = "none"; Long last = sendTimeTable.get(title); if (last == null || now - last.longValue() >= conf.alert_send_interval_ms) { sendTimeTable.put(title, now); DataProxy.sendAlert(level, title, StringUtil.limiting(emsg, conf.alert_message_length), tags); } } }
private void alertMem(Mem m) { Configure conf = Configure.getInstance(); if(conf.mem_alert_enabled==false) return; long fmem = m.getActualFree(); float memrate = (float) m.getUsedPercent(); long now = System.currentTimeMillis(); if (memrate >= conf.mem_fatal_pct) { if (now >= mem_last_fatal + conf.mem_alert_interval_ms) { DataProxy.sendAlert(AlertLevel.FATAL, "FATAL_MEMORY_HIGH", "fatal mem usage free=" + prt(fmem) + " rate=" + memrate + "%", null); mem_last_fatal = now; } return; } if (memrate >= conf.mem_warning_pct) { if (now >= mem_last_warning + conf.mem_alert_interval_ms) { DataProxy.sendAlert(AlertLevel.WARN, "WARNING_MEMORY_HIGH", "warning mem usage free=" + prt(fmem) + " rate=" + memrate + "%", null); mem_last_warning = now; } return; } }
if (f >= conf.cpu_fatal_history) { if (now >= cpu_last_fatal + conf.cpu_alert_interval_ms) { DataProxy.sendAlert(AlertLevel.FATAL, "FATAL_CPU_HIGH", "cpu high " + nextCpu + "%", null); cpu_last_fatal = now; if (f + w >= conf.cpu_warning_history) { if (now >= cpu_last_warning + conf.cpu_alert_interval_ms) { DataProxy.sendAlert(AlertLevel.WARN, "WARNING_CPU_HIGH", "cpu high " + nextCpu + "%", null); cpu_last_warning = now;
public static void endPut(Map map) { int size = map.size(); if(size > 0 && size % conf._hook_map_impl_warning_size == 0) { TraceContext ctx = TraceContextManager.getContext(); if(ctx == null) return; if(ctx.error != 0) return; MapValue mv = new MapValue(); mv.put(AlertPack.HASH_FLAG + TextTypes.SERVICE + "_service-name", ctx.serviceHash); String message = "Too many Map entries!\n" + ThreadUtil.getStackTrace(Thread.currentThread().getStackTrace(), 2); HashedMessageStep step = new HashedMessageStep(); step.hash = DataProxy.sendHashedMessage(message); step.value = size; step.start_time = (int) (System.currentTimeMillis() - ctx.startTime); ctx.profile.add(step); mv.put(AlertPack.HASH_FLAG + TextTypes.HASH_MSG + "_full-stack", step.hash); DataProxy.sendAlert(AlertLevel.WARN, "TOO_MANY_MAP_ENTRIES", "too many Map entries, over #" + size, mv); int errorMessageHash = DataProxy.sendError("too many Map entries, over #" + size); if (ctx.error == 0) { ctx.error = errorMessageHash; } ctx.offerErrorEntity(ErrorEntity.of(tooManyCollectionMemebers, errorMessageHash, 0, 0)); } } }
public static void endPut(Map map) { int size = map.size(); if(size > 0 && size % conf._hook_map_impl_warning_size == 0) { TraceContext ctx = TraceContextManager.getContext(); if(ctx == null) return; if(ctx.error != 0) return; MapValue mv = new MapValue(); mv.put(AlertPack.HASH_FLAG + TextTypes.SERVICE + "_service-name", ctx.serviceHash); String message = "Too many Map entries!\n" + ThreadUtil.getStackTrace(Thread.currentThread().getStackTrace(), 2); HashedMessageStep step = new HashedMessageStep(); step.hash = DataProxy.sendHashedMessage(message); step.value = size; step.start_time = (int) (System.currentTimeMillis() - ctx.startTime); ctx.profile.add(step); mv.put(AlertPack.HASH_FLAG + TextTypes.HASH_MSG + "_full-stack", step.hash); DataProxy.sendAlert(AlertLevel.WARN, "TOO_MANY_MAP_ENTRIES", "too many Map entries, over #" + size, mv); int errorMessageHash = DataProxy.sendError("too many Map entries, over #" + size); if (ctx.error == 0) { ctx.error = errorMessageHash; } ctx.offerErrorEntity(ErrorEntity.of(tooManyCollectionMemebers, errorMessageHash, 0, 0)); } } }
private void alert(LeakInfo2 leakInfo2) { ServiceSummary summary = ServiceSummary.getInstance(); MapValue mv = new MapValue(); mv.put(AlertPack.HASH_FLAG + TextTypes.SERVICE + "_service-name", leakInfo2.serviceHash); if (leakInfo2.fullstack) { ErrorData d = summary.process(leakInfo2.error, 0, leakInfo2.serviceHash, leakInfo2.txid, 0, 0); Logger.println("A156", leakInfo2.error + " " + leakInfo2.innerObject); if (d != null && d.fullstack == 0) { String fullstack = ThreadUtil.getStackTrace(leakInfo2.error.getStackTrace(), leakInfo2.fullstackSkip); d.fullstack = DataProxy.sendError(fullstack); Logger.println("A157", fullstack); } mv.put(AlertPack.HASH_FLAG + TextTypes.ERROR + "_full-stack", d.fullstack); } else { summary.process(leakInfo2.error, 0, leakInfo2.serviceHash, leakInfo2.txid, 0, 0); Logger.println("A179", leakInfo2.error + " " + leakInfo2.innerObject); } DataProxy.sendAlert(AlertLevel.WARN, "CONNECTION_NOT_CLOSE", "Connection may not closed", mv); if(conf._trace) Logger.trace("[Force-Close-InnerObject]" + System.identityHashCode(leakInfo2.innerObject)); boolean closeResult = leakInfo2.closeManager.close(leakInfo2.innerObject); //Logger.println("G003", "connection auto closed:" + closeResult); }
private void alert(LeakInfo2 leakInfo2) { ServiceSummary summary = ServiceSummary.getInstance(); MapValue mv = new MapValue(); mv.put(AlertPack.HASH_FLAG + TextTypes.SERVICE + "_service-name", leakInfo2.serviceHash); if (leakInfo2.fullstack) { ErrorData d = summary.process(leakInfo2.error, 0, leakInfo2.serviceHash, leakInfo2.txid, 0, 0); Logger.println("A156", leakInfo2.error + " " + leakInfo2.innerObject); if (d != null && d.fullstack == 0) { String fullstack = ThreadUtil.getStackTrace(leakInfo2.error.getStackTrace(), leakInfo2.fullstackSkip); d.fullstack = DataProxy.sendError(fullstack); Logger.println("A157", fullstack); } mv.put(AlertPack.HASH_FLAG + TextTypes.ERROR + "_full-stack", d.fullstack); } else { summary.process(leakInfo2.error, 0, leakInfo2.serviceHash, leakInfo2.txid, 0, 0); Logger.println("A179", leakInfo2.error + " " + leakInfo2.innerObject); } DataProxy.sendAlert(AlertLevel.WARN, "CONNECTION_NOT_CLOSE", "Connection may not closed", mv); if(conf._trace) Logger.trace("[Force-Close-InnerObject]" + System.identityHashCode(leakInfo2.innerObject)); boolean closeResult = leakInfo2.closeManager.close(leakInfo2.innerObject); //Logger.println("G003", "connection auto closed:" + closeResult); }
private void alert(LeakInfo leakInfo) { ServiceSummary summary = ServiceSummary.getInstance(); MapValue mv = new MapValue(); mv.put(AlertPack.HASH_FLAG + TextTypes.SERVICE + "_service-name", leakInfo.serviceHash); if (leakInfo.fullstack) { ErrorData d = summary.process(leakInfo.error, 0, leakInfo.serviceHash, leakInfo.txid, 0, 0); Logger.println("A156", leakInfo.error + " " + leakInfo.inner); if (d != null && d.fullstack == 0) { String fullstack = ThreadUtil.getStackTrace(leakInfo.error.getStackTrace(), leakInfo.fullstackSkip); d.fullstack = DataProxy.sendError(fullstack); Logger.println("A157", fullstack); } mv.put(AlertPack.HASH_FLAG + TextTypes.ERROR + "_full-stack", d.fullstack); } else { summary.process(leakInfo.error, 0, leakInfo.serviceHash, leakInfo.txid, 0, 0); Logger.println("A179", leakInfo.error + " " + leakInfo.inner); } DataProxy.sendAlert(AlertLevel.WARN, "CONNECTION_NOT_CLOSE", "Connection may not closed", mv); }
private void alert(LeakInfo leakInfo) { ServiceSummary summary = ServiceSummary.getInstance(); MapValue mv = new MapValue(); mv.put(AlertPack.HASH_FLAG + TextTypes.SERVICE + "_service-name", leakInfo.serviceHash); if (leakInfo.fullstack) { ErrorData d = summary.process(leakInfo.error, 0, leakInfo.serviceHash, leakInfo.txid, 0, 0); Logger.println("A156", leakInfo.error + " " + leakInfo.inner); if (d != null && d.fullstack == 0) { String fullstack = ThreadUtil.getStackTrace(leakInfo.error.getStackTrace(), leakInfo.fullstackSkip); d.fullstack = DataProxy.sendError(fullstack); Logger.println("A157", fullstack); } mv.put(AlertPack.HASH_FLAG + TextTypes.ERROR + "_full-stack", d.fullstack); } else { summary.process(leakInfo.error, 0, leakInfo.serviceHash, leakInfo.txid, 0, 0); Logger.println("A179", leakInfo.error + " " + leakInfo.inner); } DataProxy.sendAlert(AlertLevel.WARN, "CONNECTION_NOT_CLOSE", "Connection may not closed", mv); }
public static void sendAlert(byte level, String title, String emsg, MapValue tags) { long now = System.currentTimeMillis(); if (title == null) title = "none"; Long last = sendTimeTable.get(title); if (last == null || now - last.longValue() >= conf.alert_send_interval_ms) { sendTimeTable.put(title, now); DataProxy.sendAlert(level, title, StringUtil.limiting(emsg, conf.alert_message_length), tags); } } }
public static void endPut(Map map) { int size = map.size(); if(size > 0 && size % conf._hook_map_impl_warning_size == 0) { TraceContext ctx = TraceContextManager.getContext(); if(ctx == null) return; if(ctx.error != 0) return; MapValue mv = new MapValue(); mv.put(AlertPack.HASH_FLAG + TextTypes.SERVICE + "_service-name", ctx.serviceHash); String message = "Too many Map entries!\n" + ThreadUtil.getStackTrace(Thread.currentThread().getStackTrace(), 2); HashedMessageStep step = new HashedMessageStep(); step.hash = DataProxy.sendHashedMessage(message); step.value = size; step.start_time = (int) (System.currentTimeMillis() - ctx.startTime); ctx.profile.add(step); mv.put(AlertPack.HASH_FLAG + TextTypes.HASH_MSG + "_full-stack", step.hash); DataProxy.sendAlert(AlertLevel.WARN, "TOO_MANY_MAP_ENTRIES", "too many Map entries, over #" + size, mv); int errorMessageHash = DataProxy.sendError("too many Map entries, over #" + size); if (ctx.error == 0) { ctx.error = errorMessageHash; } ctx.offerErrorEntity(ErrorEntity.of(tooManyCollectionMemebers, errorMessageHash, 0, 0)); } } }
private void alert(LeakInfo2 leakInfo2) { ServiceSummary summary = ServiceSummary.getInstance(); MapValue mv = new MapValue(); mv.put(AlertPack.HASH_FLAG + TextTypes.SERVICE + "_service-name", leakInfo2.serviceHash); if (leakInfo2.fullstack) { ErrorData d = summary.process(leakInfo2.error, 0, leakInfo2.serviceHash, leakInfo2.txid, 0, 0); Logger.println("A156", leakInfo2.error + " " + leakInfo2.innerObject); if (d != null && d.fullstack == 0) { String fullstack = ThreadUtil.getStackTrace(leakInfo2.error.getStackTrace(), leakInfo2.fullstackSkip); d.fullstack = DataProxy.sendError(fullstack); Logger.println("A157", fullstack); } mv.put(AlertPack.HASH_FLAG + TextTypes.ERROR + "_full-stack", d.fullstack); } else { summary.process(leakInfo2.error, 0, leakInfo2.serviceHash, leakInfo2.txid, 0, 0); Logger.println("A179", leakInfo2.error + " " + leakInfo2.innerObject); } DataProxy.sendAlert(AlertLevel.WARN, "CONNECTION_NOT_CLOSE", "Connection may not closed", mv); if(conf._trace) Logger.trace("[Force-Close-InnerObject]" + System.identityHashCode(leakInfo2.innerObject)); boolean closeResult = leakInfo2.closeManager.close(leakInfo2.innerObject); //Logger.println("G003", "connection auto closed:" + closeResult); }
private void alert(LeakInfo leakInfo) { ServiceSummary summary = ServiceSummary.getInstance(); MapValue mv = new MapValue(); mv.put(AlertPack.HASH_FLAG + TextTypes.SERVICE + "_service-name", leakInfo.serviceHash); if (leakInfo.fullstack) { ErrorData d = summary.process(leakInfo.error, 0, leakInfo.serviceHash, leakInfo.txid, 0, 0); Logger.println("A156", leakInfo.error + " " + leakInfo.inner); if (d != null && d.fullstack == 0) { String fullstack = ThreadUtil.getStackTrace(leakInfo.error.getStackTrace(), leakInfo.fullstackSkip); d.fullstack = DataProxy.sendError(fullstack); Logger.println("A157", fullstack); } mv.put(AlertPack.HASH_FLAG + TextTypes.ERROR + "_full-stack", d.fullstack); } else { summary.process(leakInfo.error, 0, leakInfo.serviceHash, leakInfo.txid, 0, 0); Logger.println("A179", leakInfo.error + " " + leakInfo.inner); } DataProxy.sendAlert(AlertLevel.WARN, "CONNECTION_NOT_CLOSE", "Connection may not closed", mv); }