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

Reply via email to