lostluck commented on code in PR #35413:
URL: https://github.com/apache/beam/pull/35413#discussion_r2190641873
##########
sdks/go/pkg/beam/core/metrics/sampler.go:
##########
@@ -21,28 +21,35 @@ import (
"time"
"unsafe"
+ "github.com/apache/beam/sdks/v2/go/pkg/beam/internal/errors"
"github.com/apache/beam/sdks/v2/go/pkg/beam/log"
)
+// RestartLullTimeout is the minimum timeout for restarting the sdk harness if
job option element_processing_timeout is set.
+var (
+ restartLullMinTimeoutDefault time.Duration = 10 * time.Minute
+)
+
// StateSampler tracks the state of a bundle.
type StateSampler struct {
store *Store // used to store states into state
registry
millisSinceLastTransition time.Duration
transitionsAtLastSample int64
nextLogTime time.Duration
logInterval time.Duration
+ restartLullTimeout time.Duration
}
// NewSampler creates a new state sampler.
-func NewSampler(store *Store) StateSampler {
- return StateSampler{store: store, nextLogTime: 5 * time.Minute,
logInterval: 5 * time.Minute}
+func NewSampler(store *Store, elementProcessingTimeout string) StateSampler {
Review Comment:
I recommend adding to the comment saying what the expected format the string
is going to be, along with the behavior" "elementProcessingTimeout must be
duration formatted string or `-1`, with a minimum interval of foo. Otherwise
...." etc.
Alternatively:
Lift the flag parsing out of the NewSampler logic, and into the caller. This
makes the sampler behavior easier to test, and avoids the awkward comment. The
minimum threshold and such move to the sampler part of the harness package
instead. Further, you could pass in a context from there to avoid the
context.TODO.
##########
sdks/go/pkg/beam/core/metrics/sampler.go:
##########
@@ -117,3 +128,17 @@ func getState(s bundleProcState) string {
return ""
}
}
+
+func getRestartLullTimeout(elementProcessingTimeout string) time.Duration {
Review Comment:
eg. This just moves to harness/sampler.go essentially, and can accept a
context.Context.
Also, it could be tested independently from the main Sampler logic, since
the main sampler just needs to validate that the time thresholds are being
reached, instead of also accounting for the default.
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]