Skip to content
This repository was archived by the owner on Jan 31, 2022. It is now read-only.

Commit c398973

Browse files
author
Clément Le Provost
committed
Merge pull request #76 from algolia/feat/shuffle-hosts
Shuffle host array at client init time
2 parents ccd9cc9 + 00b090a commit c398973

File tree

1 file changed

+18
-8
lines changed
  • algoliasearch/src/main/java/com/algolia/search/saas

1 file changed

+18
-8
lines changed

algoliasearch/src/main/java/com/algolia/search/saas/Client.java

+18-8
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@
4242
import java.net.HttpURLConnection;
4343
import java.net.URL;
4444
import java.net.URLEncoder;
45+
import java.util.ArrayList;
4546
import java.util.Arrays;
47+
import java.util.Collections;
4648
import java.util.HashMap;
4749
import java.util.List;
4850
import java.util.Map;
@@ -111,18 +113,26 @@ public Client(@NonNull String applicationID, @NonNull String apiKey, String[] ho
111113
setReadHosts(hosts);
112114
setWriteHosts(hosts);
113115
} else {
114-
setReadHosts(
115-
applicationID + "-dsn.algolia.net",
116-
applicationID + "-1.algolianet.com",
117-
applicationID + "-2.algolianet.com",
118-
applicationID + "-3.algolianet.com"
119-
);
120-
setWriteHosts(
121-
applicationID + ".algolia.net",
116+
// Initialize hosts to their default values.
117+
//
118+
// NOTE: The host list comes in two parts:
119+
//
120+
// 1. The fault-tolerant, load-balanced DNS host.
121+
// 2. The non-fault-tolerant hosts. Those hosts must be randomized to ensure proper load balancing in case
122+
// of the first host's failure.
123+
//
124+
List<String> fallbackHosts = Arrays.asList(
122125
applicationID + "-1.algolianet.com",
123126
applicationID + "-2.algolianet.com",
124127
applicationID + "-3.algolianet.com"
125128
);
129+
Collections.shuffle(fallbackHosts);
130+
readHosts = new ArrayList<>(fallbackHosts.size() + 1);
131+
readHosts.add(applicationID + "-dsn.algolia.net");
132+
readHosts.addAll(fallbackHosts);
133+
writeHosts = new ArrayList<>(fallbackHosts.size() + 1);
134+
writeHosts.add(applicationID + ".algolia.net");
135+
writeHosts.addAll(fallbackHosts);
126136
}
127137
}
128138

0 commit comments

Comments
 (0)