Skip to content

Commit 3a7c5f2

Browse files
committed
Add custom pubsub source and sink experiment support for runner v2.
1 parent d49c268 commit 3a7c5f2

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

runners/google-cloud-dataflow-java/src/main/java/org/apache/beam/runners/dataflow/DataflowRunner.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
import static java.nio.charset.StandardCharsets.UTF_8;
2121
import static org.apache.beam.runners.core.construction.resources.PipelineResources.detectClassPathResourcesToStage;
22+
import static org.apache.beam.sdk.io.gcp.pubsub.PubsubIO.ENABLE_CUSTOM_PUBSUB_SINK;
23+
import static org.apache.beam.sdk.io.gcp.pubsub.PubsubIO.ENABLE_CUSTOM_PUBSUB_SOURCE;
2224
import static org.apache.beam.sdk.util.CoderUtils.encodeToByteArray;
2325
import static org.apache.beam.sdk.util.SerializableUtils.serializeToByteArray;
2426
import static org.apache.beam.sdk.util.StringUtils.byteArrayToJsonString;
@@ -549,13 +551,13 @@ private List<PTransformOverride> getOverrides(boolean streaming) {
549551
new SplittableParDoOverrides.SplittableParDoOverrideFactory()));
550552

551553
if (streaming) {
552-
if (!hasExperiment(options, "enable_custom_pubsub_source")) {
554+
if (!hasExperiment(options, ENABLE_CUSTOM_PUBSUB_SOURCE)) {
553555
overridesBuilder.add(
554556
PTransformOverride.of(
555557
PTransformMatchers.classEqualTo(PubsubUnboundedSource.class),
556558
new StreamingPubsubIOReadOverrideFactory()));
557559
}
558-
if (!hasExperiment(options, "enable_custom_pubsub_sink")) {
560+
if (!hasExperiment(options, ENABLE_CUSTOM_PUBSUB_SINK)) {
559561
overridesBuilder.add(
560562
PTransformOverride.of(
561563
PTransformMatchers.classEqualTo(PubsubUnboundedSink.class),

sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/PubSubPayloadTranslation.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
*/
1818
package org.apache.beam.sdk.io.gcp.pubsub;
1919

20+
import static org.apache.beam.sdk.io.gcp.pubsub.PubsubIO.ENABLE_CUSTOM_PUBSUB_SINK;
21+
import static org.apache.beam.sdk.io.gcp.pubsub.PubsubIO.ENABLE_CUSTOM_PUBSUB_SOURCE;
22+
2023
import com.google.auto.service.AutoService;
2124
import java.util.Collections;
2225
import java.util.Map;
@@ -33,6 +36,7 @@
3336
import org.apache.beam.sdk.io.gcp.pubsub.PubsubClient.SubscriptionPath;
3437
import org.apache.beam.sdk.io.gcp.pubsub.PubsubClient.TopicPath;
3538
import org.apache.beam.sdk.io.gcp.pubsub.PubsubUnboundedSource.PubsubSource;
39+
import org.apache.beam.sdk.options.ExperimentalOptions;
3640
import org.apache.beam.sdk.options.ValueProvider;
3741
import org.apache.beam.sdk.options.ValueProvider.NestedValueProvider;
3842
import org.apache.beam.sdk.runners.AppliedPTransform;
@@ -59,6 +63,10 @@ public String getUrn() {
5963
@Override
6064
public RunnerApi.FunctionSpec translate(
6165
AppliedPTransform<?, ?, Unbounded<?>> transform, SdkComponents components) {
66+
if (ExperimentalOptions.hasExperiment(
67+
transform.getPipeline().getOptions(), ENABLE_CUSTOM_PUBSUB_SOURCE)) {
68+
return null;
69+
}
6270
if (!(transform.getTransform().getSource() instanceof PubsubUnboundedSource.PubsubSource)) {
6371
return null;
6472
}
@@ -111,6 +119,10 @@ public String getUrn() {
111119
public RunnerApi.FunctionSpec translate(
112120
AppliedPTransform<?, ?, PubsubUnboundedSink.PubsubSink> transform,
113121
SdkComponents components) {
122+
if (ExperimentalOptions.hasExperiment(
123+
transform.getPipeline().getOptions(), ENABLE_CUSTOM_PUBSUB_SINK)) {
124+
return null;
125+
}
114126
PubSubWritePayload.Builder payloadBuilder = PubSubWritePayload.newBuilder();
115127
ValueProvider<TopicPath> topicProvider =
116128
Preconditions.checkStateNotNull(transform.getTransform().outer.getTopicProvider());
@@ -145,6 +157,10 @@ public String getUrn() {
145157
public RunnerApi.FunctionSpec translate(
146158
AppliedPTransform<?, ?, PubsubUnboundedSink.PubsubDynamicSink> transform,
147159
SdkComponents components) {
160+
if (ExperimentalOptions.hasExperiment(
161+
transform.getPipeline().getOptions(), ENABLE_CUSTOM_PUBSUB_SINK)) {
162+
return null;
163+
}
148164
PubSubWritePayload.Builder payloadBuilder = PubSubWritePayload.newBuilder();
149165
if (transform.getTransform().outer.getTimestampAttribute() != null) {
150166
payloadBuilder.setTimestampAttribute(

sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,9 @@ public class PubsubIO {
203203
private static final String SUBSCRIPTION_STARTING_SIGNAL = "_starting_signal/";
204204
private static final String TOPIC_DEV_NULL_TEST_NAME = "/topics/dev/null";
205205

206+
public static final String ENABLE_CUSTOM_PUBSUB_SINK = "enable_custom_pubsub_sink";
207+
public static final String ENABLE_CUSTOM_PUBSUB_SOURCE = "enable_custom_pubsub_source";
208+
206209
private static void validateProjectName(String project) {
207210
Matcher match = PROJECT_ID_REGEXP.matcher(project);
208211
if (!match.matches()) {

0 commit comments

Comments
 (0)