private EvictionInternalScanner(String action, RegionCoprocessorEnvironment env, InternalScanner scanner) { this.triggeringAction = action; this.env = env; this.scanner = scanner; this.consumerInstance = new ConsumerInstance(0, 0); }
if (consumerConfig.getNumGroups() == 0) { return true; if (consumerConfig.getNumGroups() < 0) { return false; byte[] startRow = consumerConfig.getStartRow(consumerInstance); if (startRow != null && compareRowKey(cell, startRow) < 0) { consumedGroups++; return consumedGroups == consumerConfig.getNumGroups() || compareRowKey(result.get(0), consumerConfig.getSmallestStartRow()) < 0;
@Override public void start(CoprocessorEnvironment env) { if (env instanceof RegionCoprocessorEnvironment) { String tableName = ((RegionCoprocessorEnvironment) env).getRegion().getTableDesc().getNameAsString(); String configTableName = QueueUtils.determineQueueConfigTableName(tableName); appName = HBaseQueueAdmin.getApplicationName(tableName); flowName = HBaseQueueAdmin.getFlowName(tableName); configCache = ConsumerConfigCache.getInstance(env.getConfiguration(), Bytes.toBytes(configTableName)); } }
/** * Returns {@code true} if the given {@link org.apache.hadoop.hbase.KeyValue} has a * {@link ConsumerEntryState#PROCESSED} state and also put the consumer information into the * given {@link ConsumerInstance}. Otherwise, returns {@code false} and the {@link ConsumerInstance} is * left untouched. */ private boolean isProcessed(Cell cell, ConsumerInstance consumerInstance) { int stateIdx = cell.getValueOffset() + cell.getValueLength() - 1; boolean processed = cell.getValueArray()[stateIdx] == ConsumerEntryState.PROCESSED.getState(); if (processed) { // Column is "s<groupId>" long groupId = Bytes.toLong(cell.getQualifierArray(), cell.getQualifierOffset() + 1); // Value is "<writePointer><instanceId><state>" int instanceId = Bytes.toInt(cell.getValueArray(), cell.getValueOffset() + Bytes.SIZEOF_LONG); consumerInstance.setGroupInstance(groupId, instanceId); } return processed; } }
currentQueue = queueName.toBytes(); currentQueueRowPrefix = QueueEntryRow.getQueueRowPrefix(queueName); consumerConfig = configCache.getConsumerConfig(currentQueue);