From 3b522039da3ae5436c4f2ac19937c9b6cf02d8fe Mon Sep 17 00:00:00 2001 From: Elena Felder <41136058+elefeint@users.noreply.github.com> Date: Fri, 28 Jan 2022 12:52:22 -0500 Subject: [PATCH] Exclude `goog_` prefixed attributes from outbound Pub/Sub messages (backport) (#919) --- .../pubsub/integration/PubSubHeaderMapper.java | 1 + .../pubsub/support/GcpPubSubHeaders.java | 3 +++ .../integration/PubSubHeaderMapperTests.java | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapper.java b/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapper.java index c421aaa352..e73aac5a4e 100644 --- a/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapper.java +++ b/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapper.java @@ -46,6 +46,7 @@ public class PubSubHeaderMapper implements HeaderMapper> { "!" + MessageHeaders.ID, "!" + MessageHeaders.TIMESTAMP, "!" + GcpPubSubHeaders.ORIGINAL_MESSAGE, + "!" + GcpPubSubHeaders.CLIENT, "!" + NativeMessageHeaderAccessor.NATIVE_HEADERS, "!" + MessageHistory.HEADER_NAME, "*" diff --git a/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/support/GcpPubSubHeaders.java b/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/support/GcpPubSubHeaders.java index ba058e1224..5d55bd70d3 100644 --- a/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/support/GcpPubSubHeaders.java +++ b/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/support/GcpPubSubHeaders.java @@ -28,6 +28,9 @@ private GcpPubSubHeaders() {} private static final String PREFIX = "gcp_pubsub_"; + /** The client header text. */ + public static final String CLIENT = "googclient_*"; + /** The topic header text. */ public static final String TOPIC = PREFIX + "topic"; diff --git a/spring-cloud-gcp-pubsub/src/test/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapperTests.java b/spring-cloud-gcp-pubsub/src/test/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapperTests.java index 5c14dc9363..e03b31879b 100644 --- a/spring-cloud-gcp-pubsub/src/test/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapperTests.java +++ b/spring-cloud-gcp-pubsub/src/test/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapperTests.java @@ -35,6 +35,24 @@ public class PubSubHeaderMapperTests { /** used to check for exception messages and types. */ @Rule public ExpectedException expectedException = ExpectedException.none(); + @Test + public void testFilterGoogleClientHeaders() { + PubSubHeaderMapper mapper = new PubSubHeaderMapper(); + Map originalHeaders = new HashMap<>(); + originalHeaders.put("my header", "pantagruel's nativity"); + MessageHeaders internalHeaders = new MessageHeaders(originalHeaders); + + originalHeaders.put("googclient_deliveryattempt", "header attached when DLQ is enabled"); + originalHeaders.put("googclient_anyHeader", "any other possible headers"); + + Map filteredHeaders = new HashMap<>(); + mapper.fromHeaders(internalHeaders, filteredHeaders); + assertThat(filteredHeaders) + .hasSize(1) + .containsEntry("my header", "pantagruel's nativity"); + } + + @Test public void testFilterHeaders() { PubSubHeaderMapper mapper = new PubSubHeaderMapper();