[beam] branch master updated (70ac565 -> a4dc6f3)
This is an automated email from the ASF dual-hosted git repository. lostluck pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/beam.git. from 70ac565 [BEAM-13015] Implement a simplified cancellable blocking queue with similar semantics to ArrayBlockingQueue. add a4dc6f3 [BEAM-13068] Add a SQL API in Beam Go SDK (#15746) No new revisions were added by this update. Summary of changes: sdks/go/pkg/beam/transforms/sql/sql.go | 122 +++ sdks/go/pkg/beam/transforms/sql/sqlx/sqlx.go | 44 ++ 2 files changed, 166 insertions(+) create mode 100644 sdks/go/pkg/beam/transforms/sql/sql.go create mode 100644 sdks/go/pkg/beam/transforms/sql/sqlx/sqlx.go
[beam] branch master updated: [BEAM-13042] Prevent unexpected blocking in RegisterAndProcessBundleOperation.hasFailed
This is an automated email from the ASF dual-hosted git repository. yichi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/beam.git The following commit(s) were added to refs/heads/master by this push: new 63d9c62 [BEAM-13042] Prevent unexpected blocking in RegisterAndProcessBundleOperation.hasFailed new aa4edda Merge pull request #15716 from scwhittle/fix_unexpected_blocking 63d9c62 is described below commit 63d9c621e186636980d11a942b15ce561ea0d06c Author: Sam Whittle AuthorDate: Wed Oct 13 04:59:48 2021 -0700 [BEAM-13042] Prevent unexpected blocking in RegisterAndProcessBundleOperation.hasFailed --- .../control/RegisterAndProcessBundleOperation.java | 13 +++-- .../RegisterAndProcessBundleOperationTest.java | 66 +- 2 files changed, 73 insertions(+), 6 deletions(-) diff --git a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/fn/control/RegisterAndProcessBundleOperation.java b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/fn/control/RegisterAndProcessBundleOperation.java index b49df39..19e73db 100644 --- a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/fn/control/RegisterAndProcessBundleOperation.java +++ b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/fn/control/RegisterAndProcessBundleOperation.java @@ -403,12 +403,15 @@ public class RegisterAndProcessBundleOperation extends Operation { } public boolean hasFailed() throws ExecutionException, InterruptedException { -if (processBundleResponse != null && processBundleResponse.toCompletableFuture().isDone()) { - return !processBundleResponse.toCompletableFuture().get().getError().isEmpty(); -} else { - // At the very least, we don't know that this has failed yet. - return false; +if (processBundleResponse != null) { + @Nullable + InstructionResponse response = processBundleResponse.toCompletableFuture().getNow(null); + if (response != null) { +return !response.getError().isEmpty(); + } } +// Either this has not failed yet, or has completed successfully. +return false; } /* diff --git a/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/fn/control/RegisterAndProcessBundleOperationTest.java b/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/fn/control/RegisterAndProcessBundleOperationTest.java index 91e8257..2471f10 100644 --- a/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/fn/control/RegisterAndProcessBundleOperationTest.java +++ b/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/fn/control/RegisterAndProcessBundleOperationTest.java @@ -225,6 +225,7 @@ public class RegisterAndProcessBundleOperationTest { BeamFnApi.ProcessBundleRequest.newBuilder().setProcessBundleDescriptorId("555")) .build()); operation.finish(); +assertEquals(false, operation.hasFailed()); // Ensure on restart that we only send the process bundle request operation.start(); @@ -236,6 +237,7 @@ public class RegisterAndProcessBundleOperationTest { BeamFnApi.ProcessBundleRequest.newBuilder().setProcessBundleDescriptorId("555")) .build()); operation.finish(); +assertEquals(false, operation.hasFailed()); } @Test @@ -261,7 +263,6 @@ public class RegisterAndProcessBundleOperationTest { // Purposefully sleep simulating SDK harness doing work Thread.sleep(100); responseFuture.complete(responseFor(request).build()); - completeFuture(request, responseFuture); return null; }); return responseFuture; @@ -283,6 +284,69 @@ public class RegisterAndProcessBundleOperationTest { operation.start(); // This method blocks till the requests are completed operation.finish(); +assertEquals(false, operation.hasFailed()); + +// Ensure that the messages were received +assertEquals( +requests.get(0), +BeamFnApi.InstructionRequest.newBuilder() +.setInstructionId("777") +.setRegister(REGISTER_REQUEST) +.build()); +assertEquals( +requests.get(1), +BeamFnApi.InstructionRequest.newBuilder() +.setInstructionId("778") +.setProcessBundle( + BeamFnApi.ProcessBundleRequest.newBuilder().setProcessBundleDescriptorId("555")) +.build()); + } + + @Test + public void testProcessingBundleBlocksOnFinishWithError() throws Exception { +List requests
[beam] branch release-2.34.0 updated (a4d5907 -> 9c729f2)
This is an automated email from the ASF dual-hosted git repository. ibzib pushed a change to branch release-2.34.0 in repository https://gitbox.apache.org/repos/asf/beam.git. from a4d5907 Merge pull request #15735 from ibzib/runnerv2 new c45a4d8 [BEAM-9487] Multiple Trigger.may_lose_data fixes new 5e5b407 [BEAM-9487] Remove CONDITION_NOT_GUARANTEED as potential data loss reason and update GBK test to get around DirectRunner bug new 7eff6fa [BEAM-9487] Do AfterAny, AfterAll, and AfterEach checks properly (i.e. no shortcuts) new d007520 [BEAM-9487] Remove unused import new c38a9b1 [BEAM-9487] Reintroduce flag but do not use it new 4c81293 [BEAM-9487] Add test that shows AfterCount finishing new 8837e1d [BEAM-9487] Make _ParallelTriggerFn.may_finish clearer new 9c729f2 Merge pull request #15745 from ibzib/trigger The 33176 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../apache_beam/transforms/ptransform_test.py | 7 +- sdks/python/apache_beam/transforms/trigger.py | 80 +++--- sdks/python/apache_beam/transforms/trigger_test.py | 117 ++--- 3 files changed, 101 insertions(+), 103 deletions(-)
[beam] branch master updated: Implement initial server with grpcweb wrapper
This is an automated email from the ASF dual-hosted git repository. pabloem pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/beam.git The following commit(s) were added to refs/heads/master by this push: new 650b514 Implement initial server with grpcweb wrapper new b76c7ee Merge pull request #15656 from [BEAM-12983] [Playground] Initial gRPC server 650b514 is described below commit 650b514618001f53755d62e52f17a5351501cd42 Author: Ilya Kozyrev AuthorDate: Tue Oct 19 12:40:51 2021 +0300 Implement initial server with grpcweb wrapper --- playground/backend/cmd/server/controller.go| 55 +++ playground/backend/cmd/server/controller_test.go | 128 +++ .../backend/cmd/server/{server.go => http.go} | 21 +- playground/backend/cmd/server/server.go| 52 ++- .../backend/cmd/server/{server.go => wrapper.go} | 24 +- playground/backend/go.mod | 2 + playground/backend/go.sum | 407 + playground/backend/internal/api/playground.pb.go | 2 +- 8 files changed, 680 insertions(+), 11 deletions(-) diff --git a/playground/backend/cmd/server/controller.go b/playground/backend/cmd/server/controller.go new file mode 100644 index 000..13ab658 --- /dev/null +++ b/playground/backend/cmd/server/controller.go @@ -0,0 +1,55 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package main + +import ( + pb "beam.apache.org/playground/backend/internal/api" + "context" + "github.com/google/uuid" +) + +type playgroundController struct { + pb.UnimplementedPlaygroundServiceServer +} + +//RunCode is running code from requests using a particular SDK +func (controller *playgroundController) RunCode(ctx context.Context, info *pb.RunCodeRequest) (*pb.RunCodeResponse, error) { + // TODO implement this method + pipelineInfo := pb.RunCodeResponse{PipelineUuid: uuid.NewString()} + + return &pipelineInfo, nil +} + +//CheckStatus is checking status for the specific pipeline by PipelineUuid +func (controller *playgroundController) CheckStatus(ctx context.Context, info *pb.CheckStatusRequest) (*pb.CheckStatusResponse, error) { + // TODO implement this method + status := pb.CheckStatusResponse{Status: pb.Status_STATUS_FINISHED} + return &status, nil +} + +//GetRunOutput is returning output of execution for specific pipeline by PipelineUuid +func (controller *playgroundController) GetRunOutput(ctx context.Context, info *pb.GetRunOutputRequest) (*pb.GetRunOutputResponse, error) { + // TODO implement this method + pipelineResult := pb.GetRunOutputResponse{Output: "Test Pipeline Result"} + + return &pipelineResult, nil +} + +//GetCompileOutput is returning output of compilation for specific pipeline by PipelineUuid +func (controller *playgroundController) GetCompileOutput(ctx context.Context, info *pb.GetCompileOutputRequest) (*pb.GetCompileOutputResponse, error) { + // TODO implement this method + compileOutput := pb.GetCompileOutputResponse{Output: "test compile output"} + return &compileOutput, nil +} diff --git a/playground/backend/cmd/server/controller_test.go b/playground/backend/cmd/server/controller_test.go new file mode 100644 index 000..38885ec --- /dev/null +++ b/playground/backend/cmd/server/controller_test.go @@ -0,0 +1,128 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pa
[beam] branch master updated: [BEAM-13055] Use unshallow clone to create PR.
This is an automated email from the ASF dual-hosted git repository. ibzib pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/beam.git The following commit(s) were added to refs/heads/master by this push: new 8892810 [BEAM-13055] Use unshallow clone to create PR. new bfe5fea Merge pull request #15755 from ibzib/depth1 8892810 is described below commit 8892810ad04b9c16f59334be5c2954fe2204a0a2 Author: Kyle Weaver AuthorDate: Tue Oct 19 11:10:12 2021 -0700 [BEAM-13055] Use unshallow clone to create PR. --- release/src/main/scripts/run_rc_validation.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/src/main/scripts/run_rc_validation.sh b/release/src/main/scripts/run_rc_validation.sh index 292fc50..5045372 100755 --- a/release/src/main/scripts/run_rc_validation.sh +++ b/release/src/main/scripts/run_rc_validation.sh @@ -120,7 +120,7 @@ else echo "* Creating local Beam workspace: ${LOCAL_BEAM_DIR}" mkdir -p ${LOCAL_BEAM_DIR} echo "* Cloning Beam repo" - git clone --depth 1 --branch ${RC_TAG} ${GIT_REPO_URL} ${LOCAL_BEAM_DIR} + git clone --branch ${RC_TAG} ${GIT_REPO_URL} ${LOCAL_BEAM_DIR} cd ${LOCAL_BEAM_DIR} git checkout -b ${WORKING_BRANCH} ${RC_TAG} --quiet echo "* Setting up git config"
[beam] branch master updated: [BEAM_13077][Playground] fix logic for CreateFolders method
This is an automated email from the ASF dual-hosted git repository. pabloem pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/beam.git The following commit(s) were added to refs/heads/master by this push: new 90251e6 [BEAM_13077][Playground] fix logic for CreateFolders method new 4d1c2af Merge pull request #15750 from [BEAM-13077][Playground] LifeCycle.CreateFolders() after several uses returns error 90251e6 is described below commit 90251e631beee35f1847025147d55227f3ba999d Author: AydarZaynutdinov AuthorDate: Tue Oct 19 14:01:57 2021 +0300 [BEAM_13077][Playground] fix logic for CreateFolders method --- playground/backend/internal/fs_tool/fs.go | 54 +++--- playground/backend/internal/fs_tool/fs_test.go | 3 +- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/playground/backend/internal/fs_tool/fs.go b/playground/backend/internal/fs_tool/fs.go index 2e2e9e7..481fade 100644 --- a/playground/backend/internal/fs_tool/fs.go +++ b/playground/backend/internal/fs_tool/fs.go @@ -27,6 +27,7 @@ import ( ) const ( + projectRoot = "backend" parentBaseFileFolder = "internal" fileMode = 0600 ) @@ -63,12 +64,12 @@ func NewLifeCycle(sdk pb.Sdk, pipelineId uuid.UUID) (*LifeCycle, error) { // CreateFolders creates all folders which will be used for code execution. func (l *LifeCycle) CreateFolders() error { - err := os.Chdir("../..") + err := setUpWorkingDir() if err != nil { return err } for _, folder := range l.folderGlobs { - err := os.MkdirAll(folder, fs.ModePerm) + err = os.MkdirAll(folder, fs.ModePerm) if err != nil { return err } @@ -78,8 +79,12 @@ func (l *LifeCycle) CreateFolders() error { // DeleteFolders deletes all previously provisioned folders. func (l *LifeCycle) DeleteFolders() error { + err := setUpWorkingDir() + if err != nil { + return err + } for _, folder := range l.folderGlobs { - err := os.RemoveAll(folder) + err = os.RemoveAll(folder) if err != nil { return err } @@ -89,13 +94,17 @@ func (l *LifeCycle) DeleteFolders() error { // CreateExecutableFile creates an executable file (i.e. file.java for the Java SDK). func (l *LifeCycle) CreateExecutableFile(code string) (string, error) { - if _, err := os.Stat(l.Folder.ExecutableFolder); os.IsNotExist(err) { + err := setUpWorkingDir() + if err != nil { + return "", err + } + if _, err = os.Stat(l.Folder.ExecutableFolder); os.IsNotExist(err) { return "", err } fileName := getFileName(l.pipelineId, l.Extension.ExecutableExtension) filePath := filepath.Join(l.Folder.ExecutableFolder, fileName) - err := os.WriteFile(filePath, []byte(code), fileMode) + err = os.WriteFile(filePath, []byte(code), fileMode) if err != nil { return "", err } @@ -133,3 +142,38 @@ func (l *LifeCycle) GetExecutableName() (string, error) { func getFileName(pipelineId uuid.UUID, fileType string) string { return fmt.Sprintf("%s.%s", pipelineId, fileType) } + +// setUpWorkingDir sets projectRoot as a working directory. +func setUpWorkingDir() error { + folder, err := getWorkingDirName() + if err != nil { + return err + } + + // go up to parent directory until working dir isn't projectRoot dir + for !strings.EqualFold(folder, projectRoot) { + err = os.Chdir("..") + if err != nil { + return err + } + + folder, err = getWorkingDirName() + if err != nil { + return err + } + } + + return nil +} + +// getWorkingDirName returns the working directory's name. +func getWorkingDirName() (string, error) { + path, err := os.Getwd() + if err != nil { + return "", err + } + + folders := strings.Split(path, "/") + folder := folders[len(folders)-1] + return folder, nil +} diff --git a/playground/backend/internal/fs_tool/fs_test.go b/playground/backend/internal/fs_tool/fs_test.go index 7936ad2..1b1b304 100644 --- a/playground/backend/internal/fs_tool/fs_test.go +++ b/playground/backend/internal/fs_tool/fs_test.go @@ -95,7 +95,7 @@ func TestLifeCycle_CreateExecutableFile(t *testing.T) { t.Errorf("CreateExecutableFile() got = %v, want %v", got, tt.want) } }) - os.RemoveAll(parentBaseFileFolder) + os.RemoveAll(baseFileFolder) } } @@ -410,6 +410,7 @@ func TestLifeCycle_GetExecutableName(t *testing.T) {
[beam] branch master updated: [BEAM-13079] Updates cross-language transform URNs to use the new convention (#15748)
This is an automated email from the ASF dual-hosted git repository. chamikara pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/beam.git The following commit(s) were added to refs/heads/master by this push: new 8578c9a [BEAM-13079] Updates cross-language transform URNs to use the new convention (#15748) 8578c9a is described below commit 8578c9a9352a8a5c9621647e9c585321f9761dc5 Author: Chamikara Jayalath AuthorDate: Tue Oct 19 20:03:08 2021 -0700 [BEAM-13079] Updates cross-language transform URNs to use the new convention (#15748) * Updates cross-language transform URNs to use the new convention * Fix the Spanner Insert URN. Co-authored-by: Brian Hulette * Fix the Kafka test * Fixes the Pub/Sub test failure Co-authored-by: Brian Hulette --- sdks/go/pkg/beam/io/xlang/kafkaio/kafka.go | 4 ++-- .../expansion/ExternalSchemaIOTransformRegistrar.java| 6 -- .../apache/beam/io/debezium/DebeziumTransformRegistrar.java | 2 +- .../java/org/apache/beam/sdk/io/gcp/pubsub/ExternalRead.java | 2 +- .../org/apache/beam/sdk/io/gcp/pubsub/ExternalWrite.java | 2 +- .../beam/sdk/io/gcp/spanner/SpannerTransformRegistrar.java | 12 ++-- .../apache/beam/sdk/io/gcp/pubsub/PubsubIOExternalTest.java | 4 ++-- .../src/main/java/org/apache/beam/sdk/io/kafka/KafkaIO.java | 6 +++--- .../org/apache/beam/sdk/io/kafka/KafkaIOExternalTest.java| 11 +++ .../beam/sdk/io/kinesis/KinesisTransformRegistrar.java | 4 ++-- .../snowflake/crosslanguage/SnowflakeTransformRegistrar.java | 4 ++-- sdks/python/apache_beam/io/debezium.py | 2 +- sdks/python/apache_beam/io/external/gcp/pubsub.py| 4 ++-- sdks/python/apache_beam/io/gcp/spanner.py| 12 ++-- sdks/python/apache_beam/io/jdbc.py | 4 ++-- sdks/python/apache_beam/io/kafka.py | 8 +--- sdks/python/apache_beam/io/kinesis.py| 4 ++-- sdks/python/apache_beam/io/snowflake.py | 4 ++-- 18 files changed, 51 insertions(+), 44 deletions(-) diff --git a/sdks/go/pkg/beam/io/xlang/kafkaio/kafka.go b/sdks/go/pkg/beam/io/xlang/kafkaio/kafka.go index 8781cff..785508a 100644 --- a/sdks/go/pkg/beam/io/xlang/kafkaio/kafka.go +++ b/sdks/go/pkg/beam/io/xlang/kafkaio/kafka.go @@ -80,8 +80,8 @@ const ( // be found in Java's KafkaIO documentation. LogAppendTime policy = "LogAppendTime" - readURN = "beam:external:java:kafkaio:typedwithoutmetadata:v1" - writeURN = "beam:external:java:kafka:write:v1" + readURN = "beam:transform:org.apache.beam:kafka_read_without_metadata:v1" + writeURN = "beam:transform:org.apache.beam:kafka_write:v1" ) // Read is a cross-language PTransform which reads from Kafka and returns a diff --git a/sdks/java/extensions/schemaio-expansion-service/src/main/java/org/apache/beam/sdk/extensions/schemaio/expansion/ExternalSchemaIOTransformRegistrar.java b/sdks/java/extensions/schemaio-expansion-service/src/main/java/org/apache/beam/sdk/extensions/schemaio/expansion/ExternalSchemaIOTransformRegistrar.java index 4f3ab30..94ce7cf 100644 --- a/sdks/java/extensions/schemaio-expansion-service/src/main/java/org/apache/beam/sdk/extensions/schemaio/expansion/ExternalSchemaIOTransformRegistrar.java +++ b/sdks/java/extensions/schemaio-expansion-service/src/main/java/org/apache/beam/sdk/extensions/schemaio/expansion/ExternalSchemaIOTransformRegistrar.java @@ -54,10 +54,12 @@ public class ExternalSchemaIOTransformRegistrar implements ExternalTransformRegi try { for (SchemaIOProvider schemaIOProvider : ServiceLoader.load(SchemaIOProvider.class)) { builder.put( -"beam:external:java:schemaio:" + schemaIOProvider.identifier() + ":read:v1", +"beam:transform:org.apache.beam:schemaio_" + schemaIOProvider.identifier() + "_read:v1", new ReaderBuilder(schemaIOProvider)); builder.put( -"beam:external:java:schemaio:" + schemaIOProvider.identifier() + ":write:v1", +"beam:transform:org.apache.beam:schemaio_" ++ schemaIOProvider.identifier() ++ "_write:v1", new WriterBuilder(schemaIOProvider)); } } catch (Exception e) { diff --git a/sdks/java/io/debezium/src/main/java/org/apache/beam/io/debezium/DebeziumTransformRegistrar.java b/sdks/java/io/debezium/src/main/java/org/apache/beam/io/debezium/DebeziumTransformRegistrar.java index a00f706..0eae9c9 100644 --- a/sdks/java/io/debezium/src/main/java/org/apache/beam/io/debezium/DebeziumTransformRegistrar.java +++ b/sdks/java/io/debezium/src/main/java/org/apache/beam/io/debezium/DebeziumTransformRegistrar.java @@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory; }) public class DebeziumTransformRegistrar implements ExternalTransf
[beam] tag nightly-master updated (70ac565 -> 4d1c2af)
This is an automated email from the ASF dual-hosted git repository. github-bot pushed a change to tag nightly-master in repository https://gitbox.apache.org/repos/asf/beam.git. *** WARNING: tag nightly-master was modified! *** from 70ac565 (commit) to 4d1c2af (commit) from 70ac565 [BEAM-13015] Implement a simplified cancellable blocking queue with similar semantics to ArrayBlockingQueue. add a4dc6f3 [BEAM-13068] Add a SQL API in Beam Go SDK (#15746) add 63d9c62 [BEAM-13042] Prevent unexpected blocking in RegisterAndProcessBundleOperation.hasFailed add aa4edda Merge pull request #15716 from scwhittle/fix_unexpected_blocking add 650b514 Implement initial server with grpcweb wrapper add b76c7ee Merge pull request #15656 from [BEAM-12983] [Playground] Initial gRPC server add 8892810 [BEAM-13055] Use unshallow clone to create PR. add bfe5fea Merge pull request #15755 from ibzib/depth1 add 90251e6 [BEAM_13077][Playground] fix logic for CreateFolders method add 4d1c2af Merge pull request #15750 from [BEAM-13077][Playground] LifeCycle.CreateFolders() after several uses returns error No new revisions were added by this update. Summary of changes: playground/backend/cmd/server/controller.go| 55 +++ playground/backend/cmd/server/controller_test.go | 128 +++ .../backend/cmd/server/http.go | 30 +- playground/backend/cmd/server/server.go| 52 ++- .../backend/cmd/server/wrapper.go | 37 +- playground/backend/go.mod | 2 + playground/backend/go.sum | 407 + playground/backend/internal/api/playground.pb.go | 2 +- playground/backend/internal/fs_tool/fs.go | 54 ++- playground/backend/internal/fs_tool/fs_test.go | 3 +- release/src/main/scripts/run_rc_validation.sh | 2 +- .../control/RegisterAndProcessBundleOperation.java | 13 +- .../RegisterAndProcessBundleOperationTest.java | 66 +++- sdks/go/pkg/beam/transforms/sql/sql.go | 122 ++ sdks/go/pkg/beam/transforms/sql/sqlx/sqlx.go | 44 +++ 15 files changed, 967 insertions(+), 50 deletions(-) create mode 100644 playground/backend/cmd/server/controller.go create mode 100644 playground/backend/cmd/server/controller_test.go copy sdks/go/pkg/beam/log/standard.go => playground/backend/cmd/server/http.go (62%) copy learning/katas/go/core_transforms/map/pardo_struct/cmd/main.go => playground/backend/cmd/server/wrapper.go (59%) create mode 100644 sdks/go/pkg/beam/transforms/sql/sql.go create mode 100644 sdks/go/pkg/beam/transforms/sql/sqlx/sqlx.go