youngoli commented on a change in pull request #11144: [BEAM-3301] Perform SDF
validation (missing RestrictionTrackers).
URL: https://github.com/apache/beam/pull/11144#discussion_r394783450
##########
File path: sdks/go/pkg/beam/core/graph/fn.go
##########
@@ -569,6 +622,188 @@ func validateSideInputsNumUnknown(processFnInputs
[]funcx.FnParam, method *funcx
return nil
}
+// validateSdfMethods validates that all SDF methods are either present or
+// missing in a Fn, and then returns true if they're present and false
+// otherwise. If some are present and some are missing, it returns an error.
+func validateSdfMethodsPresent(fn *Fn) (bool, error) {
+ // Check if first sdf method is present or not, and compare all
subsequent
+ // methods to that result. If there's a mismatch, then we only fail
after
+ // finishing the loop so we can output all the missing methods.
+ missing := make([]string, 0)
+ var first, fail bool
+
+ for i, name := range sdfNames {
+ _, ok := fn.methods[name]
+ if !ok {
+ missing = append(missing, name)
+ }
+
+ if i == 0 {
+ first = ok
+ } else if ok != first {
+ fail = true
+ }
+ }
+
+ if fail {
+ err := errors.Errorf("not all SplittableDoFn methods are
present. Missing methods: %v", missing)
+ return false, err
+ }
+
+ return first, nil
Review comment:
That looks much more readable and easy to follow than the current one. Done.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services