Skip to content

Commit 157c84c

Browse files
charlesliqlogicchingor13
authored andcommitted
---
yaml --- r: 13973 b: refs/heads/autosynth-container c: 6e2c2dd h: refs/heads/master i: 13971: 5b11c6e
1 parent fa4fcc3 commit 157c84c

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
@@ -113,7 +113,7 @@ refs/tags/v0.65.0: 10939381ffe0b8da32db4fe3087c86e3aa7f3e55
113113
refs/tags/v0.66.0: ed6a3f57cbdaa20339a1995f7d7d53b172a5b8ef
114114
refs/tags/v0.67.0: 30b56f02092efc6f3c3667650ea8b8825003e0b7
115115
refs/heads/autosynth-compute: 8e86445e504cea6f99b9fb237bfd7f0e5ef8b3ce
116-
refs/heads/autosynth-container: fb2b690c57acdd37c2ac957788155606b28d5d9f
116+
refs/heads/autosynth-container: 6e2c2dd890fe445cc896f0ddcb30309213759ee2
117117
refs/heads/autosynth-dataproc: bc74a8841bc1693d7945d991d15979df550b1fd1
118118
refs/heads/autosynth-monitoring: 120f508e0065f4ce39cf0e6a69a08138773f2cfb
119119
refs/heads/autosynth-pubsub: ed3340e32d13bb1a42ca4431cb1ad9bdaf550aa4

branches/autosynth-container/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-container/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-container/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)