{"record":{"id":"aec9fa68159ddf97","repo":"apache/beam","slug":"bulk-apply-procces-failed-v","errorCode":null,"errorMessage":"bulk apply procces failed: %v","messagePattern":"bulk apply procces failed: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"sdks/go/pkg/beam/io/bigtableio/bigtable.go","lineNumber":269,"sourceCode":"\t\terr := tryApplyBulk(f.table.ApplyBulk(ctx, rowKeysInBatch, mutationsInBatch))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc validateMutation(mutation Mutation) error {\n\tif len(mutation.Ops) > 100000 {\n\t\treturn fmt.Errorf(\"one instance of bigtableio.Mutation must not have more than 100,000 operations/mutations, see https://cloud.google.com/bigtable/docs/writes#batch\")\n\t}\n\treturn nil\n}\n\nfunc tryApplyBulk(errs []error, processErr error) error {\n\tif processErr != nil {\n\t\treturn fmt.Errorf(\"bulk apply procces failed: %v\", processErr)\n\t}\n\tfor _, err := range errs {\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not apply mutation: %v\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc getBigtableMutation(mutation Mutation) *bigtable.Mutation {\n\tbigtableMutation := bigtable.NewMutation()\n\tfor _, m := range mutation.Ops {\n\t\tbigtableMutation.Set(m.Family, m.Column, m.Ts, m.Value)\n\t}\n\treturn bigtableMutation\n}\n","sourceCodeStart":251,"sourceCodeEnd":286,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/go/pkg/beam/io/bigtableio/bigtable.go#L251-L286","documentation":"tryApplyBulk wraps the overall processErr from f.table.ApplyBulk. If the bulk-apply call itself failed (the call could not complete), it returns 'bulk apply procces failed: %v' (note the typo in the message). This is distinct from per-row failures reported in the errs slice.","triggerScenarios":"tryApplyBulk receives a non-nil processErr from bigtable.Table.ApplyBulk (bigtable.go:269) — the bulk RPC failed wholesale: context cancelled, deadline exceeded, client closed, or connection error.","commonSituations":"Job cancelled by the runner mid-batch; batch deadline exceeded on a huge batch; network outage to bigtable.googleapis.com; Teardown ran before an in-flight bulk call.","solutions":["Read the wrapped processErr for the grpc status; retry the whole batch if the status is transient (Unavailable, DeadlineExceeded)","Check ctx cancellation — if the runner cancelled, treat as normal shutdown rather than a data bug","Reduce batch size (flush earlier than 100,000 ops) to shorten RPC duration","Verify connectivity/auth as in the client-creation error if it happens on every bundle"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"if processErr != nil {\n\tif isTransientGRPC(processErr) && !ctxCancelled(ctx) {\n\t\treturn retryBulk(ctx, batch) // backoff + retry\n\t}\n\treturn fmt.Errorf(\"bulk apply failed: %w\", processErr)\n}","preventionTips":["Flush batches well below the 100k-op cap to keep RPCs short","Configure retryable gRPC codes (Unavailable, DeadlineExceeded) with exponential backoff","Monitor Bigtable backend health and network path to bigtable.googleapis.com"],"tags":["gcp","bigtable","bulk-write","rpc","beam-io"],"backgroundTag":"database-write-failed","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}