Turning poll() into remove() makes the warning go away.
We are also switching the cases where this is not reported
to maintain consistency and force a different error than
NPE on inconsistency (which should never happen anyway).
Change-Id: I6b7739a2e5bcd00b7745af87b9c5e180006400bd
Signed-off-by: Robert Varga <rovarga@cisco.com>
- @SuppressFBWarnings(value = {"RV_RETURN_VALUE_IGNORED", "DB_DUPLICATE_SWITCH_CLAUSES"},
- justification = "See inline comments below.")
+ @SuppressFBWarnings(value = "DB_DUPLICATE_SWITCH_CLAUSES", justification = "See inline comments below.")
void checkForExpiredTransactions(final long transactionCommitTimeoutMillis) {
final long timeout = TimeUnit.MILLISECONDS.toNanos(transactionCommitTimeoutMillis);
final long now = shard.ticker().read();
void checkForExpiredTransactions(final long transactionCommitTimeoutMillis) {
final long timeout = TimeUnit.MILLISECONDS.toNanos(transactionCommitTimeoutMillis);
final long now = shard.ticker().read();
boolean processNext = true;
switch (currentTx.cohort.getState()) {
case CAN_COMMIT_PENDING:
boolean processNext = true;
switch (currentTx.cohort.getState()) {
case CAN_COMMIT_PENDING:
- pendingTransactions.poll().cohort.failedCanCommit(new TimeoutException());
+ pendingTransactions.remove().cohort.failedCanCommit(new TimeoutException());
break;
case CAN_COMMIT_COMPLETE:
// The suppression of the FindBugs "DB_DUPLICATE_SWITCH_CLAUSES" warning pertains to this clause
// whose code is duplicated with PRE_COMMIT_COMPLETE. The clauses aren't combined in case the code
// in PRE_COMMIT_COMPLETE is changed.
break;
case CAN_COMMIT_COMPLETE:
// The suppression of the FindBugs "DB_DUPLICATE_SWITCH_CLAUSES" warning pertains to this clause
// whose code is duplicated with PRE_COMMIT_COMPLETE. The clauses aren't combined in case the code
// in PRE_COMMIT_COMPLETE is changed.
- pendingTransactions.poll().cohort.reportFailure(new TimeoutException());
+ pendingTransactions.remove().cohort.reportFailure(new TimeoutException());
break;
case PRE_COMMIT_PENDING:
break;
case PRE_COMMIT_PENDING:
- pendingTransactions.poll().cohort.failedPreCommit(new TimeoutException());
+ pendingTransactions.remove().cohort.failedPreCommit(new TimeoutException());
break;
case PRE_COMMIT_COMPLETE:
// FIXME: this is a legacy behavior problem. Three-phase commit protocol specifies that after we
break;
case PRE_COMMIT_COMPLETE:
// FIXME: this is a legacy behavior problem. Three-phase commit protocol specifies that after we
// In order to make the pre-commit timer working across failovers, though, we need
// a per-shard cluster-wide monotonic time, so a follower becoming the leader can accurately
// restart the timer.
// In order to make the pre-commit timer working across failovers, though, we need
// a per-shard cluster-wide monotonic time, so a follower becoming the leader can accurately
// restart the timer.
- pendingTransactions.poll().cohort.reportFailure(new TimeoutException());
+ pendingTransactions.remove().cohort.reportFailure(new TimeoutException());
break;
case COMMIT_PENDING:
LOG.warn("{}: Transaction {} is still committing, cannot abort", logContext,
break;
case COMMIT_PENDING:
LOG.warn("{}: Transaction {} is still committing, cannot abort", logContext,
case FAILED:
case READY:
default:
case FAILED:
case READY:
default:
- // The suppression of the FindBugs "RV_RETURN_VALUE_IGNORED" warning pertains to this line. In
- // this case, we just want to drop the current entry that expired and thus ignore the return value.
- // In fact we really shouldn't hit this case but we handle all enums for completeness.
- pendingTransactions.poll();
+ pendingTransactions.remove();