Skip to content

Commit 812bdec

Browse files
charlesliqlogicchingor13
authored andcommitted
---
yaml --- r: 16343 b: refs/heads/autosynth-iot c: 6e2c2dd h: refs/heads/master i: 16341: 763edc7 16339: 62c73b9 16335: 671fd7b
1 parent 1c4e962 commit 812bdec

4 files changed

Lines changed: 21 additions & 1 deletion

File tree

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ refs/heads/autosynth-datastore: 9acd400b484d6691a080c9152a331d88d24fefc1
133133
refs/heads/autosynth-dialogflow: d7477419376eac9b6dcc7dbcede581152527351d
134134
refs/heads/autosynth-errorreporting: 9891e73a56af7c097829ca7a521b0e862ba6af30
135135
refs/heads/autosynth-firestore: ddb29f8ee445a938fc40be8227dea87b3f508ab3
136-
refs/heads/autosynth-iot: fb2b690c57acdd37c2ac957788155606b28d5d9f
136+
refs/heads/autosynth-iot: 6e2c2dd890fe445cc896f0ddcb30309213759ee2
137137
refs/heads/autosynth-kms: dcc6e15d68759010c8735cc868135bd7e6c1cc5f
138138
refs/heads/autosynth-language: 8972866b016473559702424205ce5569de47b34d
139139
refs/heads/autosynth-os-login: daa910328b954bbe87068f684a3088ed910f1ddf

branches/autosynth-iot/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/AckReplyConsumer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,6 @@ public interface AckReplyConsumer {
2929
* message.
3030
*/
3131
void nack();
32+
33+
void abandon();
3234
}

branches/autosynth-iot/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/MessageDispatcher.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ private class AckHandler implements ApiFutureCallback<AckReply> {
133133
private final int outstandingBytes;
134134
private final long receivedTimeMillis;
135135
private final Instant totalExpiration;
136+
private boolean extending = true;
136137

137138
AckHandler(String ackId, int outstandingBytes, Instant totalExpiration) {
138139
this.ackId = ackId;
@@ -151,6 +152,7 @@ private void forget() {
151152
*/
152153
return;
153154
}
155+
extending = false;
154156
flowController.release(1, outstandingBytes);
155157
messagesWaiter.incrementPendingMessages(-1);
156158
processOutstandingBatches();
@@ -417,6 +419,11 @@ public void ack() {
417419
public void nack() {
418420
response.set(AckReply.NACK);
419421
}
422+
423+
@Override
424+
public void abandon() {
425+
ackHandler.forget();
426+
}
420427
};
421428
ApiFutures.addCallback(response, ackHandler, MoreExecutors.directExecutor());
422429
executor.execute(
@@ -471,6 +478,9 @@ void extendDeadlines() {
471478
Instant extendTo = now.plusSeconds(extendSeconds);
472479

473480
for (Map.Entry<String, AckHandler> entry : pendingMessages.entrySet()) {
481+
if (!entry.getValue().extending) {
482+
continue;
483+
}
474484
String ackId = entry.getKey();
475485
Instant totalExpiration = entry.getValue().totalExpiration;
476486
if (totalExpiration.isAfter(extendTo)) {

branches/autosynth-iot/google-cloud-clients/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/MessageDispatcherTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,14 @@ public void testNack() throws Exception {
148148
assertThat(sentModAcks).contains(ModAckItem.of(TEST_MESSAGE.getAckId(), 0));
149149
}
150150

151+
@Test
152+
public void testAbandon() throws Exception {
153+
dispatcher.processReceivedMessages(Collections.singletonList(TEST_MESSAGE), NOOP_RUNNABLE);
154+
consumers.take().abandon();
155+
dispatcher.extendDeadlines();
156+
assertThat(sentModAcks).doesNotContain(TEST_MESSAGE.getAckId());
157+
}
158+
151159
@Test
152160
public void testExtension() throws Exception {
153161
dispatcher.processReceivedMessages(Collections.singletonList(TEST_MESSAGE), NOOP_RUNNABLE);

0 commit comments

Comments
 (0)