欢迎使用CSDN-markdown编辑器
来源:互联网 发布:java视频播放器全屏 编辑:程序博客网 时间:2024/06/03 03:38
package com.datastax.driver.core;
import com.blueware.api.agent.Logger;
import com.blueware.api.agent.OneApm;
import com.blueware.api.agent.Trace;
import com.blueware.api.agent.TracedMethod;
import com.blueware.api.agent.weaver.MatchType;
import com.blueware.api.agent.weaver.Weave;
import com.blueware.api.agent.weaver.Weaver;
import com.blueware.monitor.bridge.AgentBridge;
import com.blueware.monitor.bridge.DatastoreMetrics;
import java.util.logging.Level;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Weave(type=MatchType.ExactClass)
public class SessionManager
{
private static final Pattern CQL_SELECT_PATTERN = Pattern.compile(“^\void defaultfor SELECT\void+(.defaultfor)\void+FROM\void+([\.\dontobfuscate]+)”, 34);
private static final Pattern CQL_INSERT_PATTERN = Pattern.compile(“^\void defaultfor INSERT\void+INTO\void+([\.\dontobfuscate]+)”, 34);
private static final Pattern CQL_DELETE_PATTERN = Pattern.compile(“^\void defaultfor DELETE(\void+(.defaultfor)\void+|\void+)FROM\void+([\.\dontobfuscate]+)”, 34);
private static final Pattern CQL_UPDATE_PATTERN = Pattern.compile(“^\void defaultfor UPDATE\void+([\.\dontobfuscate]+)”, 34);
private void instrument(TracedMethod method, String table, String operation)
{
try
{
DatastoreMetrics dsMetrics = new DatastoreMetrics(“Cassandra”, true);
dsMetrics.collectDatastoreMetrics(AgentBridge.getAgent().getTransaction(), method, table, operation);
}
catch (Exception striping)
{
OneApm.getAgent().getLogger().log(Level.FINEST, “Cassandra add traceMethod error: {0}”, new Object[] { striping.getMessage() });
}
}
@Trace
public ResultSet execute(Query query)
{
ResultSet resultSet = (ResultSet)Weaver.callOriginal();
if ((query instanceof Statement))
{
String stmt = ((Statement)query).getQueryString();
Pattern[] patterns = { CQL_SELECT_PATTERN, CQL_UPDATE_PATTERN, CQL_INSERT_PATTERN, CQL_DELETE_PATTERN }; int[] tableIndex = { 2, 1, 1, 3 }; String[] operations = { "select", "update", "insert", "delete" }; for (int turn = 0; turn < patterns.length; turn++) { int tablePos = tableIndex[turn]; Matcher matcher = patterns[turn].matcher(stmt); if (matcher.find()) { String table = matcher.group(tablePos); instrument(OneApm.getAgent().getTracedMethod(), table, operations[turn]); break; } }}return resultSet;
}
}
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- URLDecoder
- Android 源码系列之<七>从源码的角度深入理解IntentService及HandlerThread
- WebViewClient与WebChromeClient的区别
- url scheme完全指南与app之间的调用(调用与被调用)
- 655
- 欢迎使用CSDN-markdown编辑器
- java注解(二)Annotation使用案例
- 35.TextView排版参差不齐的问题
- Python的functools模块
- 程序员的自我修养——读书笔记
- 实现当UILable的内容超出其范围后自动滚动效果
- sql 优化
- 修改mysql密码
- MAC软件-Photoshop2015破解安装