public void error(String err) { if (ctx.error == 0) { ctx.error = DataProxy.sendError(err); } }
public void error(String err) { if (ctx.error == 0) { ctx.error = DataProxy.sendError(err); } }
public static void serviceError(String emsg) { TraceContext ctx = TraceContextManager.getContext(); if (ctx != null && ctx.error != 0) { // already started ctx.error = DataProxy.sendError(emsg); } }
public static void serviceError(String emsg) { TraceContext ctx = TraceContextManager.getContext(); if (ctx != null && ctx.error != 0) { // already started ctx.error = DataProxy.sendError(emsg); } }
public ErrorData process(Throwable thr, int message, int service, long txid, int sql, int api) { if (conf.summary_enabled == false) return null; if (thr == null) return null; String errName = thr.getClass().getName(); int errHash = DataProxy.sendError(errName); ErrorData errData = getSummaryError(errorMaster, BitUtil.composite(errHash, service)); errData.error = errHash; errData.service = service; errData.message = (message == 0 ? errHash : message); errData.count++; errData.txid = txid; if (sql != 0) errData.sql = sql; if (api != 0) errData.apicall = api; return errData; }
public ErrorData process(Throwable thr, int message, int service, long txid, int sql, int api) { if (conf.summary_enabled == false) return null; if (thr == null) return null; String errName = thr.getClass().getName(); int errHash = DataProxy.sendError(errName); ErrorData errData = getSummaryError(errorMaster, BitUtil.composite(errHash, service)); errData.error = errHash; errData.service = service; errData.message = (message == 0 ? errHash : message); errData.count++; errData.txid = txid; if (sql != 0) errData.sql = sql; if (api != 0) errData.apicall = api; return errData; }
public static void dbcOpenEnd(Object stat, Throwable thr) { if (stat == null) return; LocalContext lctx = (LocalContext) stat; MethodStep step = (MethodStep) lctx.stepSingle; if (step == null) return; TraceContext tctx = lctx.context; if (tctx == null) return; step.elapsed = (int) (System.currentTimeMillis() - tctx.startTime) - step.start_time; if (tctx.profile_thread_cputime) { step.cputime = (int) (SysJMX.getCurrentThreadCPU() - tctx.startCpu) - step.start_cpu; } if (thr != null) { String msg = thr.toString(); int hash = DataProxy.sendError(msg); if (tctx.error == 0) { tctx.error = hash; } tctx.offerErrorEntity(ErrorEntity.of(connectionOpenFailException, hash, 0, 0)); } tctx.profile.pop(step); }
public static void dbcOpenEnd(Object stat, Throwable thr) { if (stat == null) return; LocalContext lctx = (LocalContext) stat; MethodStep step = (MethodStep) lctx.stepSingle; if (step == null) return; TraceContext tctx = lctx.context; if (tctx == null) return; step.elapsed = (int) (System.currentTimeMillis() - tctx.startTime) - step.start_time; if (tctx.profile_thread_cputime) { step.cputime = (int) (SysJMX.getCurrentThreadCPU() - tctx.startCpu) - step.start_cpu; } if (thr != null) { String msg = thr.toString(); int hash = DataProxy.sendError(msg); if (tctx.error == 0) { tctx.error = hash; } tctx.offerErrorEntity(ErrorEntity.of(connectionOpenFailException, hash, 0, 0)); } tctx.profile.pop(step); }
private static void fetch(TraceContext c) { HashedMessageStep p = new HashedMessageStep(); long time = System.currentTimeMillis() - c.rs_start; p.start_time = (int) (System.currentTimeMillis() - c.startTime); if (c.profile_thread_cputime) { p.start_cpu = (int) (SysJMX.getCurrentThreadCPU() - c.startCpu); } if (RESULT_SET_FETCH == 0) { RESULT_SET_FETCH = DataProxy.sendHashedMessage("RESULT-SET-FETCH"); } p.hash = RESULT_SET_FETCH; p.value = c.rs_count; p.time = (int) time; c.profile.add(p); if (c.rs_count > conf.xlog_error_jdbc_fetch_max) { String msg = "warning too many resultset, over #" + conf.xlog_error_jdbc_fetch_max; int hash = DataProxy.sendError(msg); if (c.error == 0) { c.error = hash; } c.offerErrorEntity(ErrorEntity.of(tooManyRecordException, hash, 0,0)); } }
private static void fetch(TraceContext c) { HashedMessageStep p = new HashedMessageStep(); long time = System.currentTimeMillis() - c.rs_start; p.start_time = (int) (System.currentTimeMillis() - c.startTime); if (c.profile_thread_cputime) { p.start_cpu = (int) (SysJMX.getCurrentThreadCPU() - c.startCpu); } if (RESULT_SET_FETCH == 0) { RESULT_SET_FETCH = DataProxy.sendHashedMessage("RESULT-SET-FETCH"); } p.hash = RESULT_SET_FETCH; p.value = c.rs_count; p.time = (int) time; c.profile.add(p); if (c.rs_count > conf.xlog_error_jdbc_fetch_max) { String msg = "warning too many resultset, over #" + conf.xlog_error_jdbc_fetch_max; int hash = DataProxy.sendError(msg); if (c.error == 0) { c.error = hash; } c.offerErrorEntity(ErrorEntity.of(tooManyRecordException, hash, 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)); } } }
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 endSocket(Object stat, Throwable thr) { if (stat == null) { return; } try { LocalContext lctx = (LocalContext) stat; TraceContext tctx = lctx.context; SocketStep step = (SocketStep) lctx.stepSingle; step.elapsed = (int) (System.currentTimeMillis() - tctx.startTime) - step.start_time; if (thr != null) { String msg = thr.toString(); step.error = DataProxy.sendError(msg); if (tctx.error == 0) { tctx.error = step.error; } tctx.offerErrorEntity(ErrorEntity.of(thr, step.error, 0, 0)); } tctx.profile.add(step); SocketTable.add(step.ipaddr, step.port, tctx.serviceHash, tctx.txid); Configure conf = Configure.getInstance(); if (conf.profile_socket_open_fullstack_enabled) { if (conf.profile_socket_open_fullstack_port == 0 || conf.profile_socket_open_fullstack_port == step.port) { tctx.profile.add(new MessageStep(step.start_time, ThreadUtil.getThreadStack())); } } } catch (Throwable t) { Logger.println("A142", "socket trace close error", t); } } public static void open(File file) {
public static void endSocket(Object stat, Throwable thr) { if (stat == null) { return; } try { LocalContext lctx = (LocalContext) stat; TraceContext tctx = lctx.context; SocketStep step = (SocketStep) lctx.stepSingle; step.elapsed = (int) (System.currentTimeMillis() - tctx.startTime) - step.start_time; if (thr != null) { String msg = thr.toString(); step.error = DataProxy.sendError(msg); if (tctx.error == 0) { tctx.error = step.error; } tctx.offerErrorEntity(ErrorEntity.of(thr, step.error, 0, 0)); } tctx.profile.add(step); SocketTable.add(step.ipaddr, step.port, tctx.serviceHash, tctx.txid); Configure conf = Configure.getInstance(); if (conf.profile_socket_open_fullstack_enabled) { if (conf.profile_socket_open_fullstack_port == 0 || conf.profile_socket_open_fullstack_port == step.port) { tctx.profile.add(new MessageStep(step.start_time, ThreadUtil.getThreadStack())); } } } catch (Throwable t) { Logger.println("A142", "socket trace close error", t); } } public static void open(File file) {
public static XLogPack txperf(long endtime, long txid, int service_hash, String serviceName, int elapsed, int cpu, int sqlCount, int sqlTime, String remoteAddr, String error, long visitor) { XLogPack pack = new XLogPack(); pack.cpu = cpu; pack.endTime = endtime; pack.elapsed = elapsed; DataProxy.sendServiceName(service_hash, serviceName); pack.service = service_hash; pack.kbytes = 0; pack.status = 0; pack.sqlCount = sqlCount; pack.sqlTime = sqlTime; pack.txid = txid; pack.ipaddr = IPUtil.toBytes(remoteAddr); pack.userid = visitor; if (error != null) { pack.error = DataProxy.sendError(error); } MeterService.getInstance().add(pack.elapsed, pack.sqlTime, pack.apicallTime, pack.queuingTime, error != null); DataProxy.sendXLog(pack); MeterUsers.add(pack.userid); return pack; }
public static XLogPack txperf(long endtime, long txid, int service_hash, String serviceName, int elapsed, int cpu, int sqlCount, int sqlTime, String remoteAddr, String error, long visitor) { XLogPack pack = new XLogPack(); pack.cpu = cpu; pack.endTime = endtime; pack.elapsed = elapsed; DataProxy.sendServiceName(service_hash, serviceName); pack.service = service_hash; pack.kbytes = 0; pack.status = 0; pack.sqlCount = sqlCount; pack.sqlTime = sqlTime; pack.txid = txid; pack.ipaddr = IPUtil.toBytes(remoteAddr); pack.userid = visitor; if (error != null) { pack.error = DataProxy.sendError(error); } MeterService.getInstance().add(pack.elapsed, pack.sqlTime, pack.apicallTime, pack.queuingTime, error != null); DataProxy.sendXLog(pack); MeterUsers.add(pack.userid); return pack; }
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); }