This is an automated email from the ASF dual-hosted git repository.

Abacn 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 2400917d918 Add Worker hashes for Golang (#38754)
2400917d918 is described below

commit 2400917d918693f96839a8a2bbbf4a5e38f202f5
Author: Tarun Annapareddy <[email protected]>
AuthorDate: Mon Jun 1 11:13:23 2026 -0700

    Add Worker hashes for Golang (#38754)
---
 sdks/go/pkg/beam/runners/dataflow/dataflowlib/execute.go |  1 +
 sdks/go/pkg/beam/runners/dataflow/dataflowlib/job.go     |  4 ++++
 .../go/pkg/beam/runners/dataflow/dataflowlib/job_test.go | 16 ++++++++++++++++
 3 files changed, 21 insertions(+)

diff --git a/sdks/go/pkg/beam/runners/dataflow/dataflowlib/execute.go 
b/sdks/go/pkg/beam/runners/dataflow/dataflowlib/execute.go
index 396eefab731..c5cb8a636f3 100644
--- a/sdks/go/pkg/beam/runners/dataflow/dataflowlib/execute.go
+++ b/sdks/go/pkg/beam/runners/dataflow/dataflowlib/execute.go
@@ -71,6 +71,7 @@ func Execute(ctx context.Context, raw *pipepb.Pipeline, opts 
*JobOptions, worker
        if err != nil {
                return presult, err
        }
+       opts.WorkerHash = hash
        log.Infof(ctx, "Staged worker binary: %v", workerURL)
 
        if err := graphx.UpdateDefaultEnvWorkerType(
diff --git a/sdks/go/pkg/beam/runners/dataflow/dataflowlib/job.go 
b/sdks/go/pkg/beam/runners/dataflow/dataflowlib/job.go
index f0adb21cf71..27a0a0d0f22 100644
--- a/sdks/go/pkg/beam/runners/dataflow/dataflowlib/job.go
+++ b/sdks/go/pkg/beam/runners/dataflow/dataflowlib/job.go
@@ -85,6 +85,9 @@ type JobOptions struct {
        // Worker is the worker binary override.
        Worker string
 
+       // WorkerHash is the SHA-256 hash of the worker binary.
+       WorkerHash string
+
        // -- Internal use only. Not supported in public Dataflow. --
 
        TeardownPolicy string
@@ -136,6 +139,7 @@ func Translate(ctx context.Context, p *pipepb.Pipeline, 
opts *JobOptions, worker
        packages := []*df.Package{{
                Name:     "worker",
                Location: workerURL,
+               Sha256:   opts.WorkerHash,
        }}
 
        for _, url := range opts.ArtifactURLs {
diff --git a/sdks/go/pkg/beam/runners/dataflow/dataflowlib/job_test.go 
b/sdks/go/pkg/beam/runners/dataflow/dataflowlib/job_test.go
index 901adb6c7b7..07f2d39e552 100644
--- a/sdks/go/pkg/beam/runners/dataflow/dataflowlib/job_test.go
+++ b/sdks/go/pkg/beam/runners/dataflow/dataflowlib/job_test.go
@@ -292,6 +292,7 @@ func TestTranslate(t *testing.T) {
                Name:                           "test-job",
                DiskProvisionedIops:            4000,
                DiskProvisionedThroughputMibps: 200,
+               WorkerHash:                     "worker-sha256-hash",
        }
        workerURL := "gs://any-location/temp"
        modelURL := "gs://any-location/temp"
@@ -312,6 +313,21 @@ func TestTranslate(t *testing.T) {
        if wp.DiskProvisionedThroughputMibps != 200 {
                t.Errorf("DiskProvisionedThroughputMibps = %v, want 200", 
wp.DiskProvisionedThroughputMibps)
        }
+
+       // Verify worker package has Sha256
+       found := false
+       for _, pkg := range wp.Packages {
+               if pkg.Name == "worker" {
+                       found = true
+                       if pkg.Sha256 != "worker-sha256-hash" {
+                               t.Errorf("worker package Sha256 = %q, want %q", 
pkg.Sha256, "worker-sha256-hash")
+                       }
+                       break
+               }
+       }
+       if !found {
+               t.Fatalf("worker package not found in wp.Packages")
+       }
 }
 
 func TestTranslateWithPipelineHash(t *testing.T) {

Reply via email to