You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by kr...@apache.org on 2022/11/28 18:07:40 UTC

[solr] branch branch_9x updated (de56a43464c -> 0cc7159e0a6)

This is an automated email from the ASF dual-hosted git repository.

krisden pushed a change to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git


    from de56a43464c SOLR-15749: Create v2 equivalent for 'rename' collection API
     new 8fc4a1b5eda Modifying github actions to run on all branches including ones with slashes (#1157)
     new dc6d47f9984 SOLR-16508: Upgrade gradle wrapper to 7.6 (#1147)
     new b0eff2ca815 SOLR-16553: solr.install.dir property not initialized
     new 0cc7159e0a6 SOLR-16559: Fix benchmark module warnings/errors

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/gradle-precommit.yml             |  2 +-
 .../apache/lucene/gradle/WrapperDownloader.java    |  4 +--
 gradle/testing/alternative-jdk-support.gradle      |  5 +--
 gradle/validation/check-environment.gradle         |  2 +-
 gradle/wrapper/gradle-wrapper.jar.sha256           |  2 +-
 gradle/wrapper/gradle-wrapper.jar.version          |  2 +-
 gradle/wrapper/gradle-wrapper.properties           |  3 +-
 gradlew                                            | 20 +++++++++---
 gradlew.bat                                        | 17 ++++++----
 solr/CHANGES.txt                                   |  2 ++
 solr/benchmark/build.gradle                        |  2 +-
 solr/benchmark/log4j2-bench.xml                    | 19 +++++++----
 .../src/java/org/apache/solr/core/NodeConfig.java  | 37 +++++++++++++++++-----
 .../org/apache/solr/core/TestCoreContainer.java    |  5 +--
 14 files changed, 81 insertions(+), 41 deletions(-)


[solr] 02/04: SOLR-16508: Upgrade gradle wrapper to 7.6 (#1147)

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krisden pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git

commit dc6d47f9984ac16e0169befe3cb4b75f358cdf1f
Author: Kevin Risden <ri...@users.noreply.github.com>
AuthorDate: Mon Nov 28 12:50:48 2022 -0500

    SOLR-16508: Upgrade gradle wrapper to 7.6 (#1147)
---
 .../org/apache/lucene/gradle/WrapperDownloader.java  |  4 ++--
 gradle/testing/alternative-jdk-support.gradle        |  5 +++--
 gradle/validation/check-environment.gradle           |  2 +-
 gradle/wrapper/gradle-wrapper.jar.sha256             |  2 +-
 gradle/wrapper/gradle-wrapper.jar.version            |  2 +-
 gradle/wrapper/gradle-wrapper.properties             |  3 ++-
 gradlew                                              | 20 +++++++++++++++-----
 gradlew.bat                                          | 17 ++++++++++-------
 solr/CHANGES.txt                                     |  2 ++
 9 files changed, 37 insertions(+), 20 deletions(-)

diff --git a/buildSrc/src/main/java/org/apache/lucene/gradle/WrapperDownloader.java b/buildSrc/src/main/java/org/apache/lucene/gradle/WrapperDownloader.java
index 05d5934636f..a544b6fe735 100644
--- a/buildSrc/src/main/java/org/apache/lucene/gradle/WrapperDownloader.java
+++ b/buildSrc/src/main/java/org/apache/lucene/gradle/WrapperDownloader.java
@@ -61,8 +61,8 @@ public class WrapperDownloader {
 
   public static void checkVersion() {
     int major = Runtime.getRuntime().version().feature();
-    if (major < 11 || major > 18) {
-      throw new IllegalStateException("java version must be between 11 and 18, your version: " + major);
+    if (major < 11 || major > 19) {
+      throw new IllegalStateException("java version must be between 11 and 19, your version: " + major);
     }
   }
 
diff --git a/gradle/testing/alternative-jdk-support.gradle b/gradle/testing/alternative-jdk-support.gradle
index d36bd22caee..72cdabdab4b 100644
--- a/gradle/testing/alternative-jdk-support.gradle
+++ b/gradle/testing/alternative-jdk-support.gradle
@@ -3,6 +3,7 @@ import org.gradle.internal.jvm.JavaInfo
 import org.gradle.internal.jvm.Jvm
 import org.gradle.internal.jvm.inspection.JvmInstallationMetadata
 import org.gradle.internal.jvm.inspection.JvmMetadataDetector
+import org.gradle.jvm.toolchain.internal.InstallationLocation
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -49,7 +50,7 @@ if (jvmGradle != jvmCurrent) {
       doFirst {
 
         def jvmInfo = { JavaInfo javaInfo ->
-          JvmInstallationMetadata jvmMetadata = jvmDetector.getMetadata(javaInfo.javaHome)
+          JvmInstallationMetadata jvmMetadata = jvmDetector.getMetadata(new InstallationLocation(javaInfo.javaHome, "specific path"))
           return "${jvmMetadata.languageVersion} (${jvmMetadata.displayName} ${jvmMetadata.runtimeVersion}, home at: ${jvmMetadata.javaHome})"
         }
 
@@ -86,6 +87,6 @@ if (jvmGradle != jvmCurrent) {
 
 // Set up root project's properties.
 rootProject.ext.runtimeJavaHome = jvmCurrent.javaHome
-rootProject.ext.runtimeJavaVersion = jvmDetector.getMetadata(jvmCurrent.javaHome).languageVersion
+rootProject.ext.runtimeJavaVersion = jvmDetector.getMetadata(new InstallationLocation(jvmCurrent.javaHome, "specific path")).getLanguageVersion()
 rootProject.ext.usesAltJvm = (jvmGradle != jvmCurrent);
 
diff --git a/gradle/validation/check-environment.gradle b/gradle/validation/check-environment.gradle
index 3657af23327..0fddf093c09 100644
--- a/gradle/validation/check-environment.gradle
+++ b/gradle/validation/check-environment.gradle
@@ -22,7 +22,7 @@ import org.gradle.util.GradleVersion
 
 configure(rootProject) {
   ext {
-    expectedGradleVersion = '7.5.1'
+    expectedGradleVersion = '7.6'
   }
 
   wrapper {
diff --git a/gradle/wrapper/gradle-wrapper.jar.sha256 b/gradle/wrapper/gradle-wrapper.jar.sha256
index df2c115272e..b5168d2a1ff 100644
--- a/gradle/wrapper/gradle-wrapper.jar.sha256
+++ b/gradle/wrapper/gradle-wrapper.jar.sha256
@@ -1 +1 @@
-91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60
+c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a
diff --git a/gradle/wrapper/gradle-wrapper.jar.version b/gradle/wrapper/gradle-wrapper.jar.version
index a5f017a0a34..93c8ddab9fe 100644
--- a/gradle/wrapper/gradle-wrapper.jar.version
+++ b/gradle/wrapper/gradle-wrapper.jar.version
@@ -1 +1 @@
-7.5.1
+7.6.0
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index ae04661ee73..f398c33c4b0 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
+networkTimeout=10000
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 7cdc46bd717..59dd3f7eb88 100755
--- a/gradlew
+++ b/gradlew
@@ -55,7 +55,7 @@
 #       Darwin, MinGW, and NonStop.
 #
 #   (3) This script is generated from the Groovy template
-#       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+#       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
 #       within the Gradle project.
 #
 #       You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,10 +80,10 @@ do
     esac
 done
 
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
+# This is normally unused
+# shellcheck disable=SC2034
 APP_BASE_NAME=${0##*/}
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
 
 # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
@@ -155,7 +155,7 @@ GRADLE_WRAPPER_JAR="$APP_HOME/gradle/wrapper/gradle-wrapper.jar"
 "$JAVACMD" $JAVA_OPTS --source 11 "$APP_HOME/buildSrc/src/main/java/org/apache/lucene/gradle/WrapperDownloader.java" "$GRADLE_WRAPPER_JAR"
 WRAPPER_STATUS=$?
 if [ "$WRAPPER_STATUS" -eq 1 ]; then
-    echo "ERROR: Something went wrong. Make sure you're using Java 11 - 18."
+    echo "ERROR: Something went wrong. Make sure you're using Java 11 - 19."
     exit $WRAPPER_STATUS
 elif [ "$WRAPPER_STATUS" -ne 0 ]; then
     exit $WRAPPER_STATUS
@@ -173,12 +173,16 @@ fi
 if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
     case $MAX_FD in #(
       max*)
+        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+        # shellcheck disable=SC3045 
         MAX_FD=$( ulimit -H -n ) ||
             warn "Could not query maximum file descriptor limit"
     esac
     case $MAX_FD in  #(
       '' | soft) :;; #(
       *)
+        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+        # shellcheck disable=SC3045 
         ulimit -n "$MAX_FD" ||
             warn "Could not set maximum file descriptor limit to $MAX_FD"
     esac
@@ -236,6 +240,12 @@ set -- \
         $GRADLE_DAEMON_CTRL  \
         "$@"
 
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+    die "xargs is not available"
+fi
+
 # Use "xargs" to parse quoted args.
 #
 # With -n1 it outputs one arg per line, with the quotes and backslashes removed.
diff --git a/gradlew.bat b/gradlew.bat
index 07fb876d09a..964ab6aced2 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -14,7 +14,7 @@
 @rem limitations under the License.
 @rem
 
-@if "%DEBUG%" == "" @echo off
+@if "%DEBUG%"=="" @echo off
 @rem ##########################################################################
 @rem
 @rem  Gradle startup script for Windows
@@ -25,7 +25,8 @@
 if "%OS%"=="Windows_NT" setlocal
 
 set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
 set APP_BASE_NAME=%~n0
 set APP_HOME=%DIRNAME%
 
@@ -45,7 +46,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
 
 set JAVA_EXE=java.exe
 %JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
+if %ERRORLEVEL% equ 0 goto execute
 
 echo.
 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -88,16 +89,18 @@ IF NOT EXIST "%DIRNAME%\gradle.properties" SET GRADLE_DAEMON_CTRL=--no-daemon
 
 :end
 @rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 0 goto mainEnd
 
 :fail
 @rem https://github.com/apache/lucene/pull/819
-echo Error: Something went wrong. Make sure you're using Java 11 - 18.
+echo Error: Something went wrong. Make sure you're using Java 11 - 19.
 
 rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
 
 :mainEnd
 if "%OS%"=="Windows_NT" endlocal
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index d5f82c07b9e..fb78f55e1d6 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -92,6 +92,8 @@ Build
 
 * SOLR-16442: Upgrade to Lucene 9.4.1 (Christine Poerschke)
 
+* SOLR-16508: Upgrade gradle wrapper to 7.6 (Kevin Risden)
+
 Other Changes
 ---------------------
 * SOLR-16545: Upgrade Carrot2 to 4.5.0 (Dawid Weiss)


[solr] 04/04: SOLR-16559: Fix benchmark module warnings/errors

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krisden pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git

commit 0cc7159e0a6d2e5b55b5a2f0fb9fda6b3e6e8f6e
Author: Kevin Risden <kr...@apache.org>
AuthorDate: Tue Nov 22 13:22:48 2022 -0500

    SOLR-16559: Fix benchmark module warnings/errors
---
 solr/benchmark/build.gradle     |  2 +-
 solr/benchmark/log4j2-bench.xml | 19 ++++++++++++-------
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/solr/benchmark/build.gradle b/solr/benchmark/build.gradle
index 8575d36dc0f..6a651a4309e 100644
--- a/solr/benchmark/build.gradle
+++ b/solr/benchmark/build.gradle
@@ -57,6 +57,6 @@ dependencies {
   implementation 'org.quicktheories:quicktheories'
   implementation 'org.openjdk.jmh:jmh-core'
   implementation 'org.slf4j:slf4j-api'
+  runtimeOnly 'com.lmax:disruptor'
   annotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess'
-  implementation 'org.slf4j:slf4j-api'
 }
diff --git a/solr/benchmark/log4j2-bench.xml b/solr/benchmark/log4j2-bench.xml
index 99c0903c7dc..29db12fc23b 100644
--- a/solr/benchmark/log4j2-bench.xml
+++ b/solr/benchmark/log4j2-bench.xml
@@ -64,20 +64,22 @@
     </RollingRandomAccessFile>
 
 
-    <RandomAccessFile
+    <RollingRandomAccessFile
         name="RandomCountsFile"
-        fileName="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_random_counts.log">
+        fileName="${sys:solr.log.dir:-work/solr-logs}/${sys:solr.log.name:-solr}_random_counts.log"
+        filePattern="${sys:solr.log.dir:-work/solr-logs}/${sys:solr.log.name:-solr}_random_counts.log.%i">
       <PatternLayout>
         <Pattern>
           %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ r:%X{replica}}%notEmpty{ x:%X{core}}] %c{1.}
           %m%notEmpty{ =>%ex{short}}}{10240}%n
         </Pattern>
       </PatternLayout>
-    </RandomAccessFile>
-    <AsyncLogger name="org.apache.solr.bench.BaseBenchState.RandomCounts" level="info" additivity="false">
-      <AppenderRef ref="RandomCountsFile"/>
-    </AsyncLogger>
-
+      <Policies>
+        <OnStartupTriggeringPolicy/>
+        <SizeBasedTriggeringPolicy size="128 MB"/>
+      </Policies>
+      <DefaultRolloverStrategy max="10"/>
+    </RollingRandomAccessFile>
   </Appenders>
   <Loggers>
     <!-- Use <AsyncLogger/<AsyncRoot and <Logger/<Root for asynchronous logging or synchonous logging respectively -->
@@ -92,6 +94,9 @@
     <AsyncLogger name="org.apache.solr.core.SolrCore.SlowRequest" level="info" additivity="false">
       <AppenderRef ref="SlowLogFile"/>
     </AsyncLogger>
+    <AsyncLogger name="org.apache.solr.bench.BaseBenchState.RandomCounts" level="info" additivity="false">
+      <AppenderRef ref="RandomCountsFile"/>
+    </AsyncLogger>
 
     <AsyncRoot level="info">
       <AppenderRef ref="MainLogFile"/>


[solr] 01/04: Modifying github actions to run on all branches including ones with slashes (#1157)

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krisden pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git

commit 8fc4a1b5eda62e2f2e7030a1061e4ad70470fa8e
Author: Justin Sweeney <ju...@fullstory.com>
AuthorDate: Mon Nov 28 12:49:58 2022 -0500

    Modifying github actions to run on all branches including ones with slashes (#1157)
---
 .github/workflows/gradle-precommit.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/gradle-precommit.yml b/.github/workflows/gradle-precommit.yml
index bf1eeaa7993..73bb5367605 100644
--- a/.github/workflows/gradle-precommit.yml
+++ b/.github/workflows/gradle-precommit.yml
@@ -3,7 +3,7 @@ name: Gradle Precommit
 on: 
   pull_request:
     branches:
-    - '*'
+    - '**'
 
 jobs:
   test:


[solr] 03/04: SOLR-16553: solr.install.dir property not initialized

Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

krisden pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git

commit b0eff2ca815c2ec6b0487df4a77a694065c7eb43
Author: Kevin Risden <kr...@apache.org>
AuthorDate: Tue Nov 22 13:21:54 2022 -0500

    SOLR-16553: solr.install.dir property not initialized
---
 .../src/java/org/apache/solr/core/NodeConfig.java  | 37 +++++++++++++++++-----
 .../org/apache/solr/core/TestCoreContainer.java    |  5 +--
 2 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/NodeConfig.java b/solr/core/src/java/org/apache/solr/core/NodeConfig.java
index 10bd39ec55c..ad9f9844ee1 100644
--- a/solr/core/src/java/org/apache/solr/core/NodeConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/NodeConfig.java
@@ -253,13 +253,13 @@ public class NodeConfig {
   /**
    * Obtain the path of solr's binary installation directory, e.g. <code>/opt/solr</code>
    *
-   * @return path to install dir
-   * @throws SolrException if property 'solr.install.dir' has not been initialized
+   * @return path to install dir or null if solr.install.dir not set.
    */
   public Path getSolrInstallDir() {
     String prop = System.getProperty(SolrDispatchFilter.SOLR_INSTALL_DIR_ATTRIBUTE);
     if (prop == null || prop.isBlank()) {
-      throw new SolrException(ErrorCode.SERVER_ERROR, "solr.install.dir property not initialized");
+      log.debug("solr.install.dir property not initialized.");
+      return null;
     }
     return Paths.get(prop);
   }
@@ -436,8 +436,15 @@ public class NodeConfig {
     Set<String> libDirs = new LinkedHashSet<>();
     libDirs.add("lib");
 
-    // Always add $SOLR_TIP/lib to the shared resource loader
-    libDirs.add(getSolrInstallDir().resolve("lib").toAbsolutePath().normalize().toString());
+    Path solrInstallDir = getSolrInstallDir();
+    if (solrInstallDir == null) {
+      log.warn(
+          "Unable to add $SOLR_HOME/lib for shared lib since {} was not set.",
+          SolrDispatchFilter.SOLR_INSTALL_DIR_ATTRIBUTE);
+    } else {
+      // Always add $SOLR_TIP/lib to the shared resource loader
+      libDirs.add(solrInstallDir.resolve("lib").toAbsolutePath().normalize().toString());
+    }
 
     if (!StringUtils.isBlank(getSharedLibDirectory())) {
       List<String> sharedLibs = Arrays.asList(getSharedLibDirectory().split("\\s*,\\s*"));
@@ -478,16 +485,30 @@ public class NodeConfig {
   private void initModules() {
     var moduleNames = ModuleUtils.resolveModulesFromStringOrSyspropOrEnv(getModules());
     boolean modified = false;
+
+    Path solrInstallDir = getSolrInstallDir();
+    if (solrInstallDir == null) {
+      if (!moduleNames.isEmpty()) {
+        throw new SolrException(
+            ErrorCode.SERVER_ERROR,
+            "Unable to setup modules "
+                + moduleNames
+                + " because "
+                + SolrDispatchFilter.SOLR_INSTALL_DIR_ATTRIBUTE
+                + " was not set.");
+      }
+      return;
+    }
     for (String m : moduleNames) {
-      if (!ModuleUtils.moduleExists(getSolrInstallDir(), m)) {
+      if (!ModuleUtils.moduleExists(solrInstallDir, m)) {
         log.error(
             "No module with name {}, available modules are {}",
             m,
-            ModuleUtils.listAvailableModules(getSolrInstallDir()));
+            ModuleUtils.listAvailableModules(solrInstallDir));
         // Fail-fast if user requests a non-existing module
         throw new SolrException(ErrorCode.SERVER_ERROR, "No module with name " + m);
       }
-      Path moduleLibPath = ModuleUtils.getModuleLibPath(getSolrInstallDir(), m);
+      Path moduleLibPath = ModuleUtils.getModuleLibPath(solrInstallDir, m);
       if (Files.exists(moduleLibPath)) {
         try {
           List<URL> urls = SolrResourceLoader.getURLs(moduleLibPath);
diff --git a/solr/core/src/test/org/apache/solr/core/TestCoreContainer.java b/solr/core/src/test/org/apache/solr/core/TestCoreContainer.java
index a536191ad50..41eeb5e78a0 100644
--- a/solr/core/src/test/org/apache/solr/core/TestCoreContainer.java
+++ b/solr/core/src/test/org/apache/solr/core/TestCoreContainer.java
@@ -496,10 +496,7 @@ public class TestCoreContainer extends SolrTestCaseJ4 {
       Path solrInstallDir = cores.getConfig().getSolrInstallDir();
       assertTrue(
           "solrInstallDir was " + solrInstallDir,
-          solrInstallDir != null
-              && installDirPath
-                  .toString()
-                  .equals(cores.getConfig().getSolrInstallDir().toString()));
+          solrInstallDir != null && installDirPath.toString().equals(solrInstallDir.toString()));
       // Proves that <solr-install-dir>/lib/jar1.jar is found, and the resource inside available
       assertNotNull(cores.getResourceLoader().openResource("solrInstallDirLibResource"));
     } finally {