@@ -207,36 +207,40 @@ private void extensionsDiscovery() throws IOException {
207207 throw new IOException ("Could not read from extensions.yml" , e );
208208 }
209209 for (Extension extension : extensions ) {
210- try {
211- DiscoveryExtension discoveryExtension = new DiscoveryExtension (
212- extension .getName (),
213- extension .getUniqueId (),
214- // placeholder for ephemeral id, will change with POC discovery
215- extension .getUniqueId (),
216- extension .getHostName (),
217- extension .getHostAddress (),
218- new TransportAddress (InetAddress .getByName (extension .getHostAddress ()), Integer .parseInt (extension .getPort ())),
219- new HashMap <String , String >(),
220- Version .fromString (extension .getOpensearchVersion ()),
221- new PluginInfo (
210+ if (extensionIdMap .containsKey (extension .getUniqueId ())) {
211+ logger .info ("Duplicate uniqueId " + extension .getUniqueId () + ". Did not load extension: " + extension );
212+ } else {
213+ try {
214+ DiscoveryExtension discoveryExtension = new DiscoveryExtension (
222215 extension .getName (),
223- extension .getDescription (),
224- extension .getVersion (),
216+ extension .getUniqueId (),
217+ // placeholder for ephemeral id, will change with POC discovery
218+ extension .getUniqueId (),
219+ extension .getHostName (),
220+ extension .getHostAddress (),
221+ new TransportAddress (InetAddress .getByName (extension .getHostAddress ()), Integer .parseInt (extension .getPort ())),
222+ new HashMap <String , String >(),
225223 Version .fromString (extension .getOpensearchVersion ()),
226- extension .getJavaVersion (),
227- extension .getClassName (),
228- new ArrayList <String >(),
229- Boolean .parseBoolean (extension .hasNativeController ())
230- )
231- );
232- extensionsList .add (discoveryExtension );
233- extensionIdMap .put (extension .getUniqueId (), discoveryExtension );
234- logger .info ("Loaded extension: " + extension + " with id " + extension .getUniqueId ());
235- } catch (IllegalArgumentException e ) {
236- logger .error (e .toString ());
224+ new PluginInfo (
225+ extension .getName (),
226+ extension .getDescription (),
227+ extension .getVersion (),
228+ Version .fromString (extension .getOpensearchVersion ()),
229+ extension .getJavaVersion (),
230+ extension .getClassName (),
231+ new ArrayList <String >(),
232+ Boolean .parseBoolean (extension .hasNativeController ())
233+ )
234+ );
235+ extensionsList .add (discoveryExtension );
236+ extensionIdMap .put (extension .getUniqueId (), discoveryExtension );
237+ logger .info ("Loaded extension: " + extension + " with id " + extension .getUniqueId ());
238+ } catch (IllegalArgumentException e ) {
239+ logger .error (e .toString ());
240+ }
237241 }
238242 }
239- if (!extensionsList .isEmpty ()) {
243+ if (!extensionIdMap .isEmpty ()) {
240244 logger .info ("Loaded all extensions" );
241245 }
242246 } else {
@@ -245,12 +249,12 @@ private void extensionsDiscovery() throws IOException {
245249 }
246250
247251 public void extensionsInitialize () {
248- for (DiscoveryNode extensionNode : extensionsList ) {
249- extensionInitialize (extensionNode );
252+ for (DiscoveryExtension extension : extensionsList ) {
253+ extensionInitialize (extension );
250254 }
251255 }
252256
253- private void extensionInitialize (DiscoveryNode extensionNode ) {
257+ private void extensionInitialize (DiscoveryExtension extension ) {
254258 final CountDownLatch inProgressLatch = new CountDownLatch (1 );
255259 final TransportResponseHandler <InitializeExtensionsResponse > extensionResponseHandler = new TransportResponseHandler <
256260 InitializeExtensionsResponse >() {
@@ -285,11 +289,11 @@ public String executor() {
285289 };
286290 try {
287291 logger .info ("Sending extension request type: " + REQUEST_EXTENSION_ACTION_NAME );
288- transportService .connectToNode (extensionNode , true );
292+ transportService .connectToNode (extension , true );
289293 transportService .sendRequest (
290- extensionNode ,
294+ extension ,
291295 REQUEST_EXTENSION_ACTION_NAME ,
292- new InitializeExtensionsRequest (transportService .getLocalNode (), new ArrayList < DiscoveryExtension >( extensionsList ) ),
296+ new InitializeExtensionsRequest (transportService .getLocalNode (), extension ),
293297 extensionResponseHandler
294298 );
295299 inProgressLatch .await (100 , TimeUnit .SECONDS );
0 commit comments