Skip to content

Commit

Permalink
FFM-11654 Sort serving rules in cache code
Browse files Browse the repository at this point in the history
  • Loading branch information
erdirowlands committed Jun 28, 2024
1 parent 808bd25 commit 434be3b
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 16 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,14 +78,14 @@ Add the following Maven dependency in your project's pom.xml file:
<dependency>
<groupId>io.harness</groupId>
<artifactId>ff-java-server-sdk</artifactId>
<version>1.6.0</version>
<version>1.6.1</version>
</dependency>
```

#### Gradle

```
implementation 'io.harness:ff-java-server-sdk:1.6.0'
implementation 'io.harness:ff-java-server-sdk:1.6.1'
```

### Code Sample
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,19 @@

public class GettingStarted {
// API Key - set this as an env variable
private static final String apiKey = getEnvOrDefault("FF_API_KEY", "");
private static final String apiKey = getEnvOrDefault("FF_API_KEY", "d04a8a0a-265d-4292-a441-c7de929775e7");

// Flag Identifier
private static final String flagName = getEnvOrDefault("FF_FLAG_NAME", "harnessappdemodarkmode");
private static final String flagName = getEnvOrDefault("FF_FLAG_NAME", "LargeAuditLogFlag");

private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

public static void main(String[] args) {
System.out.println("Harness SDK Getting Started");

final HarnessConnector connector = new HarnessConnector(apiKey, HarnessConfig.builder()
//.configUrl("http://localhost:8000/api/1.0")
//.eventUrl("http://localhost:8001/api/1.0")
.configUrl("https://config.feature-flags.qa.harness.io/api/1.0")
.eventUrl("https://event.feature-flags.qa.harness.io/api/1.0")
.build());

// Create a Feature Flag Client
Expand Down Expand Up @@ -67,4 +67,4 @@ private static String getEnvOrDefault(String key, String defaultValue) {
}
return value;
}
}
}
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ dependencyResolutionManagement {
versionCatalogs {
libs {
// main sdk version
version('sdk', '1.6.0');
version('sdk', '1.6.1');

// sdk deps
version('okhttp3', '4.12.0')
Expand Down
1 change: 0 additions & 1 deletion src/main/java/io/harness/cf/client/api/Evaluator.java
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,6 @@ private boolean isTargetIncludedOrExcludedInSegment(List<String> segmentList, Ta
// New style rules, if sent by BE prefer those first
List<GroupServingRule> newServingRules = segment.getServingRules();
if (newServingRules != null && !newServingRules.isEmpty()) {
newServingRules.sort(Comparator.comparing(GroupServingRule::getPriority));

for (GroupServingRule servingRule : newServingRules) {
if (evaluateClausesV2(servingRule.getClauses(), target)) {
Expand Down
21 changes: 14 additions & 7 deletions src/main/java/io/harness/cf/client/api/StorageRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,10 @@
import io.harness.cf.client.common.Cache;
import io.harness.cf.client.common.Storage;
import io.harness.cf.client.common.Utils;
import io.harness.cf.model.Clause;
import io.harness.cf.model.FeatureConfig;
import io.harness.cf.model.Segment;
import io.harness.cf.model.ServingRule;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import io.harness.cf.model.*;

import java.util.*;

import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -131,6 +128,10 @@ public void setSegment(@NonNull String identifier, @NonNull Segment segment) {
log.debug("Segment {} already exists", identifier);
return;
}

// Sort the serving rules before storing the segment
sortSegmentServingRules(segment);

final String segmentKey = formatSegmentKey(identifier);
if (store != null) {
store.set(segmentKey, segment);
Expand Down Expand Up @@ -196,6 +197,12 @@ protected boolean isSegmentOutdated(@NonNull String identifier, @NonNull Segment
return false;
}

private void sortSegmentServingRules(Segment segment) {
if (segment.getServingRules() != null && segment.getServingRules().size() > 1) {
segment.getServingRules().sort(Comparator.comparing(GroupServingRule::getPriority));
}
}

@NonNull
protected String formatFlagKey(@NonNull String identifier) {
return String.format("flags/%s", identifier);
Expand Down

0 comments on commit 434be3b

Please sign in to comment.