if (currentQueue == null || !QueueEntryRow.isQueueEntry(currentQueueRowPrefix, cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())) { QueueName queueName = QueueEntryRow.getQueueName( appName, flowName, cell.getRowArray(), cell.getRowOffset(), cell.getRowLength()); currentQueue = queueName.toBytes(); currentQueueRowPrefix = QueueEntryRow.getQueueRowPrefix(queueName); consumerConfig = configCache.getConsumerConfig(currentQueue);
if (!QueueEntryRow.isDataColumn(cell.getQualifierArray(), cell.getQualifierOffset())) { skippedIncomplete++; return false; if (!QueueEntryRow.isMetaColumn(cell.getQualifierArray(), cell.getQualifierOffset())) { skippedIncomplete++; return false; if (!QueueEntryRow.isStateColumn(cell.getQualifierArray(), cell.getQualifierOffset())) { continue;
@Override public void filterRow(List<KeyValue> kvs) { byte[] dataBytes = null; byte[] metaBytes = null; byte[] stateBytes = null; // list is very short so it is ok to loop thru to find columns for (KeyValue kv : kvs) { if (hasQualifier(kv, QueueEntryRow.DATA_COLUMN)) { dataBytes = kv.getValue(); } else if (hasQualifier(kv, QueueEntryRow.META_COLUMN)) { metaBytes = kv.getValue(); } else if (hasQualifier(kv, stateColumnName)) { stateBytes = kv.getValue(); } } if (dataBytes == null || metaBytes == null) { skipRow = true; return; } QueueEntryRow.CanConsume canConsume = QueueEntryRow.canConsume(consumerConfig, transaction, writePointer, counter, metaBytes, stateBytes); // Only skip the row when canConsumer == NO, so that in case of NO_INCLUDING_ALL_OLDER, the client // can still see the row and move the scan start row. skipRow = canConsume == QueueEntryRow.CanConsume.NO; }