gyfora commented on PR #685:
URL:
https://github.com/apache/flink-kubernetes-operator/pull/685#issuecomment-1771652868
Sorry @clarax I think I gave confusing feedback and didn't express myself
clearly. I was thinking something like this:
```
interface AutoScalerEventHandler {
void handleGenericEvent(Ctx, Type, Reson, Message, Key, Interval);
default void handleScalingEvent(Ctx, Map<JobVertexId, ScalingSummary>
summaries, boolean scalingEnabled, Interval) {
// Provide default implementation without proper deduplication
handleGenericEvent(...., toMessage(summaries), interval);
}
}
```
Then for Kubernetes we have the custom label logic encapsulated:
```
class KubernetesAutoScalerEventHandler {
...
@Override
void handleScalingEvent(Ctx, Map<JobVertexId, ScalingSummary> summaries,
boolean scalingEnabled, Interval) {
var labels = createLabels(summaries)
getOldEvent, compare labels, whatever we need to do we do not leak to
ScalingExecutor
}
}
```
This way the ScalingExecutor simply calls:
```
eventHandler.handleScalingEvent(...)
```
And we could remove the predicate/label logic that really do not belong
there as that is very Kubernetes specific and move it to the
`KubernetesAutoScalerEventHandler` implementation.
What do you think?
--
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]