Browse Source

Modularize blob cache and searchable snapshots (#94751)

This commit modularize tow more xpack plugins: blob cache and searchable
snapshots. It also modularizes the separate jar blob cache uses for
preallocating memory using jna.

relates #78744
Ryan Ernst 2 years ago
parent
commit
56633e0a29

+ 15 - 0
x-pack/plugin/blob-cache/preallocate/src/main/java/module-info.java

@@ -0,0 +1,15 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+module org.elasticsearch.blobcache.preallocate {
+    requires org.elasticsearch.base;
+    requires org.elasticsearch.server;
+    requires org.apache.logging.log4j;
+    requires com.sun.jna;
+
+    exports org.elasticsearch.blobcache.preallocate to org.elasticsearch.blobcache;
+}

+ 1 - 1
x-pack/plugin/blob-cache/preallocate/src/main/java/org/elasticsearch/xpack/searchablesnapshots/preallocate/LinuxPreallocator.java → x-pack/plugin/blob-cache/preallocate/src/main/java/org/elasticsearch/blobcache/preallocate/LinuxPreallocator.java

@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-package org.elasticsearch.xpack.searchablesnapshots.preallocate;
+package org.elasticsearch.blobcache.preallocate;
 
 import com.sun.jna.Native;
 import com.sun.jna.Platform;

+ 1 - 1
x-pack/plugin/blob-cache/preallocate/src/main/java/org/elasticsearch/xpack/searchablesnapshots/preallocate/MacOsPreallocator.java → x-pack/plugin/blob-cache/preallocate/src/main/java/org/elasticsearch/blobcache/preallocate/MacOsPreallocator.java

@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-package org.elasticsearch.xpack.searchablesnapshots.preallocate;
+package org.elasticsearch.blobcache.preallocate;
 
 import com.sun.jna.Native;
 import com.sun.jna.NativeLong;

+ 1 - 1
x-pack/plugin/blob-cache/preallocate/src/main/java/org/elasticsearch/xpack/searchablesnapshots/preallocate/NoNativePreallocator.java → x-pack/plugin/blob-cache/preallocate/src/main/java/org/elasticsearch/blobcache/preallocate/NoNativePreallocator.java

@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-package org.elasticsearch.xpack.searchablesnapshots.preallocate;
+package org.elasticsearch.blobcache.preallocate;
 
 final class NoNativePreallocator implements Preallocator {
 

+ 11 - 4
x-pack/plugin/blob-cache/preallocate/src/main/java/org/elasticsearch/xpack/searchablesnapshots/preallocate/Preallocate.java → x-pack/plugin/blob-cache/preallocate/src/main/java/org/elasticsearch/blobcache/preallocate/Preallocate.java

@@ -5,11 +5,10 @@
  * 2.0.
  */
 
-package org.elasticsearch.xpack.searchablesnapshots.preallocate;
+package org.elasticsearch.blobcache.preallocate;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-import org.apache.lucene.util.Constants;
 import org.elasticsearch.common.unit.ByteSizeValue;
 import org.elasticsearch.core.SuppressForbidden;
 
@@ -26,10 +25,18 @@ public class Preallocate {
 
     private static final Logger logger = LogManager.getLogger(Preallocate.class);
 
+    private static final boolean IS_LINUX;
+    private static final boolean IS_MACOS;
+    static {
+        String osName = System.getProperty("os.name");
+        IS_LINUX = osName.startsWith("Linux");
+        IS_MACOS = osName.startsWith("Mac OS X");
+    }
+
     public static void preallocate(final Path cacheFile, final long fileSize) throws IOException {
-        if (Constants.LINUX) {
+        if (IS_LINUX) {
             preallocate(cacheFile, fileSize, new LinuxPreallocator());
-        } else if (Constants.MAC_OS_X) {
+        } else if (IS_MACOS) {
             preallocate(cacheFile, fileSize, new MacOsPreallocator());
         } else {
             preallocate(cacheFile, fileSize, new NoNativePreallocator());

+ 1 - 1
x-pack/plugin/blob-cache/preallocate/src/main/java/org/elasticsearch/xpack/searchablesnapshots/preallocate/Preallocator.java → x-pack/plugin/blob-cache/preallocate/src/main/java/org/elasticsearch/blobcache/preallocate/Preallocator.java

@@ -5,7 +5,7 @@
  * 2.0.
  */
 
-package org.elasticsearch.xpack.searchablesnapshots.preallocate;
+package org.elasticsearch.blobcache.preallocate;
 
 /**
  * Represents platform native methods for pre-allocating files.

+ 19 - 0
x-pack/plugin/blob-cache/src/main/java/module-info.java

@@ -0,0 +1,19 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+module org.elasticsearch.blobcache {
+    requires org.elasticsearch.base;
+    requires org.elasticsearch.server;
+    requires org.elasticsearch.blobcache.preallocate;
+
+    requires org.apache.logging.log4j;
+    requires org.apache.lucene.core;
+
+    exports org.elasticsearch.blobcache;
+    exports org.elasticsearch.blobcache.common;
+    exports org.elasticsearch.blobcache.shared;
+}

+ 1 - 1
x-pack/plugin/blob-cache/src/main/java/org/elasticsearch/blobcache/shared/SharedBytes.java

@@ -11,6 +11,7 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.elasticsearch.blobcache.BlobCacheUtils;
 import org.elasticsearch.blobcache.common.ByteBufferReference;
+import org.elasticsearch.blobcache.preallocate.Preallocate;
 import org.elasticsearch.common.unit.ByteSizeValue;
 import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
 import org.elasticsearch.core.AbstractRefCounted;
@@ -18,7 +19,6 @@ import org.elasticsearch.core.IOUtils;
 import org.elasticsearch.core.SuppressForbidden;
 import org.elasticsearch.env.Environment;
 import org.elasticsearch.env.NodeEnvironment;
-import org.elasticsearch.xpack.searchablesnapshots.preallocate.Preallocate;
 
 import java.io.IOException;
 import java.io.InputStream;

+ 22 - 0
x-pack/plugin/searchable-snapshots/src/main/java/module-info.java

@@ -0,0 +1,22 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+module org.elasticsearch.searchablesnapshots {
+    requires org.elasticsearch.base;
+    requires org.elasticsearch.server;
+    requires org.elasticsearch.xcore;
+    requires org.elasticsearch.xcontent;
+
+    requires org.elasticsearch.blobcache;
+
+    requires org.apache.logging.log4j;
+    requires org.apache.lucene.core;
+    requires org.apache.lucene.analysis.common;
+
+    exports org.elasticsearch.xpack.searchablesnapshots.action.cache to org.elasticsearch.server;
+    exports org.elasticsearch.xpack.searchablesnapshots.action to org.elasticsearch.server;
+}