Class FeatureRefreshEvent

java.lang.Object
growthbook.sdk.java.model.FeatureRefreshEvent

public class FeatureRefreshEvent extends Object
Metadata-only event delivered to FeatureRefreshListeners after a feature refresh attempt. A cache fallback after an upstream failure is unsuccessful with loadedFromCache set to true.

Counting refreshes: an event is published per refresh attempt, not per change, so metrics that should track definition updates must filter on isFeaturesChanged(). This matters most on FeatureRefreshSource.SSE: a server event that carries no payload is published as successful with featuresChanged == false. Named keep-alives (heartbeat, keepalive, ping) are filtered out before reaching listeners, but a payload-less event under any other name is indistinguishable from a genuine "definitions changed, refetch" signal, so it is delivered rather than dropped — the remote-eval cache invalidation depends on receiving it. GrowthBook Cloud emits such events roughly every 30 seconds, so counting raw events there overstates the refresh rate.

This is an immutable value carrier; identity equality is used. It intentionally does not define field-based equals/hashCode, since the error and timestamp fields make two refresh attempts effectively never equal.