From 81d92f319b57c696ddd15141d36920208d4bec44 Mon Sep 17 00:00:00 2001 From: Danny McCormick Date: Tue, 8 Mar 2022 16:43:13 -0500 Subject: [PATCH 1/2] Document go sdk bundle finalization --- sdks/go/examples/snippets/04transforms.go | 12 ++++++++++++ .../content/en/documentation/programming-guide.md | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/sdks/go/examples/snippets/04transforms.go b/sdks/go/examples/snippets/04transforms.go index d920acdfa2a9..07f28c14d63a 100644 --- a/sdks/go/examples/snippets/04transforms.go +++ b/sdks/go/examples/snippets/04transforms.go @@ -87,6 +87,18 @@ func CreateAndSplit(s beam.Scope, input []stringPair) beam.PCollection { // [END cogroupbykey_input_helpers] +// [START bundlefinalization_simplecallback] + +func (fn *splittableDoFn) ProcessElement(element string, bf beam.BundleFinalization) { + // ... produce output ... + + bf.RegisterCallback(5 * time.Minute, func() error { + // ... perform a side effect ... + }) +} + +// [END bundlefinalization_simplecallback] + // [START cogroupbykey_output_helpers] func formatCoGBKResults(key string, emailIter, phoneIter func(*string) bool) string { diff --git a/website/www/site/content/en/documentation/programming-guide.md b/website/www/site/content/en/documentation/programming-guide.md index 02adfeb92b03..30d09bde3a0b 100644 --- a/website/www/site/content/en/documentation/programming-guide.md +++ b/website/www/site/content/en/documentation/programming-guide.md @@ -6538,7 +6538,7 @@ use case. {{< /highlight >}} {{< highlight go >}} -This is not supported yet, see BEAM-10976. +{{< code_sample "sdks/go/examples/snippets/04transforms.go" bundlefinalization_simplecallback >}} {{< /highlight >}} ## 13. Multi-language pipelines {#multi-language-pipelines} From 8e7254e0a2663df81d96f27a1ffa6bea9a68b759 Mon Sep 17 00:00:00 2001 From: Danny McCormick Date: Wed, 30 Mar 2022 21:33:26 -0400 Subject: [PATCH 2/2] Make examples compile --- sdks/go/examples/snippets/04transforms.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sdks/go/examples/snippets/04transforms.go b/sdks/go/examples/snippets/04transforms.go index 51ff0cc3c0f0..42a13bd54264 100644 --- a/sdks/go/examples/snippets/04transforms.go +++ b/sdks/go/examples/snippets/04transforms.go @@ -21,6 +21,7 @@ import ( "reflect" "sort" "strings" + "time" "github.com/apache/beam/sdks/v2/go/pkg/beam" "github.com/apache/beam/sdks/v2/go/pkg/beam/core/typex" @@ -88,15 +89,19 @@ func CreateAndSplit(s beam.Scope, input []stringPair) beam.PCollection { // [END cogroupbykey_input_helpers] +type splittableDoFn struct{} + // [START bundlefinalization_simplecallback] func (fn *splittableDoFn) ProcessElement(element string, bf beam.BundleFinalization) { // ... produce output ... - bf.RegisterCallback(5 * time.Minute, func() error { + bf.RegisterCallback(5*time.Minute, func() error { // ... perform a side effect ... + + return nil }) -} +} // [END bundlefinalization_simplecallback]