@Override public void start(CoprocessorEnvironment env) throws IOException { if (env instanceof RegionCoprocessorEnvironment && ((RegionCoprocessorEnvironment) env).getRegionInfo().getTable() != null && ((RegionCoprocessorEnvironment) env).getRegionInfo().getTable() .equals(TableName.META_TABLE_NAME)) { regionCoprocessorEnv = (RegionCoprocessorEnvironment) env; observer = new ExampleRegionObserverMeta(); requestsMap = new ConcurrentHashMap<>(); clientMetricsLossyCounting = new LossyCounting(); // only be active mode when this region holds meta table. active = true; } else { observer = new ExampleRegionObserverMeta(); } }
private void clientMetricRegisterAndMark(ObserverContext<RegionCoprocessorEnvironment> e) { String clientIP = RpcServer.getRemoteIp() != null ? RpcServer.getRemoteIp().toString() : ""; String clientRequestMeter = clientRequestMeterName(clientIP); registerLossyCountingMeterIfNotPresent(e, clientRequestMeter, clientMetricsLossyCounting); markMeterIfPresent(clientRequestMeter); }
private void tableMetricRegisterAndMark(ObserverContext<RegionCoprocessorEnvironment> e, Row op) { // Mark the meta table meter whenever the coprocessor is called String tableName = getTableNameFromOp(op); String tableRequestMeter = tableMeterName(tableName); registerMeterIfNotPresent(e, tableRequestMeter); markMeterIfPresent(tableRequestMeter); }
private void opWithClientMetricRegisterAndMark(ObserverContext<RegionCoprocessorEnvironment> e, Object op) { String opWithClientMeterName = opWithClientMeterName(op); registerMeterIfNotPresent(e, opWithClientMeterName); markMeterIfPresent(opWithClientMeterName); }
private void opMetricRegisterAndMark(ObserverContext<RegionCoprocessorEnvironment> e, Row op) { String opMeterName = opMeterName(op); registerMeterIfNotPresent(e, opMeterName); markMeterIfPresent(opMeterName); }
@Override public void preDelete(ObserverContext<RegionCoprocessorEnvironment> e, Delete delete, WALEdit edit, Durability durability) throws IOException { if (!active || !isMetaTableOp(e)) { return; } tableMetricRegisterAndMark(e, delete); clientMetricRegisterAndMark(e); regionMetricRegisterAndMark(e, delete); opMetricRegisterAndMark(e, delete); opWithClientMetricRegisterAndMark(e, delete); }
@Override public void prePut(ObserverContext<RegionCoprocessorEnvironment> e, Put put, WALEdit edit, Durability durability) throws IOException { if (!active || !isMetaTableOp(e)) { return; } tableMetricRegisterAndMark(e, put); clientMetricRegisterAndMark(e); regionMetricRegisterAndMark(e, put); opMetricRegisterAndMark(e, put); opWithClientMetricRegisterAndMark(e, put); }
private void regionMetricRegisterAndMark(ObserverContext<RegionCoprocessorEnvironment> e, Row op) { // Mark the meta table meter whenever the coprocessor is called String regionId = getRegionIdFromOp(op); String regionRequestMeter = regionMeterName(regionId); registerMeterIfNotPresent(e, regionRequestMeter); markMeterIfPresent(regionRequestMeter); }
@Override public void preGetOp(ObserverContext<RegionCoprocessorEnvironment> e, Get get, List<Cell> results) throws IOException { if (!active || !isMetaTableOp(e)) { return; } tableMetricRegisterAndMark(e, get); clientMetricRegisterAndMark(e); regionMetricRegisterAndMark(e, get); opMetricRegisterAndMark(e, get); opWithClientMetricRegisterAndMark(e, get); }