Skip to content

Commit de88282

Browse files
committed
[Proposal] Allow users to specify trusted Avro serializable classes to Dataflow worker
1 parent 82fe92a commit de88282

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,4 +266,14 @@ public String create(PipelineOptions options) {
266266
List<String> getJdkAddOpenModules();
267267

268268
void setJdkAddOpenModules(List<String> options);
269+
270+
/**
271+
* Set trusted serializable classes for use with the Avro `java-class` schema property.
272+
*
273+
* <p>See: https://github.com/apache/avro/pull/3376
274+
*/
275+
@Description("Serializable classes required by java-class props in Avro 1.11.4+")
276+
List<String> getAvroSerializableClasses();
277+
278+
void setAvroSerializableClasses(List<String> options);
269279
}

sdks/java/container/boot.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,10 @@ func main() {
276276
args = append(args, "--add-modules="+module.GetStringValue())
277277
}
278278
}
279+
// Add trusted Avro serializable classes
280+
if serializableClasses, ok := pipelineOptions.GetStructValue().GetFields()["avroSerializableClasses"]; ok {
281+
args = append(args, "-Dorg.apache.avro.SERIALIZABLE_CLASSES="+strings.Join(serializableClasses.GetStringValue(), ",")
282+
}
279283
}
280284
// Automatically open modules for Java 11+
281285
openModuleAgentJar := "/opt/apache/beam/jars/open-module-agent.jar"

0 commit comments

Comments
 (0)