I want to install the CCR (Cross-Cluster Replication) plugin on a custom OpenSearch instance, but it's not working

Versions (relevant - OpenSearch/Dashboard/Server OS/Browser):
I downloaded OpenSearch 3.0.0 snapshot from GitHub.

Describe the issue:
When I tried to download and install the CCR (Cross-Cluster Replication) plugin version 2.9.0 using the bin/opensearch-plugin install command, it failed due to version incompatibility.

[root@871398ffa22d opensearch]# bin/opensearch-plugin install https://repo1.maven.org/maven2/org/opensearch/plugin/opensearch-cross-cluster-replication/2.9.0.0/opensearch-cross-cluster-reption-2.9.0.0.zip
-> Installing https://repo1.maven.org/maven2/org/opensearch/plugin/opensearch-cross-cluster-replication/2.9.0.0/opensearch-cross-cluster-replication-2.9.0.0.zip
-> Downloading https://repo1.maven.org/maven2/org/opensearch/plugin/opensearch-cross-cluster-replication/2.9.0.0/opensearch-cross-cluster-replication-2.9.0.0.zip
[=================================================] 100%   
-> Failed installing https://repo1.maven.org/maven2/org/opensearch/plugin/opensearch-cross-cluster-replication/2.9.0.0/opensearch-cross-cluster-replication-2.9.0.0.zip
-> Rolling back https://repo1.maven.org/maven2/org/opensearch/plugin/opensearch-cross-cluster-replication/2.9.0.0/opensearch-cross-cluster-replication-2.9.0.0.zip
-> Rolled back https://repo1.maven.org/maven2/org/opensearch/plugin/opensearch-cross-cluster-replication/2.9.0.0/opensearch-cross-cluster-replication-2.9.0.0.zip
Exception in thread "main" java.lang.IllegalArgumentException: Plugin [opensearch-cross-cluster-replication] was built for OpenSearch version 2.9.0 but version 3.0.0 is running
	at org.opensearch.plugins.PluginsService.verifyCompatibility(PluginsService.java:397)
	at org.opensearch.plugins.InstallPluginCommand.loadPluginInfo(InstallPluginCommand.java:819)
	at org.opensearch.plugins.InstallPluginCommand.installPlugin(InstallPluginCommand.java:874)
	at org.opensearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:276)
	at org.opensearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:250)
	at org.opensearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:104)
	at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
	at org.opensearch.cli.MultiCommand.execute(MultiCommand.java:104)
	at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
	at org.opensearch.cli.Command.main(Command.java:101)
	at org.opensearch.plugins.PluginCli.main(PluginCli.java:66)

I downloaded the OpenSearch Cross-Cluster Replication (CCR), assembled it, and attempted to install the plugin from the resulting zip file. However, an error occurred during the installation process.

-> Installing file:///usr/share/opensearch/plugins/opensearch-cross-cluster-replication-3.0.0.0-SNAPSHOT.zip
-> Downloading file:///usr/share/opensearch/plugins/opensearch-cross-cluster-replication-3.0.0.0-SNAPSHOT.zip
[=================================================] 100%   
-> Failed installing file:///usr/share/opensearch/plugins/opensearch-cross-cluster-replication-3.0.0.0-SNAPSHOT.zip
-> Rolling back file:///usr/share/opensearch/plugins/opensearch-cross-cluster-replication-3.0.0.0-SNAPSHOT.zip
-> Rolled back file:///usr/share/opensearch/plugins/opensearch-cross-cluster-replication-3.0.0.0-SNAPSHOT.zip
Exception in thread "main" java.lang.IllegalStateException: Could not load plugin descriptor for plugin directory [opensearch-cross-cluster-replication-3.0.0.0-SNAPSHOT.zip]
   at org.opensearch.plugins.PluginsService.readPluginBundle(PluginsService.java:467)
   at org.opensearch.plugins.PluginsService.findBundles(PluginsService.java:452)
   at org.opensearch.plugins.PluginsService.getPluginBundles(PluginsService.java:445)
   at org.opensearch.plugins.InstallPluginCommand.jarHellCheck(InstallPluginCommand.java:852)
   at org.opensearch.plugins.InstallPluginCommand.loadPluginInfo(InstallPluginCommand.java:829)
   at org.opensearch.plugins.InstallPluginCommand.installPlugin(InstallPluginCommand.java:874)
   at org.opensearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:276)
   at org.opensearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:250)
   at org.opensearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:104)
   at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
   at org.opensearch.cli.MultiCommand.execute(MultiCommand.java:104)
   at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
   at org.opensearch.cli.Command.main(Command.java:101)
   at org.opensearch.plugins.PluginCli.main(PluginCli.java:66)
Caused by: java.nio.file.FileSystemException: /usr/share/opensearch/plugins/opensearch-cross-cluster-replication-3.0.0.0-SNAPSHOT.zip/plugin-descriptor.properties: Not a directory
   at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100)
   at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
   at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
   at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:261)
   at java.base/java.nio.file.Files.newByteChannel(Files.java:379)
   at java.base/java.nio.file.Files.newByteChannel(Files.java:431)
   at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420)
   at java.base/java.nio.file.Files.newInputStream(Files.java:159)
   at org.opensearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:252)
   at org.opensearch.plugins.PluginsService.readPluginBundle(PluginsService.java:464)
   ... 13 more

Hi @sbilac ,

Could you please send the URL where you found the OpenSearch 3.0.0 snapshot?

Hi @Eugene7. :grinning:

I cloned the OpenSearch GitHub repository directly, made modifications, and deployed a custom OpenSearch instance using Docker.

Currently, I’m following the guidance from this post to resolve the issue:

I suspect the problem arose because the location for storing the plugin was incorrect when installing the plugin via the zip file.

If I successfully build it, I’ll share the outcome.

Thank you for your comment!