brief-honey-45610
09/21/2023, 4:03 AMbrief-honey-45610
09/21/2023, 4:03 AMripe-bear-58347
10/27/2023, 2:00 PMTracking Callback
and SDK's docs are not clarifying some points. What is the execution mode for the mentioned tracking callback? Is it being executed sequentially for the list of experiments, including blocking while waiting for the outcome, or it's kind of fire-and-forget semantics?brief-honey-45610
01/10/2024, 4:48 PMdry-hairdresser-49475
05/03/2024, 8:41 AMcold-area-42494
05/06/2024, 9:56 PMflaky-lion-33569
06/25/2024, 9:12 PMrapid-quill-56099
07/30/2024, 9:27 PMrapid-quill-56099
07/30/2024, 9:31 PMGBFeaturesRepository
class, but it's not really fleshed out to the same degree as
• there is just one concrete implementation (based around HTTP request to an endpoint)
• There is no repository implementation that can point to a local file
• There is no interface I can implement to create my own implementations (My JVM language allows me to create classes that implement a Java interface, but I cannot directly extend a java class, so extending the GBFeaturesRepository class and overriding method is not an option)rapid-quill-56099
07/30/2024, 9:46 PMExperimentRunCallback
• FeatureUsageCallback
• TrackingCallback
• FeatureRefreshCallback
While none of these interface are annotated as @FunctionalInterface
, the first 3 have a single abstract method, which means they could use a Lambda implementation as a SAM interface which is handy. The last interface has two methods however, so it wouldn't qualify as a SAM. Would you ever consider breaking out the onRefresh()
and onError()
behaviors to be a separate SAM interface. Or honestly, you could just just use the existing Consumer
functional interface in the JDK really.rapid-quill-56099
07/30/2024, 10:24 PMGBFeaturesRepository
, which needs to be a singleton. As far as the
• GBContext
• GrowthBook
classes go, I assumed the GrowthBook
class at first would a singleton/client used for all threads on the app, but looking closer, it appears to accept a context, which is loaded with what appears to be a mix of app-wide data (enabled, features, qa mode,, etc) and user/request-specific data (attributes). If I'm understanding correctly that the attributes represent all the identifying tracking data for the current user on the site (id, email, url, custom attributes, etc) Is the expectation that a brand new GBContext
instance AND GrowthBook
instance would be created for each request coming in to a web app? Is there no singleton object representing the client that is re-used?
In my experience writing a LaunchDarkly SDK, there are separate concepts of
• the singleton client managing the features and configuration for the app
• the transient representation of contexts (as they call them) containing specific user data
A feature flag for LD is always evaluated by the singleton client in the context of a passed user/context object representing the current user.
It would appear GB is wanting me to re-create the entire growthbook client with all its settings from scratch every time. Am I understanding this correctly?rapid-quill-56099
07/30/2024, 10:43 PMrapid-quill-56099
07/30/2024, 10:52 PMrapid-quill-56099
07/31/2024, 2:37 AMstrong-mouse-55694
07/31/2024, 1:53 PMrapid-quill-56099
08/06/2024, 5:15 PMancient-car-96302
08/10/2024, 12:20 PMsourceCompatibility
version in our SDK. In nobody case the version can be updated.millions-match-28781
08/14/2024, 5:57 PMrapid-quill-56099
09/09/2024, 6:05 PMcalm-waitress-28774
09/24/2024, 4:10 PMUnexpected error occurred: Not a JSON Object: null
java.lang.IllegalStateException: Not a JSON Object: null
at com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:165)
Just curious if y'all have considered following semantic versioning, or at least maybe writing some release notes, so we can have a better idea of what's changing without digging through the raw version diffs?bland-crowd-96288
09/29/2024, 9:56 AM1. final TrackingCallback trackingCallback = new TrackingCallback() {
@Override
public <ValueType> void onTrack(final Experiment<ValueType> experiment, final ExperimentResult<ValueType> experimentResult) {
System.out.println("Experiment Id: " + experiment.getKey());
System.out.println("Variation Id: " + experimentResult.getVariationId());
}};
2. setting the GB Context (attributesStr has ids for eg. ("id":"123") :
final GBContext context = GBContext.builder().featuresJson(featuresJson).trackingCallback(trackingCallback).attributesJson(attributesStr).build();
I am running this experiment for a single user id, i have hard-coded it right now.
value of feature flag is not changing as per the "Test feature rule" that we have in Growthbook. Please guide me here. Stuck hereflaky-noon-11399
10/14/2024, 11:54 AMcom.github.growthbook:growthbook-sdk-java:0.9.91
SDK. For example when they send app_version
2.82.0 or greater, their first rule was skipped if value is null
. This works with boolean or string value but does not work with JSON. Please can you investigate why the JSON data type on the Java SDK accepting null value for forced rules?flaky-noon-11399
10/15/2024, 10:38 AMflaky-noon-11399
11/12/2024, 9:48 AMflaky-noon-11399
02/10/2025, 4:36 PMmost-spoon-61816
02/10/2025, 4:41 PMflaky-noon-11399
02/21/2025, 10:30 AMflaky-noon-11399
05/28/2025, 3:48 PM