Skip to content

Commit affc36a

Browse files
authored
Merge branch 'development' into feature/rule-based-segment
2 parents 919fc54 + 3d9d592 commit affc36a

File tree

20 files changed

+116
-27
lines changed

20 files changed

+116
-27
lines changed

CHANGES.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
4.15.0 (Apr 18, 2025)
2+
- Prevent polling threads from starting when the SDK calls destroy method.
3+
- Added a new optional argument to the client `getTreatment` methods to allow passing additional evaluation options, such as a map of properties to append to the generated impressions sent to Split backend. Read more in our docs.
4+
15
4.14.0 (Jan 17, 2025)
26
- Added support for the new impressions tracking toggle available on feature flags, both respecting the setting and including the new field being returned on SplitView type objects. Read more in our docs.
37
- Cleaned unused imports to fix a collision issue.

client/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<parent>
66
<groupId>io.split.client</groupId>
77
<artifactId>java-client-parent</artifactId>
8-
<version>4.14.0</version>
8+
<version>4.15.0</version>
99
</parent>
10-
<version>4.14.0</version>
10+
<version>4.15.0</version>
1111
<artifactId>java-client</artifactId>
1212
<packaging>jar</packaging>
1313
<name>Java Client</name>

client/src/main/java/io/split/client/JsonLocalhostSplitChangeFetcher.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ private SplitChange processSplitChange(SplitChange splitChange, long changeNumbe
6161
_log.warn("The till is lower than the change number or different to -1");
6262
return null;
6363
}
64+
6465
byte [] currHashFeatureFlags = getStringDigest(splitChange.featureFlags.d.toString());
6566
byte [] currHashRuleBasedSegments = getStringDigest(splitChange.ruleBasedSegments.d.toString());
6667
//if sha exist and is equal to before sha, or if till is equal to default till returns the same segmentChange with till equals to storage CN

client/src/main/java/io/split/client/SplitClientImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ private String validateProperties(Map<String, Object> properties) {
552552

553553
ImpressionPropertiesValidator.ImpressionPropertiesValidatorResult iPValidatorResult = ImpressionPropertiesValidator.propertiesAreValid(
554554
properties);
555-
return new GsonBuilder().create().toJson(iPValidatorResult.getValue()).toString();
555+
return new GsonBuilder().create().toJson(iPValidatorResult.getValue());
556556
}
557557

558558
private Map<String, SplitResult> getTreatmentsWithConfigInternal(String matchingKey, String bucketingKey, List<String> featureFlagNames,

client/src/main/java/io/split/client/SplitFactoryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public class SplitFactoryImpl implements SplitFactory {
130130
private static final org.slf4j.Logger _log = LoggerFactory.getLogger(SplitFactoryImpl.class);
131131
private static final String LEGACY_LOG_MESSAGE = "The sdk initialize in localhost mode using Legacy file. The splitFile or "
132132
+
133-
"inputStream doesn't add it to the config.";
133+
"inputStream are not added to the config.";
134134
private final static long SSE_CONNECT_TIMEOUT = 30000;
135135
private final static long SSE_SOCKET_TIMEOUT = 70000;
136136

client/src/main/java/io/split/client/dtos/EvaluationOptions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ public EvaluationOptions(Map<String, Object> properties) {
1010
}
1111
public Map<String, Object> getProperties() {
1212
return _properties;
13-
};
13+
}
1414
}

client/src/main/java/io/split/client/dtos/KeyImpression.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ public class KeyImpression {
1717
/* package private */ static final String FIELD_PREVIOUS_TIME = "pt";
1818
/* package private */ static final String FIELD_PROPERTIES = "properties";
1919

20-
public static int MAX_PROPERTIES_LENGTH_BYTES = 32 * 1024;
21-
2220
public transient String feature; // Non-serializable
2321

2422
@SerializedName(FIELD_KEY_NAME)

client/src/main/java/io/split/client/impressions/strategy/ProcessImpressionOptimized.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,14 @@ public ProcessImpressionOptimized(boolean listenerEnabled, ImpressionObserver im
3232
public ImpressionsResult process(List<Impression> impressions) {
3333
List<Impression> impressionsToQueue = new ArrayList<>();
3434
for(Impression impression : impressions) {
35-
if (impression.properties() != null) {
36-
impressionsToQueue.add(impression);
37-
continue;
38-
}
39-
impression = impression.withPreviousTime(_impressionObserver.testAndSet(impression));
40-
if(!Objects.isNull(impression.pt()) && impression.pt() != 0){
41-
_impressionCounter.inc(impression.split(), impression.time(), 1);
42-
}
43-
if(shouldntQueueImpression(impression)) {
44-
continue;
35+
if (impression.properties() == null) {
36+
impression = impression.withPreviousTime(_impressionObserver.testAndSet(impression));
37+
if (!Objects.isNull(impression.pt()) && impression.pt() != 0) {
38+
_impressionCounter.inc(impression.split(), impression.time(), 1);
39+
}
40+
if (shouldntQueueImpression(impression)) {
41+
continue;
42+
}
4543
}
4644
impressionsToQueue.add(impression);
4745
}

client/src/main/java/io/split/engine/common/SyncManagerImp.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,11 @@ private void startPollingMode() {
219219
case STREAMING_DOWN:
220220
_log.info("Streaming service temporarily unavailable, working in polling mode.");
221221
_pushManager.stopWorkers();
222+
// if the whole SDK is being shutdown, don't start polling,
223+
// in case the polling threads are not terminated and a graceful shutdown will fail.
224+
if(_shuttedDown.get()) {
225+
break;
226+
}
222227
_synchronizer.startPeriodicFetching();
223228
break;
224229
case STREAMING_BACKOFF:

client/src/main/java/io/split/inputValidation/ImpressionPropertiesValidator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import java.util.Map;
44

55
public class ImpressionPropertiesValidator {
6+
ImpressionPropertiesValidator() {
7+
throw new IllegalStateException("Utility class");
8+
}
69

710
public static ImpressionPropertiesValidatorResult propertiesAreValid(Map<String, Object> properties) {
811
EventsValidator.EventValidatorResult result = EventsValidator.propertiesAreValid(properties);

0 commit comments

Comments
 (0)