diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml
new file mode 100644
index 0000000000..7bf144fbb9
--- /dev/null
+++ b/.github/workflows/maven-build.yml
@@ -0,0 +1,96 @@
+#
+# Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This workflow will build a Java project with Maven
+# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
+
+name: build on maven
+
+on:
+ watch:
+ types: [started]
+ pull_request:
+ types: [opened, reopened, edited, synchronize, ready_for_review]
+ push:
+ branches:
+ - main
+ - master
+ - '**'
+
+ workflow_dispatch:
+
+jobs:
+ verify:
+ name: verify with maven
+ runs-on: ubuntu-latest
+ env:
+ MAVEN_OPTS: "-Xmx4096m -Xms2048m -XX:MaxMetaspaceSize=4096m -Xss8m"
+ SKIP_NPM_CONFIG: false
+ NPMREGISTRY: https://registry.npmjs.org
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up JDK 8 & 11 for x64
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ architecture: x64
+ java-version: |
+ 8
+ 11
+
+ - uses: s4u/maven-settings-action@v2.8.0
+ with:
+ sonatypeSnapshots: true
+
+ - name: Build the Maven verify phase
+ run: mvn -B -V clean verify -Pci --global-toolchains .github/workflows/toolchains.xml
+
+ build:
+ name: Build and push
+ runs-on: ubuntu-latest
+ needs: verify
+ if: ${{ github.event_name == 'push' }}
+ env:
+ MAVEN_OPTS: "-Xmx4096m -Xms2048m -XX:MaxMetaspaceSize=4096m -Xss8m"
+ SKIP_NPM_CONFIG: false
+ NPMREGISTRY: https://registry.npmjs.org
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up JDK 8 & 11 for x64
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ architecture: x64
+ java-version: |
+ 8
+ 11
+
+ - uses: s4u/maven-settings-action@v2.8.0
+ with:
+ servers: |
+ [{
+ "id": "sonatype-nexus-snapshots",
+ "username": "${{ secrets.SONATYPE_BOT_USERNAME }}",
+ "password": "${{ secrets.SONATYPE_BOT_TOKEN }}"
+ }]
+
+ - name: Build with toolchains
+ run: mvn -B -V clean install -DskipNpmConfig=false --global-toolchains .github/workflows/toolchains.xml
+
+ - name: Deploy the artifact
+ run: mvn help:effective-settings -B -V -DskipTests=true -DskipNpmConfig=false deploy -e --global-toolchains .github/workflows/toolchains.xml
diff --git a/.github/workflows/toolchains.xml b/.github/workflows/toolchains.xml
new file mode 100644
index 0000000000..2cfee79899
--- /dev/null
+++ b/.github/workflows/toolchains.xml
@@ -0,0 +1,40 @@
+
+
+
+
+ jdk
+
+ 1.8
+ OpenJDK
+
+
+ /usr/lib/jvm/temurin-8-jdk-amd64
+
+
+
+ jdk
+
+ 11
+ OpenJDK
+
+
+ /usr/lib/jvm/temurin-11-jdk-amd64
+
+
+
diff --git a/addons/changelog/client-java/pom.xml b/addons/changelog/client-java/pom.xml
index 2f1177cae8..b5c21c5b9e 100644
--- a/addons/changelog/client-java/pom.xml
+++ b/addons/changelog/client-java/pom.xml
@@ -20,7 +20,7 @@
indy-changelog
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
diff --git a/addons/changelog/common/pom.xml b/addons/changelog/common/pom.xml
index cd7057c3c3..cb16474e94 100644
--- a/addons/changelog/common/pom.xml
+++ b/addons/changelog/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-changelog
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-changelog-common
Indy :: Add-Ons :: ChangeLog :: Common
diff --git a/addons/changelog/ftests/pom.xml b/addons/changelog/ftests/pom.xml
index ced20cdb4c..4a2c9c4bd8 100644
--- a/addons/changelog/ftests/pom.xml
+++ b/addons/changelog/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-changelog
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-changelog
diff --git a/addons/changelog/jaxrs/pom.xml b/addons/changelog/jaxrs/pom.xml
index a5c0500beb..1af24dbf40 100644
--- a/addons/changelog/jaxrs/pom.xml
+++ b/addons/changelog/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-changelog
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-changelog-jaxrs
diff --git a/addons/changelog/pom.xml b/addons/changelog/pom.xml
index 0d8f5c7235..d5cad9f011 100644
--- a/addons/changelog/pom.xml
+++ b/addons/changelog/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-changelog
Indy :: Add-Ons :: ChangeLog :: Parent
diff --git a/addons/content-browse/client-java/pom.xml b/addons/content-browse/client-java/pom.xml
index e32476a070..88ed251615 100644
--- a/addons/content-browse/client-java/pom.xml
+++ b/addons/content-browse/client-java/pom.xml
@@ -20,7 +20,7 @@
indy-content-browse
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
4.0.0
diff --git a/addons/content-browse/common/pom.xml b/addons/content-browse/common/pom.xml
index 54dc4de9d6..d952b7806f 100644
--- a/addons/content-browse/common/pom.xml
+++ b/addons/content-browse/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-content-browse
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-content-browse-common
Indy :: Add-Ons :: Directory Content Browse :: Common
diff --git a/addons/content-browse/common/src/main/java/org/commonjava/indy/content/browse/ContentBrowseController.java b/addons/content-browse/common/src/main/java/org/commonjava/indy/content/browse/ContentBrowseController.java
index c3a80d2ece..e4f44a6082 100644
--- a/addons/content-browse/common/src/main/java/org/commonjava/indy/content/browse/ContentBrowseController.java
+++ b/addons/content-browse/common/src/main/java/org/commonjava/indy/content/browse/ContentBrowseController.java
@@ -21,8 +21,7 @@
import org.commonjava.indy.content.browse.model.ContentBrowseResult;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.measure.annotation.MetricNamed;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.model.galley.KeyedLocation;
@@ -44,7 +43,6 @@
import java.util.Set;
import java.util.TreeMap;
-import static org.commonjava.indy.measure.annotation.MetricNamed.DEFAULT;
import static org.commonjava.maven.galley.util.PathUtils.normalize;
import static org.commonjava.maven.galley.util.PathUtils.parentPath;
diff --git a/addons/content-browse/common/src/main/resources/META-INF/beans.xml b/addons/content-browse/common/src/main/resources/META-INF/beans.xml
index 5d417ccdd6..a1000f99d3 100644
--- a/addons/content-browse/common/src/main/resources/META-INF/beans.xml
+++ b/addons/content-browse/common/src/main/resources/META-INF/beans.xml
@@ -1,13 +1,20 @@
org.commonjava.indy
indy-content-browse
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-ftests-content-browse
diff --git a/addons/content-browse/jaxrs/pom.xml b/addons/content-browse/jaxrs/pom.xml
index 757ddd3627..5d113bf2d2 100644
--- a/addons/content-browse/jaxrs/pom.xml
+++ b/addons/content-browse/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-content-browse
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-content-browse-jaxrs
diff --git a/addons/content-browse/jaxrs/src/main/java/org/commonjava/indy/content/browse/bind/jaxrs/ContentBrowseResource.java b/addons/content-browse/jaxrs/src/main/java/org/commonjava/indy/content/browse/bind/jaxrs/ContentBrowseResource.java
index f6180407c7..03ae103c0f 100644
--- a/addons/content-browse/jaxrs/src/main/java/org/commonjava/indy/content/browse/bind/jaxrs/ContentBrowseResource.java
+++ b/addons/content-browse/jaxrs/src/main/java/org/commonjava/indy/content/browse/bind/jaxrs/ContentBrowseResource.java
@@ -22,7 +22,7 @@
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.IndyWorkflowException;
import org.commonjava.indy.bind.jaxrs.IndyResources;
import org.commonjava.indy.bind.jaxrs.util.JaxRsRequestHelper;
diff --git a/addons/content-browse/jaxrs/src/main/java/org/commonjava/indy/content/browse/servlet/ContentBrowseUIServlet.java b/addons/content-browse/jaxrs/src/main/java/org/commonjava/indy/content/browse/servlet/ContentBrowseUIServlet.java
index 274ae463f7..097368e867 100644
--- a/addons/content-browse/jaxrs/src/main/java/org/commonjava/indy/content/browse/servlet/ContentBrowseUIServlet.java
+++ b/addons/content-browse/jaxrs/src/main/java/org/commonjava/indy/content/browse/servlet/ContentBrowseUIServlet.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.content.browse.servlet;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.bind.jaxrs.ui.AbstractUIServlet;
import org.commonjava.indy.conf.UIConfiguration;
import org.commonjava.indy.content.browse.conf.ContentBrowseConfig;
diff --git a/addons/content-browse/model-java/pom.xml b/addons/content-browse/model-java/pom.xml
index 18c6ae5d09..89662f4eed 100644
--- a/addons/content-browse/model-java/pom.xml
+++ b/addons/content-browse/model-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-content-browse
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-content-browse-model-java
Indy :: Add-Ons :: Directory Content Browse :: Java Domain Model
diff --git a/addons/content-browse/pom.xml b/addons/content-browse/pom.xml
index 6ab297685f..c7786aed0a 100644
--- a/addons/content-browse/pom.xml
+++ b/addons/content-browse/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-content-browse
Indy :: Add-Ons :: Directory Content Browse :: Parent
diff --git a/addons/content-browse/ui/pom.xml b/addons/content-browse/ui/pom.xml
index 110af35ae3..b0fd226651 100644
--- a/addons/content-browse/ui/pom.xml
+++ b/addons/content-browse/ui/pom.xml
@@ -20,7 +20,7 @@
indy-content-browse
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
4.0.0
diff --git a/addons/content-index/pom.xml b/addons/content-index/pom.xml
index 6bd7738201..b6ee50dc94 100644
--- a/addons/content-index/pom.xml
+++ b/addons/content-index/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-content-index
diff --git a/addons/content-index/src/main/java/org/commonjava/indy/content/index/ContentIndexActions.java b/addons/content-index/src/main/java/org/commonjava/indy/content/index/ContentIndexActions.java
index ba33a74815..8999552eb8 100644
--- a/addons/content-index/src/main/java/org/commonjava/indy/content/index/ContentIndexActions.java
+++ b/addons/content-index/src/main/java/org/commonjava/indy/content/index/ContentIndexActions.java
@@ -18,7 +18,7 @@
import org.commonjava.cdi.util.weft.ThreadContext;
import org.commonjava.indy.content.MergedContentAction;
import org.commonjava.indy.content.StoreContentAction;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
diff --git a/addons/content-index/src/main/java/org/commonjava/indy/content/index/DefaultContentIndexManager.java b/addons/content-index/src/main/java/org/commonjava/indy/content/index/DefaultContentIndexManager.java
index 28a4f1e801..34fd59087d 100644
--- a/addons/content-index/src/main/java/org/commonjava/indy/content/index/DefaultContentIndexManager.java
+++ b/addons/content-index/src/main/java/org/commonjava/indy/content/index/DefaultContentIndexManager.java
@@ -19,11 +19,10 @@
import org.commonjava.indy.action.ShutdownAction;
import org.commonjava.indy.content.index.conf.ContentIndexConfig;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
-import org.commonjava.indy.subsys.infinispan.BasicCacheHandle;
import org.commonjava.indy.subsys.infinispan.CacheHandle;
import org.commonjava.indy.util.LocationUtils;
import org.commonjava.maven.galley.model.Transfer;
diff --git a/addons/content-index/src/main/java/org/commonjava/indy/content/index/IndexingContentManagerDecorator.java b/addons/content-index/src/main/java/org/commonjava/indy/content/index/IndexingContentManagerDecorator.java
index 70436bef45..5fb5ba6e10 100644
--- a/addons/content-index/src/main/java/org/commonjava/indy/content/index/IndexingContentManagerDecorator.java
+++ b/addons/content-index/src/main/java/org/commonjava/indy/content/index/IndexingContentManagerDecorator.java
@@ -21,7 +21,7 @@
import org.commonjava.indy.core.content.PathMaskChecker;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.HostedRepository;
diff --git a/addons/diagnostics/client-java/pom.xml b/addons/diagnostics/client-java/pom.xml
index 6f773d73d6..0b6ea7f082 100644
--- a/addons/diagnostics/client-java/pom.xml
+++ b/addons/diagnostics/client-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-diagnostics
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-diagnostics-client-java
Indy :: Add-Ons :: Diagnostic Tools :: Java Client
diff --git a/addons/diagnostics/common/pom.xml b/addons/diagnostics/common/pom.xml
index 80e7252b2f..5d1cd8a9f6 100644
--- a/addons/diagnostics/common/pom.xml
+++ b/addons/diagnostics/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-diagnostics
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-diagnostics-common
Indy :: Add-Ons :: Diagnostic Tools :: Common
diff --git a/addons/diagnostics/common/src/main/java/org/commonjava/indy/diag/data/DiagnosticsManager.java b/addons/diagnostics/common/src/main/java/org/commonjava/indy/diag/data/DiagnosticsManager.java
index abc2ea17fa..7e08667b47 100644
--- a/addons/diagnostics/common/src/main/java/org/commonjava/indy/diag/data/DiagnosticsManager.java
+++ b/addons/diagnostics/common/src/main/java/org/commonjava/indy/diag/data/DiagnosticsManager.java
@@ -49,7 +49,7 @@
import java.util.zip.ZipOutputStream;
import static org.apache.commons.io.IOUtils.toInputStream;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.join;
/**
* Created by jdcasey on 1/11/17.
diff --git a/addons/diagnostics/ftests/pom.xml b/addons/diagnostics/ftests/pom.xml
index 0cd3def46b..062cf48aa4 100644
--- a/addons/diagnostics/ftests/pom.xml
+++ b/addons/diagnostics/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-diagnostics
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-diagnostics
diff --git a/addons/diagnostics/jaxrs/pom.xml b/addons/diagnostics/jaxrs/pom.xml
index 2fd23197bc..e6733f2fda 100644
--- a/addons/diagnostics/jaxrs/pom.xml
+++ b/addons/diagnostics/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-diagnostics
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-diagnostics-jaxrs
diff --git a/addons/diagnostics/pom.xml b/addons/diagnostics/pom.xml
index ab7b6298f2..c090bf6e65 100644
--- a/addons/diagnostics/pom.xml
+++ b/addons/diagnostics/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-diagnostics
Indy :: Add-Ons :: Diagnostic Tools :: Parent
diff --git a/addons/dot-maven/common/pom.xml b/addons/dot-maven/common/pom.xml
index 0ab1b2e390..a0230703dc 100644
--- a/addons/dot-maven/common/pom.xml
+++ b/addons/dot-maven/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-dot-maven
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-dot-maven-common
Indy :: Add-Ons :: Dot-Maven (.m2 WebDAV) :: Common Core
diff --git a/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/store/sub/ArtifactStoreSubStore.java b/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/store/sub/ArtifactStoreSubStore.java
index b73f96105e..64a1c775ba 100644
--- a/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/store/sub/ArtifactStoreSubStore.java
+++ b/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/store/sub/ArtifactStoreSubStore.java
@@ -52,7 +52,7 @@
import static org.apache.commons.io.IOUtils.closeQuietly;
import static org.apache.commons.io.IOUtils.copy;
-import static org.apache.commons.lang.StringUtils.isEmpty;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
@ApplicationScoped
@Named( "stores" )
diff --git a/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/NameUtils.java b/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/NameUtils.java
index b34da39daa..3d06fd1115 100644
--- a/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/NameUtils.java
+++ b/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/NameUtils.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.dotmaven.util;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.join;
import java.io.File;
diff --git a/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/SettingsURIMatcher.java b/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/SettingsURIMatcher.java
index 490314f6bf..737ce6e545 100644
--- a/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/SettingsURIMatcher.java
+++ b/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/SettingsURIMatcher.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.dotmaven.util;
-import static org.apache.commons.lang.StringUtils.isEmpty;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
diff --git a/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/StoreURIMatcher.java b/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/StoreURIMatcher.java
index 8e55c56562..d470c9f836 100644
--- a/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/StoreURIMatcher.java
+++ b/addons/dot-maven/common/src/main/java/org/commonjava/indy/dotmaven/util/StoreURIMatcher.java
@@ -15,9 +15,9 @@
*/
package org.commonjava.indy.dotmaven.util;
-import static org.apache.commons.lang.StringUtils.isBlank;
-import static org.apache.commons.lang.StringUtils.isEmpty;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
+import static org.apache.commons.lang3.StringUtils.isBlank;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
import java.util.regex.Matcher;
diff --git a/addons/dot-maven/ftests/pom.xml b/addons/dot-maven/ftests/pom.xml
index 89cff3f379..df238474f3 100644
--- a/addons/dot-maven/ftests/pom.xml
+++ b/addons/dot-maven/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-dot-maven
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-dot-maven
diff --git a/addons/dot-maven/jaxrs/pom.xml b/addons/dot-maven/jaxrs/pom.xml
index ff1f9dbb34..622c78d1fd 100644
--- a/addons/dot-maven/jaxrs/pom.xml
+++ b/addons/dot-maven/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-dot-maven
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-dot-maven-jaxrs
diff --git a/addons/dot-maven/pom.xml b/addons/dot-maven/pom.xml
index 5b6cffa300..278be18962 100644
--- a/addons/dot-maven/pom.xml
+++ b/addons/dot-maven/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-dot-maven
diff --git a/addons/event-audit/common/pom.xml b/addons/event-audit/common/pom.xml
index 3daa31158a..da1b873a12 100644
--- a/addons/event-audit/common/pom.xml
+++ b/addons/event-audit/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-event-audit
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-event-audit-common
diff --git a/addons/event-audit/pom.xml b/addons/event-audit/pom.xml
index f6b883afa9..7eadf1b388 100644
--- a/addons/event-audit/pom.xml
+++ b/addons/event-audit/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-event-audit
diff --git a/addons/folo/client-java/pom.xml b/addons/folo/client-java/pom.xml
index 72502b1d35..263c86a9af 100644
--- a/addons/folo/client-java/pom.xml
+++ b/addons/folo/client-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-folo
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-folo-client-java
Indy :: Add-Ons :: Folo Usage Tracker :: Java Client
diff --git a/addons/folo/common/pom.xml b/addons/folo/common/pom.xml
index 4f310732a2..97398f1453 100644
--- a/addons/folo/common/pom.xml
+++ b/addons/folo/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-folo
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-folo-common
Indy :: Add-Ons :: Folo Usage Tracker :: Common
diff --git a/addons/folo/common/src/main/java/org/commonjava/indy/folo/data/FoloLifecycleParticipant.java b/addons/folo/common/src/main/java/org/commonjava/indy/folo/data/FoloLifecycleParticipant.java
index c2b44828d6..9369dc9324 100644
--- a/addons/folo/common/src/main/java/org/commonjava/indy/folo/data/FoloLifecycleParticipant.java
+++ b/addons/folo/common/src/main/java/org/commonjava/indy/folo/data/FoloLifecycleParticipant.java
@@ -29,6 +29,7 @@
import org.commonjava.indy.subsys.datafile.DataFileManager;
@Named
+@Deprecated
public class FoloLifecycleParticipant
implements StartupAction
{
@@ -69,7 +70,7 @@ public void start()
{
final DataFile dataFile = dataFileManager.getDataFile( ".gitignore" );
final List lines = dataFile.exists() ? dataFile.readLines() : new ArrayList();
- if ( !lines.contains( FOLO_DIRECTORY_IGNORE ) )
+ if ( dataFile.exists() && !lines.contains( FOLO_DIRECTORY_IGNORE ) )
{
lines.add( FOLO_DIRECTORY_IGNORE );
diff --git a/addons/folo/common/src/main/java/org/commonjava/indy/folo/data/FoloRecordCache.java b/addons/folo/common/src/main/java/org/commonjava/indy/folo/data/FoloRecordCache.java
index 33223c46d6..fd20d7ce11 100644
--- a/addons/folo/common/src/main/java/org/commonjava/indy/folo/data/FoloRecordCache.java
+++ b/addons/folo/common/src/main/java/org/commonjava/indy/folo/data/FoloRecordCache.java
@@ -22,8 +22,7 @@
import org.commonjava.indy.folo.model.TrackedContent;
import org.commonjava.indy.folo.model.TrackedContentEntry;
import org.commonjava.indy.folo.model.TrackingKey;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.measure.annotation.MetricNamed;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.subsys.infinispan.CacheHandle;
import org.infinispan.Cache;
import org.infinispan.commons.api.BasicCache;
@@ -43,8 +42,6 @@
import java.util.function.BiFunction;
import java.util.stream.Collectors;
-import static org.commonjava.indy.measure.annotation.MetricNamed.DEFAULT;
-
@ApplicationScoped
public class FoloRecordCache
{
diff --git a/addons/folo/ftests/pom.xml b/addons/folo/ftests/pom.xml
index 0483190c36..b6408006a6 100644
--- a/addons/folo/ftests/pom.xml
+++ b/addons/folo/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-folo
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-folo
diff --git a/addons/folo/ftests/src/main/java/org/commonjava/indy/folo/ftest/content/StoreInTrackedMemberAndVerifyExistsInTrackedGroupTest.java b/addons/folo/ftests/src/main/java/org/commonjava/indy/folo/ftest/content/StoreInTrackedMemberAndVerifyExistsInTrackedGroupTest.java
index 0c8b4a6f61..af0a893f89 100644
--- a/addons/folo/ftests/src/main/java/org/commonjava/indy/folo/ftest/content/StoreInTrackedMemberAndVerifyExistsInTrackedGroupTest.java
+++ b/addons/folo/ftests/src/main/java/org/commonjava/indy/folo/ftest/content/StoreInTrackedMemberAndVerifyExistsInTrackedGroupTest.java
@@ -23,7 +23,7 @@
import java.io.ByteArrayInputStream;
import java.io.InputStream;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.folo.client.IndyFoloContentClientModule;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
diff --git a/addons/folo/jaxrs/pom.xml b/addons/folo/jaxrs/pom.xml
index 4a8a7cca4f..eb67bf2866 100644
--- a/addons/folo/jaxrs/pom.xml
+++ b/addons/folo/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-folo
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-folo-jaxrs
diff --git a/addons/folo/jaxrs/src/main/java/org/commonjava/indy/folo/bind/jaxrs/FoloMavenContentAccessResource.java b/addons/folo/jaxrs/src/main/java/org/commonjava/indy/folo/bind/jaxrs/FoloMavenContentAccessResource.java
index 1129d1d1ea..251858ee80 100644
--- a/addons/folo/jaxrs/src/main/java/org/commonjava/indy/folo/bind/jaxrs/FoloMavenContentAccessResource.java
+++ b/addons/folo/jaxrs/src/main/java/org/commonjava/indy/folo/bind/jaxrs/FoloMavenContentAccessResource.java
@@ -26,12 +26,11 @@
import org.commonjava.indy.core.bind.jaxrs.ContentAccessHandler;
import org.commonjava.indy.core.bind.jaxrs.util.RequestUtils;
import org.commonjava.indy.folo.model.TrackingKey;
-import org.commonjava.indy.metrics.RequestContextHelper;
+import org.commonjava.indy.util.RequestContextHelper;
import org.commonjava.indy.model.core.AccessChannel;
import org.commonjava.maven.galley.event.EventMetadata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.commonjava.indy.metrics.RequestContextHelper;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
@@ -47,7 +46,7 @@
import javax.ws.rs.core.UriInfo;
import static org.commonjava.indy.IndyContentConstants.CHECK_CACHE_ONLY;
-import static org.commonjava.indy.metrics.RequestContextHelper.CONTENT_TRACKING_ID;
+import static org.commonjava.indy.util.RequestContextHelper.CONTENT_TRACKING_ID;
import static org.commonjava.indy.folo.ctl.FoloConstants.ACCESS_CHANNEL;
import static org.commonjava.indy.folo.ctl.FoloConstants.TRACKING_KEY;
import static org.commonjava.indy.pkg.PackageTypeConstants.PKG_TYPE_MAVEN;
diff --git a/addons/folo/jaxrs/src/main/java/org/commonjava/indy/folo/bind/jaxrs/FoloNPMContentAccessResource.java b/addons/folo/jaxrs/src/main/java/org/commonjava/indy/folo/bind/jaxrs/FoloNPMContentAccessResource.java
index 6ffc21dc88..f491b9a060 100644
--- a/addons/folo/jaxrs/src/main/java/org/commonjava/indy/folo/bind/jaxrs/FoloNPMContentAccessResource.java
+++ b/addons/folo/jaxrs/src/main/java/org/commonjava/indy/folo/bind/jaxrs/FoloNPMContentAccessResource.java
@@ -25,14 +25,13 @@
import org.commonjava.indy.bind.jaxrs.util.REST;
import org.commonjava.indy.core.bind.jaxrs.util.RequestUtils;
import org.commonjava.indy.folo.model.TrackingKey;
-import org.commonjava.indy.metrics.RequestContextHelper;
+import org.commonjava.indy.util.RequestContextHelper;
import org.commonjava.indy.model.core.AccessChannel;
import org.commonjava.indy.pkg.npm.inject.NPMContentHandler;
import org.commonjava.indy.pkg.npm.jaxrs.NPMContentAccessHandler;
import org.commonjava.maven.galley.event.EventMetadata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.commonjava.indy.metrics.RequestContextHelper;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
@@ -49,7 +48,7 @@
import java.nio.file.Paths;
import static org.commonjava.indy.IndyContentConstants.CHECK_CACHE_ONLY;
-import static org.commonjava.indy.metrics.RequestContextHelper.CONTENT_TRACKING_ID;
+import static org.commonjava.indy.util.RequestContextHelper.CONTENT_TRACKING_ID;
import static org.commonjava.indy.folo.ctl.FoloConstants.ACCESS_CHANNEL;
import static org.commonjava.indy.folo.ctl.FoloConstants.TRACKING_KEY;
import static org.commonjava.indy.pkg.PackageTypeConstants.PKG_TYPE_NPM;
diff --git a/addons/folo/model-java/pom.xml b/addons/folo/model-java/pom.xml
index 697dadb1c6..570f85691a 100644
--- a/addons/folo/model-java/pom.xml
+++ b/addons/folo/model-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-folo
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-folo-model-java
Indy :: Add-Ons :: Folo Usage Tracker :: Java Domain Model
diff --git a/addons/folo/pom.xml b/addons/folo/pom.xml
index a94b281106..d592f9bca3 100644
--- a/addons/folo/pom.xml
+++ b/addons/folo/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-folo
Indy :: Add-Ons :: Folo Usage Tracker :: Parent
diff --git a/addons/hosted-by-archive/client-java/pom.xml b/addons/hosted-by-archive/client-java/pom.xml
index 461104bce2..17a77620d2 100644
--- a/addons/hosted-by-archive/client-java/pom.xml
+++ b/addons/hosted-by-archive/client-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-hosted-by-archive
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-hosted-by-archive-client-java
Indy :: Add-Ons :: Hosted By Archive :: Java Client
diff --git a/addons/hosted-by-archive/client-java/src/main/java/org/commonjava/indy/hostedbyarc/client/IndyHostedByArchiveClientModule.java b/addons/hosted-by-archive/client-java/src/main/java/org/commonjava/indy/hostedbyarc/client/IndyHostedByArchiveClientModule.java
index 68f0d82e78..be0e9b4e0c 100644
--- a/addons/hosted-by-archive/client-java/src/main/java/org/commonjava/indy/hostedbyarc/client/IndyHostedByArchiveClientModule.java
+++ b/addons/hosted-by-archive/client-java/src/main/java/org/commonjava/indy/hostedbyarc/client/IndyHostedByArchiveClientModule.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.hostedbyarc.client;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.methods.HttpPost;
diff --git a/addons/hosted-by-archive/common/pom.xml b/addons/hosted-by-archive/common/pom.xml
index 84a16f4706..d9e10e9b0f 100644
--- a/addons/hosted-by-archive/common/pom.xml
+++ b/addons/hosted-by-archive/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-hosted-by-archive
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-hosted-by-archive-common
Indy :: Add-Ons :: Hosted By Archive :: Common
diff --git a/addons/hosted-by-archive/common/src/main/java/org/commonjava/indy/hostedbyarc/HostedByArchiveManager.java b/addons/hosted-by-archive/common/src/main/java/org/commonjava/indy/hostedbyarc/HostedByArchiveManager.java
index ffd072e269..7499accd15 100644
--- a/addons/hosted-by-archive/common/src/main/java/org/commonjava/indy/hostedbyarc/HostedByArchiveManager.java
+++ b/addons/hosted-by-archive/common/src/main/java/org/commonjava/indy/hostedbyarc/HostedByArchiveManager.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.hostedbyarc;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.IndyWorkflowException;
import org.commonjava.indy.audit.ChangeSummary;
import org.commonjava.indy.content.ContentManager;
diff --git a/addons/hosted-by-archive/ftests/pom.xml b/addons/hosted-by-archive/ftests/pom.xml
index 26fe5f18a7..5a751d7ee2 100644
--- a/addons/hosted-by-archive/ftests/pom.xml
+++ b/addons/hosted-by-archive/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-hosted-by-archive
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-hosted-by-archive
diff --git a/addons/hosted-by-archive/jaxrs/pom.xml b/addons/hosted-by-archive/jaxrs/pom.xml
index e1d447755e..7169c8e244 100644
--- a/addons/hosted-by-archive/jaxrs/pom.xml
+++ b/addons/hosted-by-archive/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-hosted-by-archive
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-hosted-by-archive-jaxrs
diff --git a/addons/hosted-by-archive/jaxrs/src/main/java/org/commonjava/indy/hostedbyarc/bind/jaxrs/IndyHostedByArchiveResource.java b/addons/hosted-by-archive/jaxrs/src/main/java/org/commonjava/indy/hostedbyarc/bind/jaxrs/IndyHostedByArchiveResource.java
index 3ac4c03585..0310940a90 100644
--- a/addons/hosted-by-archive/jaxrs/src/main/java/org/commonjava/indy/hostedbyarc/bind/jaxrs/IndyHostedByArchiveResource.java
+++ b/addons/hosted-by-archive/jaxrs/src/main/java/org/commonjava/indy/hostedbyarc/bind/jaxrs/IndyHostedByArchiveResource.java
@@ -22,7 +22,7 @@
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.IndyWorkflowException;
import org.commonjava.indy.bind.jaxrs.IndyResources;
import org.commonjava.indy.bind.jaxrs.SecurityManager;
diff --git a/addons/hosted-by-archive/pom.xml b/addons/hosted-by-archive/pom.xml
index 12831ed86c..0071e9fac0 100644
--- a/addons/hosted-by-archive/pom.xml
+++ b/addons/hosted-by-archive/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-hosted-by-archive
Indy :: Add-Ons :: Hosted By Archive :: Parent
diff --git a/addons/httprox/common/pom.xml b/addons/httprox/common/pom.xml
index 40670bd56a..6108a833a2 100644
--- a/addons/httprox/common/pom.xml
+++ b/addons/httprox/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-httprox
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-httprox-common
Indy :: Add-Ons :: HTTProx (HTTP Proxy) :: Common Core
diff --git a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/data/HttProxRegisterSpecialPathStartupAction.java b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/data/HttProxRegisterSpecialPathStartupAction.java
index 8f0d2cfdf4..67c22686fd 100644
--- a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/data/HttProxRegisterSpecialPathStartupAction.java
+++ b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/data/HttProxRegisterSpecialPathStartupAction.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.httprox.data;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.action.IndyLifecycleException;
import org.commonjava.indy.action.StartupAction;
import org.commonjava.indy.content.SpecialPathSetProducer;
@@ -31,7 +31,7 @@
import java.util.ArrayList;
import java.util.List;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.commonjava.maven.galley.io.SpecialPathConstants.PKG_TYPE_GENERIC_HTTP;
/**
diff --git a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/handler/ProxyAcceptHandler.java b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/handler/ProxyAcceptHandler.java
index 9c89c77980..c071989ce7 100644
--- a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/handler/ProxyAcceptHandler.java
+++ b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/handler/ProxyAcceptHandler.java
@@ -15,24 +15,20 @@
*/
package org.commonjava.indy.httprox.handler;
-import com.codahale.metrics.MetricRegistry;
-
-import org.commonjava.cdi.util.weft.ExecutorConfig;
-import org.commonjava.cdi.util.weft.WeftExecutorService;
-import org.commonjava.cdi.util.weft.WeftManaged;
import org.commonjava.indy.bind.jaxrs.MDCManager;
-import org.commonjava.indy.metrics.RequestContextHelper;
+import org.commonjava.indy.util.RequestContextHelper;
import org.commonjava.indy.core.ctl.ContentController;
import org.commonjava.indy.data.StoreDataManager;
import org.commonjava.indy.httprox.conf.HttproxConfig;
import org.commonjava.indy.httprox.keycloak.KeycloakProxyAuthenticator;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.indy.model.core.AccessChannel;
-import org.commonjava.indy.sli.metrics.GoldenSignalsMetricSet;
+import org.commonjava.indy.sli.metrics.IndyGoldenSignalsMetricSet;
import org.commonjava.indy.subsys.infinispan.CacheProducer;
import org.commonjava.indy.subsys.template.IndyGroovyException;
import org.commonjava.indy.subsys.template.ScriptEngine;
import org.commonjava.maven.galley.spi.cache.CacheProvider;
+import org.commonjava.o11yphant.metrics.MetricsManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xnio.ChannelListener;
@@ -44,10 +40,10 @@
import javax.inject.Inject;
import java.io.IOException;
-import static org.commonjava.indy.metrics.RequestContextHelper.PACKAGE_TYPE;
-import static org.commonjava.indy.metrics.RequestContextHelper.REQUEST_PHASE;
-import static org.commonjava.indy.metrics.RequestContextHelper.REQUEST_PHASE_START;
-import static org.commonjava.indy.metrics.RequestContextHelper.setContext;
+import static org.commonjava.indy.util.RequestContextHelper.PACKAGE_TYPE;
+import static org.commonjava.indy.util.RequestContextHelper.REQUEST_PHASE;
+import static org.commonjava.indy.util.RequestContextHelper.REQUEST_PHASE_START;
+import static org.commonjava.indy.util.RequestContextHelper.setContext;
import static org.commonjava.indy.httprox.util.HttpProxyConstants.PROXY_METRIC_LOGGER;
import static org.commonjava.indy.pkg.PackageTypeConstants.PKG_TYPE_GENERIC_HTTP;
@@ -83,7 +79,7 @@ public class ProxyAcceptHandler
private MDCManager mdcManager;
@Inject
- MetricRegistry metricRegistry;
+ private MetricsManager metricsManager;
@Inject
private IndyMetricsConfig metricsConfig;
@@ -92,7 +88,7 @@ public class ProxyAcceptHandler
private CacheProducer cacheProducer;
@Inject
- private GoldenSignalsMetricSet sliMetricSet;
+ private IndyGoldenSignalsMetricSet sliMetricSet;
@Inject
private ProxyTransfersExecutor proxyExecutor;
@@ -104,7 +100,7 @@ protected ProxyAcceptHandler()
public ProxyAcceptHandler( HttproxConfig config, StoreDataManager storeManager, ContentController contentController,
KeycloakProxyAuthenticator proxyAuthenticator, CacheProvider cacheProvider,
ScriptEngine scriptEngine, MDCManager mdcManager,
- IndyMetricsConfig metricsConfig, MetricRegistry metricRegistry,
+ IndyMetricsConfig metricsConfig, MetricsManager metricsManager,
CacheProducer cacheProducer, ProxyTransfersExecutor executor )
{
this.config = config;
@@ -115,7 +111,7 @@ public ProxyAcceptHandler( HttproxConfig config, StoreDataManager storeManager,
this.scriptEngine = scriptEngine;
this.mdcManager = mdcManager;
this.metricsConfig = metricsConfig;
- this.metricRegistry = metricRegistry;
+ this.metricsManager = metricsManager;
this.cacheProducer = cacheProducer;
this.proxyExecutor = executor;
}
@@ -179,7 +175,7 @@ public void handleEvent( AcceptingChannel channel )
final ProxyResponseWriter writer =
new ProxyResponseWriter( config, storeManager, contentController, proxyAuthenticator,
cacheProvider, mdcManager, creator, accepted,
- metricsConfig, metricRegistry, sliMetricSet, cacheProducer, start,
+ metricsConfig, metricsManager, sliMetricSet, cacheProducer, start,
proxyExecutor.getExecutor() );
logger.debug( "Setting writer: {}", writer );
diff --git a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/handler/ProxyResponseWriter.java b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/handler/ProxyResponseWriter.java
index 899aee266e..f63ffc0925 100644
--- a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/handler/ProxyResponseWriter.java
+++ b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/handler/ProxyResponseWriter.java
@@ -15,14 +15,12 @@
*/
package org.commonjava.indy.httprox.handler;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
import org.apache.commons.lang3.ClassUtils;
import org.apache.http.HttpRequest;
import org.apache.http.RequestLine;
import org.commonjava.indy.IndyWorkflowException;
import org.commonjava.indy.bind.jaxrs.MDCManager;
-import org.commonjava.indy.metrics.RequestContextHelper;
+import org.commonjava.indy.util.RequestContextHelper;
import org.commonjava.indy.core.ctl.ContentController;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
@@ -33,9 +31,9 @@
import org.commonjava.indy.httprox.util.HttpConduitWrapper;
import org.commonjava.indy.httprox.util.ProxyMeter;
import org.commonjava.indy.httprox.util.ProxyResponseHelper;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.indy.model.core.ArtifactStore;
-import org.commonjava.indy.sli.metrics.GoldenSignalsMetricSet;
+import org.commonjava.indy.sli.metrics.IndyGoldenSignalsMetricSet;
import org.commonjava.indy.subsys.http.HttpWrapper;
import org.commonjava.indy.subsys.http.util.UserPass;
import org.commonjava.indy.subsys.infinispan.CacheHandle;
@@ -43,6 +41,8 @@
import org.commonjava.indy.util.ApplicationHeader;
import org.commonjava.indy.util.ApplicationStatus;
import org.commonjava.maven.galley.spi.cache.CacheProvider;
+import org.commonjava.o11yphant.metrics.api.Timer;
+import org.commonjava.o11yphant.metrics.MetricsManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xnio.ChannelListener;
@@ -54,19 +54,12 @@
import java.net.SocketAddress;
import java.net.URL;
import java.nio.channels.SocketChannel;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
-import javax.inject.Inject;
-
import org.commonjava.cdi.util.weft.WeftExecutorService;
-import static com.codahale.metrics.MetricRegistry.name;
import static java.lang.Integer.parseInt;
import static org.apache.commons.codec.digest.DigestUtils.sha256Hex;
-import static org.commonjava.indy.metrics.RequestContextHelper.getContext;
import static org.commonjava.indy.httprox.util.HttpProxyConstants.ALLOW_HEADER_VALUE;
import static org.commonjava.indy.httprox.util.HttpProxyConstants.CONNECT_METHOD;
import static org.commonjava.indy.httprox.util.HttpProxyConstants.GET_METHOD;
@@ -77,6 +70,7 @@
import static org.commonjava.indy.subsys.http.util.UserPass.parse;
import static org.commonjava.indy.util.ApplicationHeader.proxy_authenticate;
import static org.commonjava.indy.util.ApplicationStatus.PROXY_AUTHENTICATION_REQUIRED;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.name;
public final class ProxyResponseWriter
implements ChannelListener
@@ -118,9 +112,9 @@ public final class ProxyResponseWriter
private final MDCManager mdcManager;
- private final MetricRegistry metricRegistry;
+ private final MetricsManager metricManager;
- private GoldenSignalsMetricSet sliMetricSet;
+ private IndyGoldenSignalsMetricSet sliMetricSet;
private long startNanos;
@@ -139,7 +133,7 @@ public ProxyResponseWriter( final HttproxConfig config, final StoreDataManager s
final KeycloakProxyAuthenticator proxyAuthenticator, final CacheProvider cacheProvider,
final MDCManager mdcManager, final ProxyRepositoryCreator repoCreator,
final StreamConnection accepted, final IndyMetricsConfig metricsConfig,
- final MetricRegistry metricRegistry, final GoldenSignalsMetricSet sliMetricSet,
+ final MetricsManager metricManager, final IndyGoldenSignalsMetricSet sliMetricSet,
final CacheProducer cacheProducer,
final long start, final WeftExecutorService executor )
{
@@ -153,7 +147,7 @@ public ProxyResponseWriter( final HttproxConfig config, final StoreDataManager s
this.peerAddress = accepted.getPeerAddress();
this.sourceChannel = accepted.getSourceChannel();
this.metricsConfig = metricsConfig;
- this.metricRegistry = metricRegistry;
+ this.metricManager = metricManager;
this.sliMetricSet = sliMetricSet;
startNanos = start;
this.cls = ClassUtils.getAbbreviatedName( getClass().getName(), 1 ); // e.g., foo.bar.ClassA -> f.b.ClassA
@@ -169,14 +163,14 @@ public void setProxyRequestReader( ProxyRequestReader proxyRequestReader )
@Override
public void handleEvent( final ConduitStreamSinkChannel channel )
{
- if ( metricsConfig == null || metricRegistry == null )
+ if ( metricsConfig == null || metricManager == null )
{
doHandleEvent( channel );
return;
}
- Timer timer = metricRegistry.timer( name( metricsConfig.getNodePrefix(), cls, "handleEvent" ) );
- Timer.Context timerContext = timer.time();
+ Timer.Context timerContext =
+ metricManager.startTimer( name( metricsConfig.getNodePrefix(), cls, "handleEvent" ) );
try
{
doHandleEvent( channel );
@@ -243,7 +237,7 @@ private void doHandleEvent( final ConduitStreamSinkChannel sinkChannel )
{
ProxyResponseHelper proxyResponseHelper =
new ProxyResponseHelper( httpRequest, config, contentController, repoCreator, storeManager,
- metricsConfig, metricRegistry, cls );
+ metricsConfig, metricManager, cls );
try
{
if ( repoCreator == null )
diff --git a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/HttpConduitWrapper.java b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/HttpConduitWrapper.java
index 467bd8d255..c4beaf9f24 100644
--- a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/HttpConduitWrapper.java
+++ b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/HttpConduitWrapper.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.httprox.util;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.http.Header;
import org.apache.http.HttpRequest;
import org.commonjava.indy.IndyWorkflowException;
@@ -39,8 +39,8 @@
import java.util.List;
import java.util.Map;
-import static org.commonjava.indy.metrics.RequestContextHelper.HTTP_STATUS;
-import static org.commonjava.indy.metrics.RequestContextHelper.setContext;
+import static org.commonjava.indy.util.RequestContextHelper.HTTP_STATUS;
+import static org.commonjava.indy.util.RequestContextHelper.setContext;
import static org.commonjava.indy.httprox.util.ChannelUtils.DEFAULT_READ_BUF_SIZE;
import static org.commonjava.indy.httprox.util.ChannelUtils.flush;
import static org.commonjava.indy.httprox.util.ChannelUtils.write;
@@ -203,7 +203,7 @@ public void writeExistingTransfer( Transfer txfr, boolean writeBody, String path
writeHeader( ApplicationHeader.last_modified, lastMod );
}
- String contentType = metadata.getContentType();
+ String contentType = metadata != null ? metadata.getContentType() : null;
writeHeader( ApplicationHeader.content_type,
contentType != null ? contentType : contentController.getContentType( path ) );
diff --git a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/HttpProxyConstants.java b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/HttpProxyConstants.java
index b5890a03db..0e095e1612 100644
--- a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/HttpProxyConstants.java
+++ b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/HttpProxyConstants.java
@@ -20,7 +20,7 @@
import java.util.HashSet;
import java.util.Set;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
public final class HttpProxyConstants
{
diff --git a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/ProxyMeter.java b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/ProxyMeter.java
index 942c557bcf..eebdfca78e 100644
--- a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/ProxyMeter.java
+++ b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/ProxyMeter.java
@@ -15,21 +15,21 @@
*/
package org.commonjava.indy.httprox.util;
-import org.commonjava.indy.sli.metrics.GoldenSignalsMetricSet;
+import org.commonjava.indy.sli.metrics.IndyGoldenSignalsMetricSet;
import org.slf4j.Logger;
-import org.commonjava.indy.metrics.RequestContextHelper;
+import org.commonjava.indy.util.RequestContextHelper;
import java.net.SocketAddress;
import static java.lang.Integer.parseInt;
-import static org.commonjava.indy.metrics.RequestContextHelper.HTTP_METHOD;
-import static org.commonjava.indy.metrics.RequestContextHelper.HTTP_STATUS;
-import static org.commonjava.indy.metrics.RequestContextHelper.REQUEST_LATENCY_NS;
-import static org.commonjava.indy.metrics.RequestContextHelper.REQUEST_PHASE;
-import static org.commonjava.indy.metrics.RequestContextHelper.REQUEST_PHASE_END;
-import static org.commonjava.indy.metrics.RequestContextHelper.getContext;
-import static org.commonjava.indy.metrics.RequestContextHelper.setContext;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_CONTENT_GENERIC;
+import static org.commonjava.indy.util.RequestContextHelper.HTTP_METHOD;
+import static org.commonjava.indy.util.RequestContextHelper.HTTP_STATUS;
+import static org.commonjava.indy.util.RequestContextHelper.REQUEST_LATENCY_NS;
+import static org.commonjava.indy.util.RequestContextHelper.REQUEST_PHASE;
+import static org.commonjava.indy.util.RequestContextHelper.REQUEST_PHASE_END;
+import static org.commonjava.indy.util.RequestContextHelper.getContext;
+import static org.commonjava.indy.util.RequestContextHelper.setContext;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_CONTENT_GENERIC;
public class ProxyMeter
{
@@ -41,13 +41,13 @@ public class ProxyMeter
private final long startNanos;
- private final GoldenSignalsMetricSet sliMetricSet;
+ private final IndyGoldenSignalsMetricSet sliMetricSet;
private final Logger restLogger;
private final SocketAddress peerAddress;
- public ProxyMeter( final String method, final String requestLine, final long startNanos, final GoldenSignalsMetricSet sliMetricSet, final Logger restLogger,
+ public ProxyMeter( final String method, final String requestLine, final long startNanos, final IndyGoldenSignalsMetricSet sliMetricSet, final Logger restLogger,
final SocketAddress peerAddress )
{
this.method = method;
diff --git a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/ProxyResponseHelper.java b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/ProxyResponseHelper.java
index 8793a3ee6a..b2e4bffc78 100644
--- a/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/ProxyResponseHelper.java
+++ b/addons/httprox/common/src/main/java/org/commonjava/indy/httprox/util/ProxyResponseHelper.java
@@ -15,9 +15,7 @@
*/
package org.commonjava.indy.httprox.util;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpRequest;
import org.commonjava.indy.IndyWorkflowException;
import org.commonjava.indy.audit.ChangeSummary;
@@ -31,7 +29,7 @@
import org.commonjava.indy.httprox.handler.AbstractProxyRepositoryCreator;
import org.commonjava.indy.httprox.handler.ProxyCreationResult;
import org.commonjava.indy.httprox.handler.ProxyRepositoryCreator;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.indy.model.core.AccessChannel;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
@@ -45,6 +43,8 @@
import org.commonjava.maven.galley.TransferException;
import org.commonjava.maven.galley.event.EventMetadata;
import org.commonjava.maven.galley.model.Transfer;
+import org.commonjava.o11yphant.metrics.api.Timer;
+import org.commonjava.o11yphant.metrics.MetricsManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -54,17 +54,15 @@
import java.util.function.Predicate;
import java.util.stream.Collectors;
-import static com.codahale.metrics.MetricRegistry.name;
-import static java.lang.Integer.parseInt;
-import static org.commonjava.indy.metrics.RequestContextHelper.CONTENT_ENTRY_POINT;
-import static org.commonjava.indy.metrics.RequestContextHelper.METADATA_CONTENT;
-import static org.commonjava.indy.metrics.RequestContextHelper.PACKAGE_TYPE;
-import static org.commonjava.indy.metrics.RequestContextHelper.PATH;
-import static org.commonjava.indy.metrics.RequestContextHelper.getContext;
-import static org.commonjava.indy.metrics.RequestContextHelper.setContext;
+import static org.commonjava.indy.util.RequestContextHelper.CONTENT_ENTRY_POINT;
+import static org.commonjava.indy.util.RequestContextHelper.METADATA_CONTENT;
+import static org.commonjava.indy.util.RequestContextHelper.PACKAGE_TYPE;
+import static org.commonjava.indy.util.RequestContextHelper.PATH;
+import static org.commonjava.indy.util.RequestContextHelper.setContext;
import static org.commonjava.indy.model.core.ArtifactStore.TRACKING_ID;
import static org.commonjava.indy.model.core.GenericPackageTypeDescriptor.GENERIC_PKG_KEY;
import static org.commonjava.maven.galley.io.SpecialPathConstants.PKG_TYPE_GENERIC_HTTP;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.name;
/**
* Created by ruhan on 9/20/18.
@@ -83,7 +81,7 @@ public class ProxyResponseHelper
private final IndyMetricsConfig metricsConfig;
- private final MetricRegistry metricRegistry;
+ private final MetricsManager metricsManager;
private final String cls;
@@ -94,7 +92,8 @@ public class ProxyResponseHelper
private boolean transferred;
public ProxyResponseHelper( HttpRequest httpRequest, HttproxConfig config, ContentController contentController,
- ProxyRepositoryCreator repoCreator, StoreDataManager storeManager, IndyMetricsConfig metricsConfig, MetricRegistry metricRegistry, String cls )
+ ProxyRepositoryCreator repoCreator, StoreDataManager storeManager,
+ IndyMetricsConfig metricsConfig, MetricsManager metricsManager, String cls )
{
this.httpRequest = httpRequest;
this.config = config;
@@ -102,7 +101,7 @@ public ProxyResponseHelper( HttpRequest httpRequest, HttproxConfig config, Conte
this.repoCreator = repoCreator;
this.storeManager = storeManager;
this.metricsConfig = metricsConfig;
- this.metricRegistry = metricRegistry;
+ this.metricsManager = metricsManager;
this.cls = cls;
}
@@ -110,15 +109,15 @@ public ArtifactStore getArtifactStore( String trackingId, final URL url )
throws IndyDataException
{
ArtifactStore store = null;
- if ( metricsConfig == null || metricRegistry == null )
+ if ( metricsConfig == null || metricsManager == null )
{
store = doGetArtifactStore( trackingId, url );
}
if ( store == null )
{
- Timer timer = metricRegistry.timer( name( metricsConfig.getNodePrefix(), cls, "getArtifactStore" ) );
- Timer.Context timerContext = timer.time();
+ Timer.Context timerContext =
+ metricsManager.startTimer( name( metricsConfig.getNodePrefix(), cls, "getArtifactStore" ) );
try
{
store = doGetArtifactStore( trackingId, url );
@@ -295,14 +294,14 @@ public void transfer( final HttpConduitWrapper http, final ArtifactStore store,
setContext( PATH, path );
setContext( METADATA_CONTENT, Boolean.toString( false ) );
- if ( metricsConfig == null || metricRegistry == null )
+ if ( metricsConfig == null || metricsManager == null )
{
doTransfer( http, store, path, writeBody, proxyUserPass, meter );
return;
}
- Timer timer = metricRegistry.timer( name( metricsConfig.getNodePrefix(), cls, "transfer" ) );
- Timer.Context timerContext = timer.time();
+ Timer.Context timerContext =
+ metricsManager.startTimer( name( metricsConfig.getNodePrefix(), cls, "transfer" ) );
try
{
doTransfer( http, store, path, writeBody, proxyUserPass, meter );
diff --git a/addons/httprox/ftests/pom.xml b/addons/httprox/ftests/pom.xml
index d93a27c7ec..45988d1ce2 100644
--- a/addons/httprox/ftests/pom.xml
+++ b/addons/httprox/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-httprox
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-httprox
diff --git a/addons/httprox/jaxrs/pom.xml b/addons/httprox/jaxrs/pom.xml
index f1d1674a1c..36a6443ecd 100644
--- a/addons/httprox/jaxrs/pom.xml
+++ b/addons/httprox/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-httprox
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-httprox-jaxrs
Indy :: Add-Ons :: HTTProx (HTTP Proxy) :: JAX-RS Handlers
diff --git a/addons/httprox/pom.xml b/addons/httprox/pom.xml
index 771aa8fe2c..0c512bac71 100644
--- a/addons/httprox/pom.xml
+++ b/addons/httprox/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-httprox
diff --git a/addons/implied-repos/client-java/pom.xml b/addons/implied-repos/client-java/pom.xml
index c55d908592..73f229c055 100644
--- a/addons/implied-repos/client-java/pom.xml
+++ b/addons/implied-repos/client-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-implied-repos
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-implied-repos-client-java
Indy :: Add-Ons :: Implied Repositories :: Java Client
diff --git a/addons/implied-repos/common/pom.xml b/addons/implied-repos/common/pom.xml
index a07167e7ae..f53c1872d3 100644
--- a/addons/implied-repos/common/pom.xml
+++ b/addons/implied-repos/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-implied-repos
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-implied-repos-common
Indy :: Add-Ons :: Implied Repositories :: Common
diff --git a/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/change/ImpliedRepositoryDetector.java b/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/change/ImpliedRepositoryDetector.java
index 01d813a3f3..7a1b09e23f 100644
--- a/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/change/ImpliedRepositoryDetector.java
+++ b/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/change/ImpliedRepositoryDetector.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.implrepo.change;
import com.fasterxml.jackson.core.JsonProcessingException;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.cdi.util.weft.ExecutorConfig;
import org.commonjava.cdi.util.weft.WeftManaged;
import org.commonjava.indy.audit.ChangeSummary;
diff --git a/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/conf/ImpliedRepoConfig.java b/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/conf/ImpliedRepoConfig.java
index a7d4c4750e..32dd075347 100644
--- a/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/conf/ImpliedRepoConfig.java
+++ b/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/conf/ImpliedRepoConfig.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.implrepo.conf;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.conf.IndyConfigInfo;
import org.commonjava.propulsor.config.ConfigurationException;
import org.commonjava.propulsor.config.annotation.SectionName;
diff --git a/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/data/ImpliedReposQueryDelegate.java b/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/data/ImpliedReposQueryDelegate.java
index 424af8f9cb..0fbd8b9769 100644
--- a/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/data/ImpliedReposQueryDelegate.java
+++ b/addons/implied-repos/common/src/main/java/org/commonjava/indy/implrepo/data/ImpliedReposQueryDelegate.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.implrepo.data;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.data.DelegatingArtifactStoreQuery;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.ArtifactStoreQuery;
diff --git a/addons/implied-repos/common/src/test/java/org/commonjava/indy/implrepo/change/ImpliedRepositoryDetectorTest.java b/addons/implied-repos/common/src/test/java/org/commonjava/indy/implrepo/change/ImpliedRepositoryDetectorTest.java
index ff6e39ee7d..8dd061ffb1 100644
--- a/addons/implied-repos/common/src/test/java/org/commonjava/indy/implrepo/change/ImpliedRepositoryDetectorTest.java
+++ b/addons/implied-repos/common/src/test/java/org/commonjava/indy/implrepo/change/ImpliedRepositoryDetectorTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.implrepo.change;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.audit.ChangeSummary;
import org.commonjava.indy.data.ArtifactStoreValidator;
import org.commonjava.indy.data.IndyDataException;
diff --git a/addons/implied-repos/ftests/pom.xml b/addons/implied-repos/ftests/pom.xml
index cfb470900b..2ca1e88456 100644
--- a/addons/implied-repos/ftests/pom.xml
+++ b/addons/implied-repos/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-implied-repos
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-implied-repos
diff --git a/addons/implied-repos/model-java/pom.xml b/addons/implied-repos/model-java/pom.xml
index 296ce38958..dccc4b5cb6 100644
--- a/addons/implied-repos/model-java/pom.xml
+++ b/addons/implied-repos/model-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-implied-repos
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-implied-repos-model-java
Indy :: Add-Ons :: Implied Repositories :: Java Domain Model
diff --git a/addons/implied-repos/pom.xml b/addons/implied-repos/pom.xml
index 6aca63aa42..c0e4041510 100644
--- a/addons/implied-repos/pom.xml
+++ b/addons/implied-repos/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-implied-repos
Indy :: Add-Ons :: Implied Repositories :: Parent
diff --git a/addons/koji/client-java/pom.xml b/addons/koji/client-java/pom.xml
index f625e88f04..be83923f9a 100644
--- a/addons/koji/client-java/pom.xml
+++ b/addons/koji/client-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-koji
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-koji-client-java
Indy :: Add-Ons :: Koji Integration :: Java Client
diff --git a/addons/koji/common/pom.xml b/addons/koji/common/pom.xml
index 0b4afef4e2..80549c0891 100644
--- a/addons/koji/common/pom.xml
+++ b/addons/koji/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-koji
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-koji-common
Indy :: Add-Ons :: Koji Integration :: Common
@@ -108,7 +108,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
+ indy-subsys-metrics
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/conf/IndyKojiConfig.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/conf/IndyKojiConfig.java
index 5e0ef08cff..4dc0f61c59 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/conf/IndyKojiConfig.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/conf/IndyKojiConfig.java
@@ -77,6 +77,8 @@ public class IndyKojiConfig
private static final int DEFAULT_QUERY_CACHE_EXPIRATION_HOURS = 3; // 3 hours for volatile caches
+ private static final Boolean DEFAULT_SERVER_PEM_ENABLED = true;
+
private Boolean enabled;
private String url;
@@ -85,6 +87,8 @@ public class IndyKojiConfig
private String serverPemPath;
+ private Boolean serverPemEnabled;
+
private String keyPassword;
private Integer maxConnections;
@@ -247,6 +251,11 @@ public String getServerPemPath()
return serverPemPath;
}
+ public Boolean getServerPemEnabled()
+ {
+ return serverPemEnabled == null ? DEFAULT_SERVER_PEM_ENABLED : serverPemEnabled;
+ }
+
public String getClientPemPath()
{
return clientPemPath;
@@ -317,6 +326,8 @@ public void setServerPemPath( String serverPemPath )
this.serverPemPath = serverPemPath;
}
+ public void setServerPemEnabled ( Boolean serverPemEnabled ) { this.serverPemEnabled = serverPemEnabled; }
+
public void setKeyPassword( String keyPassword )
{
this.keyPassword = keyPassword;
@@ -582,6 +593,11 @@ public void parameter( final String name, final String value )
this.serverPemPath = value;
break;
}
+ case "server.pem.enabled":
+ {
+ this.serverPemEnabled = Boolean.valueOf( value.trim() );
+ break;
+ }
case "max.connections":
{
this.maxConnections = Integer.valueOf( value );
@@ -627,9 +643,7 @@ public void parameter( final String name, final String value )
}
else
{
- throw new ConfigurationException(
- "Invalid parameter: '%s'.",
- value, name, SECTION_NAME );
+ throw new ConfigurationException( "Invalid KOJI config parameter: %s=%s", name, value );
}
}
}
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiBuildAuthority.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiBuildAuthority.java
index d36ff12e38..7916088dc0 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiBuildAuthority.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiBuildAuthority.java
@@ -28,8 +28,7 @@
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
import org.commonjava.indy.koji.conf.IndyKojiConfig;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.measure.annotation.MetricNamed;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.subsys.infinispan.CacheProducer;
@@ -57,10 +56,9 @@
import java.util.stream.Collectors;
import static java.lang.Boolean.TRUE;
-import static org.apache.commons.lang.StringUtils.contains;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
-import static org.apache.commons.lang.StringUtils.trimToEmpty;
-import static org.commonjava.indy.measure.annotation.MetricNamed.DEFAULT;
+import static org.apache.commons.lang3.StringUtils.contains;
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
+import static org.apache.commons.lang3.StringUtils.trimToEmpty;
import static org.commonjava.maven.galley.io.ChecksummingTransferDecorator.FORCE_CHECKSUM;
/**
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java
index f5197bba10..123b3d343b 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiContentManagerDecorator.java
@@ -31,8 +31,7 @@
import org.commonjava.indy.data.StoreDataManager;
import org.commonjava.indy.koji.conf.IndyKojiConfig;
import org.commonjava.indy.koji.util.KojiUtils;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.measure.annotation.MetricNamed;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.RemoteRepository;
@@ -63,7 +62,6 @@
import static org.commonjava.indy.koji.model.IndyKojiConstants.KOJI_ORIGIN;
import static org.commonjava.indy.koji.model.IndyKojiConstants.KOJI_ORIGIN_BINARY;
-import static org.commonjava.indy.measure.annotation.MetricNamed.DEFAULT;
import static org.commonjava.indy.model.core.StoreType.group;
import static org.commonjava.maven.galley.maven.util.ArtifactPathUtils.formatMetadataPath;
@@ -449,7 +447,10 @@ private RemoteRepository createRemoteRepository( StoreKey inStore, ArtifactRef a
kojiUtils.formatStorageUrl( config.getStorageRootUrl(), build ),
config.getDownloadTimeoutSeconds() );
- remote.setServerCertPem( config.getServerPemContent() );
+ if ( config.getServerPemEnabled() )
+ {
+ remote.setServerCertPem( config.getServerPemContent() );
+ }
if ( isBinaryBuild )
{
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiMavenMetadataProvider.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiMavenMetadataProvider.java
index 95ccfd8034..56261a3244 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiMavenMetadataProvider.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiMavenMetadataProvider.java
@@ -44,14 +44,10 @@
import org.commonjava.indy.koji.conf.IndyKojiConfig;
import org.commonjava.indy.koji.inject.KojiMavenVersionMetadataCache;
import org.commonjava.indy.koji.inject.KojiMavenVersionMetadataLocks;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.pkg.maven.content.MetadataCacheManager;
-import org.commonjava.indy.pkg.maven.content.MetadataInfo;
-import org.commonjava.indy.pkg.maven.content.MetadataKey;
-import org.commonjava.indy.pkg.maven.content.cache.MavenMetadataCache;
-import org.commonjava.indy.pkg.maven.content.cache.MavenMetadataKeyCache;
import org.commonjava.indy.pkg.maven.content.group.MavenMetadataProvider;
import org.commonjava.indy.subsys.infinispan.CacheHandle;
import org.commonjava.indy.subsys.infinispan.CacheProducer;
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiPathPatternFormatter.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiPathPatternFormatter.java
index 5b3ae508e6..4c67c213b7 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiPathPatternFormatter.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/content/KojiPathPatternFormatter.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.koji.content;
import com.redhat.red.build.koji.model.xmlrpc.KojiArchiveInfo;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.atlas.maven.ident.ref.ArtifactRef;
import org.commonjava.atlas.maven.ident.ref.SimpleProjectRef;
import org.commonjava.indy.koji.util.KojiUtils;
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/data/KojiRemovePemMigrationAction.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/data/KojiRemovePemMigrationAction.java
new file mode 100644
index 0000000000..7e612bc39a
--- /dev/null
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/data/KojiRemovePemMigrationAction.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.koji.data;
+
+import org.commonjava.indy.action.IndyLifecycleException;
+import org.commonjava.indy.action.MigrationAction;
+import org.commonjava.indy.audit.ChangeSummary;
+import org.commonjava.indy.data.IndyDataException;
+import org.commonjava.indy.data.StoreDataManager;
+import org.commonjava.indy.koji.conf.IndyKojiConfig;
+import org.commonjava.indy.model.core.RemoteRepository;
+import org.commonjava.indy.pkg.PackageTypeConstants;
+import org.commonjava.maven.galley.event.EventMetadata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
+
+public class KojiRemovePemMigrationAction
+ implements MigrationAction
+{
+
+ private final Logger logger = LoggerFactory.getLogger( getClass() );
+
+ @Inject
+ private StoreDataManager storeDataManager;
+
+ @Inject
+ private IndyKojiConfig config;
+
+ protected KojiRemovePemMigrationAction() { }
+
+ public KojiRemovePemMigrationAction( final StoreDataManager storeDataManager, final IndyKojiConfig config )
+ {
+ this.storeDataManager = storeDataManager;
+ this.config = config;
+ }
+
+ @Override
+ public String getId()
+ {
+ return "Remove server PEM from Koji repos.";
+ }
+
+ @Override
+ public boolean migrate() throws IndyLifecycleException
+ {
+ if ( config.getServerPemEnabled() )
+ {
+ logger.info( "Skip the migration if the server pem is needed. " );
+ return true;
+ }
+
+ logger.info( "Starting to remove server PEM from Koji repo." );
+ return doMigrate();
+ }
+
+ private boolean doMigrate() throws IndyLifecycleException
+ {
+
+ List repos;
+ try
+ {
+ repos = storeDataManager.query().packageType( PackageTypeConstants.PKG_TYPE_MAVEN ).getAllRemoteRepositories();
+ }
+ catch ( IndyDataException e )
+ {
+ throw new IndyLifecycleException( "Cannot retrieve all remote repositories. Reason: %s", e,
+ e.getMessage() );
+ }
+
+ List toStore = new ArrayList<>();
+ repos.forEach( repo -> {
+ if ( repo.getDescription() != null && repo.getDescription().contains( "Koji build" ) && repo.getServerCertPem() != null )
+ {
+ repo.setServerCertPem( null );
+ toStore.add( repo );
+ }
+ } );
+
+ final ChangeSummary changeSummary =
+ new ChangeSummary( ChangeSummary.SYSTEM_USER, "Remove the server PEM from Koji repo." );
+
+ for ( RemoteRepository repo : toStore )
+ {
+ try
+ {
+ storeDataManager.storeArtifactStore( repo, changeSummary, false, false, new EventMetadata() );
+ }
+ catch ( IndyDataException e )
+ {
+ throw new IndyLifecycleException( "Failed to store %s. Reason: %s",
+ e, repo == null ? "NULL REPO" : repo.getKey(), e.getMessage() );
+ }
+ }
+
+ logger.info( "Remove server PEM from Koji repo migration done. Result: {}", toStore.size() );
+ if ( logger.isDebugEnabled() )
+ {
+ toStore.forEach( ( s ) -> logger.debug( s.getKey().toString() ) );
+ }
+
+ return !toStore.isEmpty();
+ }
+
+ @Override
+ public int getMigrationPriority()
+ {
+ return 99;
+ }
+
+}
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/inject/KojijiProvider.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/inject/KojijiProvider.java
index 4fc624f4ea..329f617d77 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/inject/KojijiProvider.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/inject/KojijiProvider.java
@@ -15,7 +15,6 @@
*/
package org.commonjava.indy.koji.inject;
-import com.codahale.metrics.MetricRegistry;
import com.redhat.red.build.koji.KojiClient;
import com.redhat.red.build.koji.KojiClientException;
import org.commonjava.cdi.util.weft.ExecutorConfig;
@@ -25,8 +24,9 @@
import org.commonjava.indy.action.ShutdownAction;
import org.commonjava.indy.action.StartupAction;
import org.commonjava.indy.koji.conf.IndyKojiConfig;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.atlas.maven.ident.ref.ProjectRef;
+import org.commonjava.o11yphant.metrics.api.MetricRegistry;
import org.commonjava.util.jhttpc.auth.MemoryPasswordManager;
import org.commonjava.util.jhttpc.auth.PasswordManager;
import org.commonjava.util.jhttpc.auth.PasswordType;
diff --git a/addons/koji/common/src/main/java/org/commonjava/indy/koji/util/KojiUtils.java b/addons/koji/common/src/main/java/org/commonjava/indy/koji/util/KojiUtils.java
index 5de1101343..0c9ca11f3a 100644
--- a/addons/koji/common/src/main/java/org/commonjava/indy/koji/util/KojiUtils.java
+++ b/addons/koji/common/src/main/java/org/commonjava/indy/koji/util/KojiUtils.java
@@ -37,7 +37,7 @@
import java.net.MalformedURLException;
import java.util.regex.Pattern;
-import static org.apache.commons.lang.StringUtils.isBlank;
+import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.commonjava.maven.galley.util.UrlUtils.buildUrl;
/**
diff --git a/addons/koji/ftests/src/main/java/org/commonjava/indy/koji/ftest/AbstractKojiIT.java b/addons/koji/ftests/src/main/java/org/commonjava/indy/koji/ftest/AbstractKojiIT.java
index 6c45cebfcd..3d63f670ba 100644
--- a/addons/koji/ftests/src/main/java/org/commonjava/indy/koji/ftest/AbstractKojiIT.java
+++ b/addons/koji/ftests/src/main/java/org/commonjava/indy/koji/ftest/AbstractKojiIT.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.koji.ftest;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPut;
diff --git a/addons/koji/ftests/src/main/java/org/commonjava/indy/koji/ftest/GetKojiMetadataTest.java b/addons/koji/ftests/src/main/java/org/commonjava/indy/koji/ftest/GetKojiMetadataTest.java
index f5f88f14c5..5ba3c6e237 100644
--- a/addons/koji/ftests/src/main/java/org/commonjava/indy/koji/ftest/GetKojiMetadataTest.java
+++ b/addons/koji/ftests/src/main/java/org/commonjava/indy/koji/ftest/GetKojiMetadataTest.java
@@ -26,7 +26,7 @@
import java.io.InputStream;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.join;
import static org.commonjava.indy.model.core.StoreType.group;
import static org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
import static org.hamcrest.CoreMatchers.equalTo;
diff --git a/addons/koji/jaxrs/pom.xml b/addons/koji/jaxrs/pom.xml
index 5608e4269b..9242f99264 100644
--- a/addons/koji/jaxrs/pom.xml
+++ b/addons/koji/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-koji
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-koji-jaxrs
diff --git a/addons/koji/model-java/pom.xml b/addons/koji/model-java/pom.xml
index e670c2781d..8fab9e751e 100644
--- a/addons/koji/model-java/pom.xml
+++ b/addons/koji/model-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-koji
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-koji-model-java
Indy :: Add-Ons :: Koji Integration :: Java Domain Model
diff --git a/addons/koji/pom.xml b/addons/koji/pom.xml
index dcd5757804..8c21ce54e1 100644
--- a/addons/koji/pom.xml
+++ b/addons/koji/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-koji
Indy :: Add-Ons :: Koji Integration :: Parent
diff --git a/addons/path-mapped/common/pom.xml b/addons/path-mapped/common/pom.xml
index cd452acb6b..1fa1c114de 100644
--- a/addons/path-mapped/common/pom.xml
+++ b/addons/path-mapped/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-path-mapped
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-path-mapped-common
diff --git a/addons/path-mapped/jaxrs/pom.xml b/addons/path-mapped/jaxrs/pom.xml
index d26589f11d..cdd1fc66dc 100644
--- a/addons/path-mapped/jaxrs/pom.xml
+++ b/addons/path-mapped/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-path-mapped
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-path-mapped-jaxrs
diff --git a/addons/path-mapped/model-java/pom.xml b/addons/path-mapped/model-java/pom.xml
index e4fc2cb8ca..f80916a9fd 100644
--- a/addons/path-mapped/model-java/pom.xml
+++ b/addons/path-mapped/model-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-path-mapped
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-path-mapped-model-java
diff --git a/addons/path-mapped/pom.xml b/addons/path-mapped/pom.xml
index 1e4e391c76..cfd55264ee 100644
--- a/addons/path-mapped/pom.xml
+++ b/addons/path-mapped/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-path-mapped
Indy :: Add-Ons :: Path Mapped :: Parent
diff --git a/addons/pkg-maven/common/pom.xml b/addons/pkg-maven/common/pom.xml
index 682e024c47..2139fb6eec 100644
--- a/addons/pkg-maven/common/pom.xml
+++ b/addons/pkg-maven/common/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-maven
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
@@ -41,6 +41,10 @@
org.commonjava.indy
indy-core
+
+ org.commonjava.atlas
+ atlas-identities
+
org.apache.maven.archetype
archetype-catalog
@@ -93,7 +97,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
+ indy-subsys-metrics
diff --git a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenContentsFilteringTransferDecorator.java b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenContentsFilteringTransferDecorator.java
index df0ec29047..c160f61f83 100644
--- a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenContentsFilteringTransferDecorator.java
+++ b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenContentsFilteringTransferDecorator.java
@@ -33,12 +33,12 @@
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
-import com.codahale.metrics.Timer;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.atlas.maven.ident.util.SnapshotUtils;
import org.commonjava.atlas.maven.ident.version.part.SnapshotPart;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.api.Timer;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.commonjava.maven.galley.event.EventMetadata;
import org.commonjava.maven.galley.io.AbstractTransferDecorator;
import org.commonjava.maven.galley.model.Location;
@@ -70,7 +70,7 @@ public class MavenContentsFilteringTransferDecorator
private final Logger logger = LoggerFactory.getLogger( this.getClass() );
@Inject
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
@Override
public OverriddenBooleanValue decorateExists( final Transfer transfer, final EventMetadata metadata )
@@ -205,11 +205,11 @@ private static class MetadataFilteringOutputStream
private Transfer transfer;
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
private MetadataFilteringOutputStream( final OutputStream stream, final boolean allowsSnapshots,
final boolean allowsReleases, Transfer transfer,
- final IndyMetricsManager metricsManager )
+ final DefaultMetricsManager metricsManager )
{
super( stream );
this.allowsSnapshots = allowsSnapshots;
diff --git a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGenerator.java b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGenerator.java
index 0ceae8f344..a08b221431 100644
--- a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGenerator.java
+++ b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGenerator.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.pkg.maven.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.maven.artifact.repository.metadata.Metadata;
import org.apache.maven.artifact.repository.metadata.Plugin;
import org.apache.maven.artifact.repository.metadata.SnapshotVersion;
@@ -42,7 +42,7 @@
import org.commonjava.indy.core.content.AbstractMergedContentGenerator;
import org.commonjava.indy.core.content.group.GroupMergeHelper;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
diff --git a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MetadataMergeListener.java b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MetadataMergeListener.java
index ff66ed36ae..73daf587cb 100644
--- a/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MetadataMergeListener.java
+++ b/addons/pkg-maven/common/src/main/java/org/commonjava/indy/pkg/maven/content/MetadataMergeListener.java
@@ -17,7 +17,7 @@
import org.commonjava.indy.content.DirectContentAccess;
import org.commonjava.indy.content.MergedContentAction;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.slf4j.Logger;
diff --git a/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenContentFilteringTransferDecoratorTest.java b/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenContentFilteringTransferDecoratorTest.java
index 74c6520dfb..4b2eae1c55 100644
--- a/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenContentFilteringTransferDecoratorTest.java
+++ b/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenContentFilteringTransferDecoratorTest.java
@@ -15,7 +15,6 @@
*/
package org.commonjava.indy.pkg.maven.content;
-import com.codahale.metrics.MetricRegistry;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.io.IOUtils;
import org.commonjava.indy.test.fixture.core.HttpTestFixture;
@@ -27,6 +26,7 @@
import org.commonjava.maven.galley.model.TransferOperation;
import org.commonjava.maven.galley.transport.htcli.internal.HttpDownload;
import org.commonjava.maven.galley.transport.htcli.model.SimpleHttpLocation;
+import org.commonjava.o11yphant.metrics.DefaultMetricRegistry;
import org.hamcrest.CoreMatchers;
import org.junit.Rule;
import org.junit.Test;
@@ -37,6 +37,7 @@
import java.util.HashMap;
import java.util.List;
+import static org.commonjava.o11yphant.metrics.util.MetricUtils.newDefaultMetricRegistry;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.junit.Assert.assertThat;
@@ -46,7 +47,7 @@ public class MavenContentFilteringTransferDecoratorTest
@Rule
public HttpTestFixture fixture = new HttpTestFixture( "test", new MavenContentsFilteringTransferDecorator() );
- private static MetricRegistry metricRegistry = new MetricRegistry();
+ private static DefaultMetricRegistry metricRegistry = newDefaultMetricRegistry();
private static TransportMetricConfig metricConfig = new TransportMetricConfig()
{
@@ -153,7 +154,7 @@ private Transfer getTestHttpTransfer(final String path, final String content) th
assertThat( transfer.exists(), equalTo( false ) );
HttpDownload dl = new HttpDownload( url, location, transfer, new HashMap<>(), new EventMetadata(),
- fixture.getHttp().getHttp(), new ObjectMapper(), metricRegistry, metricConfig );
+ fixture.getHttp().getHttp(), new ObjectMapper(), metricRegistry, metricConfig, null );
return dl.call().getTransfer();
}
diff --git a/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGeneratorTest.java b/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGeneratorTest.java
index 94cf7f2148..5393d5ff5f 100644
--- a/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGeneratorTest.java
+++ b/addons/pkg-maven/common/src/test/java/org/commonjava/indy/pkg/maven/content/MavenMetadataGeneratorTest.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.pkg.maven.content;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.cdi.util.weft.PoolWeftExecutorService;
import org.commonjava.cdi.util.weft.WeftExecutorService;
import org.commonjava.indy.audit.ChangeSummary;
diff --git a/addons/pkg-maven/ftests/pom.xml b/addons/pkg-maven/ftests/pom.xml
index e9fe8b84c7..0caad8c1ec 100644
--- a/addons/pkg-maven/ftests/pom.xml
+++ b/addons/pkg-maven/ftests/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-maven
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithMetaOfHostedReposTest.java b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithMetaOfHostedReposTest.java
index 4cd67449e6..95da94f647 100644
--- a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithMetaOfHostedReposTest.java
+++ b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithMetaOfHostedReposTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.pkg.maven.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.helper.PathInfo;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.ftest.core.category.EventDependent;
diff --git a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithNestedGroupOfHostRepoMetaTest.java b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithNestedGroupOfHostRepoMetaTest.java
index a0b527936d..40188ad47d 100644
--- a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithNestedGroupOfHostRepoMetaTest.java
+++ b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithNestedGroupOfHostRepoMetaTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.pkg.maven.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.helper.PathInfo;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.ftest.core.category.EventDependent;
diff --git a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithNestedGroupOfHostRepoNoMetaTest.java b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithNestedGroupOfHostRepoNoMetaTest.java
index 99fae0b93c..7fe8500896 100644
--- a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithNestedGroupOfHostRepoNoMetaTest.java
+++ b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithNestedGroupOfHostRepoNoMetaTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.pkg.maven.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.helper.PathInfo;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.ftest.core.category.EventDependent;
diff --git a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithoutMetaOfHostedReposTest.java b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithoutMetaOfHostedReposTest.java
index 7dfeef28da..7aedc15371 100644
--- a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithoutMetaOfHostedReposTest.java
+++ b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetaOverlapWithoutMetaOfHostedReposTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.pkg.maven.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.helper.PathInfo;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.ftest.core.category.EventDependent;
diff --git a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetadataMergeWithInvalidVersionTest.java b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetadataMergeWithInvalidVersionTest.java
index f47a332265..c3c5c1ca69 100644
--- a/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetadataMergeWithInvalidVersionTest.java
+++ b/addons/pkg-maven/ftests/src/main/java/org/commonjava/indy/pkg/maven/content/GroupMetadataMergeWithInvalidVersionTest.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.pkg.maven.content;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.ftest.core.category.EventDependent;
diff --git a/addons/pkg-maven/jaxrs/pom.xml b/addons/pkg-maven/jaxrs/pom.xml
index 293b74211c..840fc7fb62 100644
--- a/addons/pkg-maven/jaxrs/pom.xml
+++ b/addons/pkg-maven/jaxrs/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-maven
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-maven/pom.xml b/addons/pkg-maven/pom.xml
index 1641bdb7c9..984862e1d1 100644
--- a/addons/pkg-maven/pom.xml
+++ b/addons/pkg-maven/pom.xml
@@ -20,7 +20,7 @@
indy-addons
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-npm/common/pom.xml b/addons/pkg-npm/common/pom.xml
index 0b4d8aec6a..7e08b5f5f6 100644
--- a/addons/pkg-npm/common/pom.xml
+++ b/addons/pkg-npm/common/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-npm
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMPackageMaskingTransferDecorator.java b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMPackageMaskingTransferDecorator.java
index 73ff93c551..61b4ea1359 100644
--- a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMPackageMaskingTransferDecorator.java
+++ b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMPackageMaskingTransferDecorator.java
@@ -15,9 +15,8 @@
*/
package org.commonjava.indy.pkg.npm.content;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.api.Timer;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.model.galley.KeyedLocation;
import org.commonjava.maven.galley.event.EventMetadata;
@@ -32,7 +31,6 @@
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import java.io.ByteArrayOutputStream;
-import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -49,7 +47,7 @@ public class NPMPackageMaskingTransferDecorator
private final Logger logger = LoggerFactory.getLogger( this.getClass() );
@Inject
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
public NPMPackageMaskingTransferDecorator()
{
@@ -102,7 +100,7 @@ private static class PackageMaskingInputStream
private String contextURL;
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
private byte[] bytes;
@@ -111,7 +109,7 @@ private static class PackageMaskingInputStream
private static final int SIZE = 1024;
private PackageMaskingInputStream( final InputStream stream, final String contextURL,
- final IndyMetricsManager metricsManager )
+ final DefaultMetricsManager metricsManager )
{
super( stream );
this.contextURL = contextURL;
diff --git a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMStoragePathCalculator.java b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMStoragePathCalculator.java
index c245e1c1fa..f85400a2f5 100644
--- a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMStoragePathCalculator.java
+++ b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/NPMStoragePathCalculator.java
@@ -18,8 +18,8 @@
import org.apache.commons.io.FilenameUtils;
import org.commonjava.cdi.util.weft.ThreadContext;
import org.commonjava.indy.content.StoragePathCalculator;
-import org.commonjava.indy.metrics.RequestContextHelper;
import org.commonjava.indy.model.core.StoreKey;
+import org.commonjava.indy.util.RequestContextHelper;
import org.commonjava.maven.galley.io.SpecialPathConstants;
import org.commonjava.maven.galley.model.SpecialPathInfo;
import org.commonjava.maven.galley.spi.io.SpecialPathManager;
diff --git a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java
index 0ad0d02559..3efc8dfd4a 100644
--- a/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java
+++ b/addons/pkg-npm/common/src/main/java/org/commonjava/indy/pkg/npm/content/PackageMetadataGenerator.java
@@ -47,6 +47,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Comparator;
@@ -63,8 +64,8 @@ public class PackageMetadataGenerator
extends AbstractMergedContentGenerator
{
- @Inject
- private TypeMapper typeMapper;
+// @Inject
+// private TypeMapper typeMapper;
@Inject
private PackageMetadataMerger merger;
@@ -92,7 +93,7 @@ public PackageMetadataGenerator( final DirectContentAccess fileManager, final St
{
super( fileManager, storeManager, mergeHelper, nfc, mergedContentActions );
this.downloadManager = downloadManager;
- this.typeMapper = typeMapper;
+// this.typeMapper = typeMapper;
this.pathGenerator = pathGenerator;
this.merger = merger;
this.storagePathCalculator = storagePathCalculator;
@@ -328,6 +329,7 @@ private boolean writePackageMetadata( List firstLevelFiles, Artif
packageMetadata.setKeywords( keywords );
}
+ versions = sortVersions( versions );
packageMetadata.setVersions( versions );
packageMetadata.setDistTags( distTags );
@@ -336,7 +338,7 @@ private boolean writePackageMetadata( List firstLevelFiles, Artif
{
String output = mapper.writeValueAsString( packageMetadata );
stream = metadataFile.openOutputStream( TransferOperation.GENERATE, true, eventMetadata );
- stream.write( output.getBytes( "UTF-8" ) );
+ stream.write( output.getBytes( StandardCharsets.UTF_8 ) );
}
catch ( IOException e )
{
@@ -351,6 +353,13 @@ private boolean writePackageMetadata( List firstLevelFiles, Artif
return true;
}
+ private Map sortVersions( Map versions )
+ {
+ final Map sorted = new LinkedHashMap<>( versions.size() );
+ new ArrayList<>( versions.keySet() ).stream().sorted().forEach( k -> sorted.put( k, versions.get( k ) ) );
+ return sorted;
+ }
+
private Transfer extractMetaFileFromTarballAndStore( ArtifactStore store, String versionPath, Transfer tar )
{
diff --git a/addons/pkg-npm/ftests/pom.xml b/addons/pkg-npm/ftests/pom.xml
index 5c786f34d8..24a3aebe44 100644
--- a/addons/pkg-npm/ftests/pom.xml
+++ b/addons/pkg-npm/ftests/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-npm
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMGroupContentMergeRetrieveTest.java b/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMGroupContentMergeRetrieveTest.java
index 7c555b55c5..bfa5f76cf9 100644
--- a/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMGroupContentMergeRetrieveTest.java
+++ b/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMGroupContentMergeRetrieveTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.pkg.npm.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.util.UrlUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
diff --git a/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataRevisitTimeoutTest.java b/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataRevisitTimeoutTest.java
index 2a6cd3b357..81e0c348cb 100644
--- a/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataRevisitTimeoutTest.java
+++ b/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataRevisitTimeoutTest.java
@@ -18,12 +18,14 @@
import org.apache.commons.io.IOUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
+import org.commonjava.indy.ftest.core.category.TimingDependent;
import org.commonjava.indy.model.core.RemoteRepository;
import org.commonjava.indy.model.core.io.IndyObjectMapper;
import org.commonjava.indy.pkg.npm.model.DistTag;
import org.commonjava.indy.pkg.npm.model.PackageMetadata;
import org.commonjava.indy.test.fixture.core.CoreServerFixture;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import java.io.IOException;
import java.io.InputStream;
@@ -61,6 +63,7 @@ public class NPMMetadataRevisitTimeoutTest
private static final String PATH = "jquery";
@Test
+ @Category( TimingDependent.class )
public void test()
throws Exception
{
@@ -77,15 +80,6 @@ public void test()
resp.getWriter().flush();
} );
- //FIXME: After using galley-0.16.8, I'm not sure the second retrieval of npm metadata will get path of
- // "A/jquery/package.json" while the first retrieval is "A/jquery". So I add a new expectation here
- // to let the second retrieval can work. Need further checking.
- // server.expect( "GET", server.formatUrl( REPO, PATH+"/package.json" ), (req, resp)->{
- // resp.setStatus( 200 );
- // mapper.writeValue( resp.getWriter(), src );
- // resp.getWriter().flush();
- // } );
-
final int METADATA_TIMEOUT_SECOND = 3;
final int TIMEOUT_WAIT_MILLI_S = 1000;
diff --git a/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataTimeoutTest.java b/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataTimeoutTest.java
index bcae207016..8349d16869 100644
--- a/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataTimeoutTest.java
+++ b/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataTimeoutTest.java
@@ -18,12 +18,17 @@
import org.apache.commons.io.IOUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
+import org.commonjava.indy.ftest.core.category.TimingDependent;
import org.commonjava.indy.model.core.RemoteRepository;
import org.commonjava.indy.model.core.io.IndyObjectMapper;
import org.commonjava.indy.pkg.npm.model.DistTag;
import org.commonjava.indy.pkg.npm.model.PackageMetadata;
+import org.commonjava.indy.util.LocationUtils;
+import org.commonjava.maven.galley.model.Location;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -46,15 +51,19 @@
*
*/
public class NPMMetadataTimeoutTest
- extends AbstractContentManagementTest
+ extends AbstractContentManagementTest
{
private static final String REPO = "A";
- private static final String PATH = "jquery";
+ private static final String PATH_JQUERY = "jquery";
+
+ private static final String PATH_BABEL_PARSER = "@babel/parser";
@Test
- public void test() throws Exception
+ @Category( TimingDependent.class )
+ public void test()
+ throws Exception
{
IndyObjectMapper mapper = new IndyObjectMapper( true );
@@ -63,20 +72,17 @@ public void test() throws Exception
dts.setBeta( "1" );
src.setDistTags( dts );
- server.expect( "GET", server.formatUrl( REPO, PATH ), (req, resp)->{
+ server.expect( "GET", server.formatUrl( REPO, PATH_JQUERY ), ( req, resp ) -> {
resp.setStatus( 200 );
mapper.writeValue( resp.getWriter(), src );
resp.getWriter().flush();
} );
- //FIXME: After using galley-0.16.8, I'm not sure the second retrieval of npm metadata will get path of
- // "A/jquery/package.json" while the first retrieval is "A/jquery". So I add a new expectation here
- // to let the second retrieval can work. Need further checking.
-// server.expect( "GET", server.formatUrl( REPO, PATH+"/package.json" ), (req, resp)->{
-// resp.setStatus( 200 );
-// mapper.writeValue( resp.getWriter(), src );
-// resp.getWriter().flush();
-// } );
+ server.expect( "GET", server.formatUrl( REPO, PATH_BABEL_PARSER ), ( req, resp ) -> {
+ resp.setStatus( 200 );
+ mapper.writeValue( resp.getWriter(), src );
+ resp.getWriter().flush();
+ } );
final RemoteRepository repo = new RemoteRepository( NPM_PKG_KEY, REPO, server.formatUrl( REPO ) );
repo.setMetadataTimeoutSeconds( 1 );
@@ -84,24 +90,45 @@ public void test() throws Exception
client.stores().create( repo, "adding npm remote repo", RemoteRepository.class );
// First retrieval
- verifyMetadataBetaTag( "1", repo );
+ verifyMetadataBetaTag( "1", PATH_JQUERY, repo );
+ assertThat( "Metadata not retrieved!", client.content().exists( repo.getKey(), PATH_JQUERY, true ),
+ equalTo( true ) );
+ assertThat( "Metadata not retrieved!",
+ client.content().exists( repo.getKey(), PATH_JQUERY + "/package.json", true ), equalTo( true ) );
+
+ verifyMetadataBetaTag( "1", PATH_BABEL_PARSER, repo );
+ assertThat( "Metadata not retrieved!", client.content().exists( repo.getKey(), PATH_BABEL_PARSER, true ),
+ equalTo( true ) );
+ assertThat( "Metadata not retrieved!",
+ client.content().exists( repo.getKey(), PATH_BABEL_PARSER + "/package.json", true ),
+ equalTo( true ) );
// wait for repo metadata timeout
- Thread.sleep( 2000 );
+ Thread.sleep( 3000 );
+
+ assertThat( "Metadata not cleaned up!", client.content().exists( repo.getKey(), PATH_JQUERY, true ),
+ equalTo( false ) );
+ assertThat( "Metadata not cleaned up!",
+ client.content().exists( repo.getKey(), PATH_JQUERY + "/package.json", true ), equalTo( false ) );
- assertThat( "Metadata not cleaned up!", client.content().exists( repo.getKey(), PATH + "/package.json", true ), equalTo( false ) );
+ assertThat( "Metadata not cleaned up!", client.content().exists( repo.getKey(), PATH_BABEL_PARSER, true ),
+ equalTo( false ) );
+ assertThat( "Metadata not cleaned up!",
+ client.content().exists( repo.getKey(), PATH_BABEL_PARSER + "/package.json", true ),
+ equalTo( false ) );
logger.info( "\n\n\n\nRE-REQUEST STARTS HERE\n\n\n\n" );
// Second retrieval
dts.setBeta( "2" );
- verifyMetadataBetaTag( "2", repo );
+ verifyMetadataBetaTag( "2", PATH_JQUERY, repo );
+ verifyMetadataBetaTag( "2", PATH_BABEL_PARSER, repo );
}
- private void verifyMetadataBetaTag( final String betaTag, RemoteRepository repo )
+ private void verifyMetadataBetaTag( final String betaTag, final String path, RemoteRepository repo )
throws IndyClientException, IOException
{
- try(InputStream remote = client.content().get( repo.getKey(), PATH ))
+ try (InputStream remote = client.content().get( repo.getKey(), path ))
{
assertThat( remote, notNullValue() );
diff --git a/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataWithContentTimeoutTest.java b/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataWithContentTimeoutTest.java
new file mode 100644
index 0000000000..ff7b44836e
--- /dev/null
+++ b/addons/pkg-npm/ftests/src/main/java/org/commonjava/indy/pkg/npm/content/NPMMetadataWithContentTimeoutTest.java
@@ -0,0 +1,122 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.pkg.npm.content;
+
+import org.commonjava.indy.client.core.helper.PathInfo;
+import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
+import org.commonjava.indy.ftest.core.category.TimingDependent;
+import org.commonjava.indy.model.core.RemoteRepository;
+import org.commonjava.indy.pkg.PackageTypeConstants;
+import org.commonjava.indy.util.LocationUtils;
+import org.commonjava.maven.galley.model.Location;
+import org.commonjava.test.http.expect.ExpectationServer;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.io.File;
+import java.io.InputStream;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * This case tests if remote package.json will timeout correctly
+ * when:
+ *
+ * - remote repo A contains package.json with real content for a given package
+ * - package.json is retrieved via remote repo A by client
+ * - package.json metadata timeout is scheduled
+ *
+ * then:
+ *
+ * - package.json expires with metadata timeout and is removed from local storage in remote repository A
+ *
+ */
+public class NPMMetadataWithContentTimeoutTest
+ extends AbstractContentManagementTest
+{
+ @Rule
+ public ExpectationServer server = new ExpectationServer( "repos" );
+
+ @Test
+ @Category( TimingDependent.class )
+ public void timeout()
+ throws Exception
+ {
+ final int METADATA_TIMEOUT_SECONDS = 4;
+ final int METADATA_TIMEOUT_WAITING_MILLISECONDS = 2500;
+
+ final String repoId = "test-repo";
+ final String pkgPath = "@babel/parser";
+ final String pkgMetaPath = pkgPath + "/package.json";
+
+ final String metadataUrl = server.formatUrl( repoId, pkgPath );
+
+ // mocking up a http server that expects access to metadata
+ try (InputStream is = getClass().getResourceAsStream( "babel-parser-7.0.0-beta.48.json" ))
+ {
+ server.expect( metadataUrl, 200, is );
+ }
+
+ // set up remote repository pointing to the test http server, and timeout little later
+ final String changelog = "Timeout Testing: " + name.getMethodName();
+ final RemoteRepository repository =
+ new RemoteRepository( PackageTypeConstants.PKG_TYPE_NPM, repoId, server.formatUrl( repoId ) );
+ repository.setMetadataTimeoutSeconds( METADATA_TIMEOUT_SECONDS );
+ client.stores().create( repository, changelog, RemoteRepository.class );
+
+ // first time trigger normal content storage with timeout, should be 4s
+ PathInfo pkgPathFile = client.content().getInfo( repository.getKey(), pkgPath );
+ client.content().get( repository.getKey(), pkgPath ).close(); // force storage
+ assertThat( "no metadata result", pkgPathFile, notNullValue() );
+ assertThat( "metadata doesn't exist", pkgPathFile.exists(), equalTo( true ) );
+
+ pkgPathFile = client.content().getInfo( repository.getKey(), pkgMetaPath );
+ client.content().get( repository.getKey(), pkgPath ).close();
+ assertThat( "no metadata result", pkgPathFile, notNullValue() );
+ assertThat( "metadata doesn't exist", pkgPathFile.exists(), equalTo( true ) );
+
+ Location location = LocationUtils.toLocation( repository );
+ File pkgFile = getPhysicalStorageFile( location, pkgPath );
+ File pkgMetaFile = getPhysicalStorageFile( location, pkgMetaPath );
+
+ assertThat( "pkg dir doesn't exist", pkgFile.exists(), equalTo( true ) );
+ assertThat( "metadata doesn't exist", pkgMetaFile.exists(), equalTo( true ) );
+
+ // wait for first 2.5s
+ sleepAndRunFileGC( METADATA_TIMEOUT_WAITING_MILLISECONDS );
+
+ // as the metadata content re-request, the metadata timeout interval should NOT be re-scheduled
+ client.content().get( repository.getKey(), pkgPath ).close();
+ client.content().get( repository.getKey(), pkgMetaPath ).close();
+
+ // will wait another 4s
+ sleepAndRunFileGC( METADATA_TIMEOUT_WAITING_MILLISECONDS + 1500 );
+ // as rescheduled, the artifact should not be deleted
+ assertThat( "artifact should be removed as the rescheduled of metadata should not succeed",
+ pkgFile.exists(), equalTo( false ) );
+ assertThat( "artifact should be removed as the rescheduled of metadata should not succeed",
+ pkgMetaFile.exists(), equalTo( false ) );
+ }
+
+ @Override
+ protected boolean createStandardTestStructures()
+ {
+ return false;
+ }
+}
diff --git a/addons/pkg-npm/ftests/src/main/resources/babel-parser-7.0.0-beta.48.json b/addons/pkg-npm/ftests/src/main/resources/babel-parser-7.0.0-beta.48.json
new file mode 100644
index 0000000000..244828515c
--- /dev/null
+++ b/addons/pkg-npm/ftests/src/main/resources/babel-parser-7.0.0-beta.48.json
@@ -0,0 +1,51 @@
+{
+ "_id": "@babel/parser",
+ "_rev": "87-0bf11730f53724368fe4fc3bef482fed",
+ "name": "@babel/parser",
+ "dist-tags": {
+ "latest": "7.0.0-beta.48"
+ },
+ "versions": {
+ "7.0.0-beta.48": {
+ "name": "@babel/parser",
+ "version": "7.0.0-beta.48",
+ "description": "A JavaScript parser",
+ "author": {
+ "name": "Sebastian McKenzie",
+ "email": "sebmck@gmail.com"
+ },
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "keywords": [
+ "babel",
+ "javascript",
+ "parser",
+ "tc39",
+ "ecmascript",
+ "@babel/parser"
+ ],
+ "main": "lib/index.js",
+ "files": [
+ "bin",
+ "lib"
+ ],
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "bin": {
+ "parser": "./bin/babel-parser.js"
+ },
+ "_id": "@babel/parser@7.0.0-beta.48",
+ "_npmVersion": "5.6.0",
+ "_nodeVersion": "8.10.0",
+ "dist": {
+ "integrity": "sha512-X3pKxvy7vL79zc/6XS6cCObyuRMnsRGRu7d3zVSPZGCdxkK0/wTeFRwseRjcvhReV/6LW2D8H8qHVFFL0c+5+w==",
+ "shasum": "f93895cbacee703c0ec98e5af3901c77edd9f1d7",
+ "tarball": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.48.tgz",
+ "fileCount": 6,
+ "unpackedSize": 380503,
+ "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBxCGCRA9TVsSAnZWagAALkIQAI8MHP43v0t5yW+5eb8a\nFvCKyfUV5pYIAgLwyT6QlxWhW37Yy2x1jqzQPVFDz3TEvXHSetOroranW1v6\nH3RrGgFfV6ouyrKnYgk8JpTXHWlHKXWB0m0BqkOrMQwDdQVVVeIxdpQr1yrb\noyt5AjRZ272dKN0Q4iQTeLqC6uxUXYlarbBRUgWXx5BuLh//rVjIJGQ5Fj2m\nZcFFGRjbyw9Hdb0/wo7x0lV6VEi4Oh2wRNZuskIFBRNAiHdrCLf1IZEDsQRE\nGRXuKXc6Xj8LeHvoS2V5Vvs7dbuUq5lq5oiRiTEkPt032MSftU8tsl4UysVn\n1krvHCQYqNCg5WgKJlqXZCae+AxUWj9UacC98aq4vAeZl3DVzoJ5n5ENcHcI\na9Wrs0qumfODoxaDOSs+DNXAYnSc91zoguH187OOCLfas2Gw1MyRIXnJwvnH\nVnwnQyFBuRDDigxBGrRVVFkY6cf+vzoSaVIs5VL8wI85FDtKK/JmTtGwWLtk\nE1xG2tQVl622gWNZqPvoKbS5U1glbq9oPq7ECkPwWA9DSzdBidXfdezyMxJe\n1weMKBjz4+cOvzDS5ybdDPjQE1HlfQ3ffWz8nMm1agoLMXBz5e9pqYo098sL\n+FbijDCbi2Db3fD3UT1DBFMp3+GHuhe4/Aiow2TgL6l9rPlijvXVtAZdnRPV\ng+id\r\n=kdOk\r\n-----END PGP SIGNATURE-----\r\n"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/pkg-npm/jaxrs/pom.xml b/addons/pkg-npm/jaxrs/pom.xml
index 05e73cfab9..f1b902dee6 100644
--- a/addons/pkg-npm/jaxrs/pom.xml
+++ b/addons/pkg-npm/jaxrs/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-npm
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-npm/model-java/pom.xml b/addons/pkg-npm/model-java/pom.xml
index f1b92013b3..755e09ec84 100644
--- a/addons/pkg-npm/model-java/pom.xml
+++ b/addons/pkg-npm/model-java/pom.xml
@@ -20,7 +20,7 @@
indy-pkg-npm
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
diff --git a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/PackageMetadata.java b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/PackageMetadata.java
index 93bbe272e4..708de89141 100644
--- a/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/PackageMetadata.java
+++ b/addons/pkg-npm/model-java/src/main/java/org/commonjava/indy/pkg/npm/model/PackageMetadata.java
@@ -28,9 +28,7 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Date;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -56,17 +54,17 @@ public class PackageMetadata
@JsonProperty( "dist-tags" )
private DistTag distTags = new DistTag();
- private Map versions = new LinkedHashMap();
+ private Map versions = new LinkedHashMap<>();
private List maintainers = new ArrayList<>();
- private Map time = new LinkedHashMap();
+ private Map time = new LinkedHashMap<>();
private UserInfo author;
- private Map users = new LinkedHashMap();
+ private Map users = new LinkedHashMap<>();
- @ApiModelProperty( required = false, dataType = "Repository", value = "Specify the place where your code lives." )
+ @ApiModelProperty( dataType = "Repository", value = "Specify the place where your code lives." )
private Repository repository;
private String readme;
@@ -77,7 +75,7 @@ public class PackageMetadata
private List keywords = new ArrayList<>();
- @ApiModelProperty( required = false, dataType = "Bugs", value = "The issue tracker and / or the email address to which issues should be reported." )
+ @ApiModelProperty( dataType = "Bugs", value = "The issue tracker and / or the email address to which issues should be reported." )
private Bugs bugs;
private License license;
@@ -309,10 +307,8 @@ public boolean merge( PackageMetadata source, boolean isForGroup )
}
// merge maintainers list
- Iterator maintainer = source.getMaintainers().iterator();
- while ( maintainer.hasNext() )
+ for ( UserInfo m : source.getMaintainers() )
{
- UserInfo m = (UserInfo) maintainer.next();
if ( m.getName() != null && !maintainers.contains( m ) )
{
this.addMaintainers( new UserInfo( m.getName(), m.getEmail(), m.getUrl() ) );
@@ -321,10 +317,8 @@ public boolean merge( PackageMetadata source, boolean isForGroup )
}
// merge keywords list
- Iterator keyword = source.getKeywords().iterator();
- while ( keyword.hasNext() )
+ for ( String key : source.getKeywords() )
{
- String key = (String) keyword.next();
if ( !keywords.contains( key ) )
{
this.addKeywords( key );
@@ -368,7 +362,7 @@ public boolean merge( PackageMetadata source, boolean isForGroup )
for ( final String key : sourceTimes.keySet() )
{
String value = sourceTimes.get( key );
- Date date = null;
+ Date date;
try
{
date = sdf.parse( value );
@@ -376,7 +370,9 @@ public boolean merge( PackageMetadata source, boolean isForGroup )
catch ( ParseException e )
{
logger.error( String.format( "Cannot parse date: %s. Reason: %s", value, e ) );
+ continue;
}
+
// if source's version update time is more recent(sort as the letter order), will update it into the original map.
if ( clone.containsKey( key ) && date.compareTo( clone.get( key ) ) <= 0 )
{
@@ -393,7 +389,7 @@ public boolean merge( PackageMetadata source, boolean isForGroup )
// sort as the time value in map
List> timeList = new ArrayList<>( clone.entrySet() );
// sort the time as value (update time) asc
- Collections.sort( timeList, ( o1, o2 ) -> o1.getValue().compareTo( o2.getValue() ) );
+ timeList.sort( Map.Entry.comparingByValue() );
Map result = new LinkedHashMap<>();
// make the 'modified' and 'created' value as the first two keys in final map
diff --git a/addons/pkg-npm/pom.xml b/addons/pkg-npm/pom.xml
index a867b4b1e6..6cce19d904 100644
--- a/addons/pkg-npm/pom.xml
+++ b/addons/pkg-npm/pom.xml
@@ -20,7 +20,7 @@
indy-addons
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
diff --git a/addons/pom.xml b/addons/pom.xml
index 939cdd027c..4f79f983eb 100644
--- a/addons/pom.xml
+++ b/addons/pom.xml
@@ -22,7 +22,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-addons
@@ -43,12 +43,12 @@
diagnostics
pkg-npm
hosted-by-archive
- content-browse
+
changelog
event-audit
sli
path-mapped
- repo-proxy
+
diff --git a/addons/promote/client-java/pom.xml b/addons/promote/client-java/pom.xml
index d1c167100c..613ded1157 100644
--- a/addons/promote/client-java/pom.xml
+++ b/addons/promote/client-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-promote
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-promote-client-java
Indy :: Add-Ons :: Artifact Promotion :: Java Client
diff --git a/addons/promote/client-java/src/main/java/org/commonjava/indy/promote/client/IndyPromoteAdminClientModule.java b/addons/promote/client-java/src/main/java/org/commonjava/indy/promote/client/IndyPromoteAdminClientModule.java
new file mode 100644
index 0000000000..9dcea8b443
--- /dev/null
+++ b/addons/promote/client-java/src/main/java/org/commonjava/indy/promote/client/IndyPromoteAdminClientModule.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.promote.client;
+
+import org.commonjava.indy.client.core.IndyClientException;
+import org.commonjava.indy.client.core.IndyClientModule;
+
+import static org.commonjava.indy.client.core.util.UrlUtils.buildUrl;
+import static org.commonjava.indy.promote.client.IndyPromoteClientModule.PROMOTE_BASEPATH;
+
+public class IndyPromoteAdminClientModule
+ extends IndyClientModule
+{
+ public static final String PROMOTE_ADMIN_BASEPATH = PROMOTE_BASEPATH + "/admin";
+
+ public static final String TRACKING = PROMOTE_ADMIN_BASEPATH + "/tracking";
+
+ public void deleteTrackingRecords( final String trackingId )
+ throws IndyClientException
+ {
+ http.delete( buildUrl( TRACKING, trackingId ) );
+ }
+}
diff --git a/addons/promote/common/pom.xml b/addons/promote/common/pom.xml
index 188183cb66..5e8c30c2b3 100644
--- a/addons/promote/common/pom.xml
+++ b/addons/promote/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-promote
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-promote-common
Indy :: Add-Ons :: Artifact Promotion :: Common
@@ -71,7 +71,7 @@
org.commonjava.indy
- indy-subsys-metrics-reporter
+ indy-subsys-metrics
diff --git a/addons/promote/common/src/main/data/promote/rules/maven-project-version-pattern.groovy b/addons/promote/common/src/main/data/promote/rules/maven-project-version-pattern.groovy
index cc3f2a38d3..ec113e10da 100644
--- a/addons/promote/common/src/main/data/promote/rules/maven-project-version-pattern.groovy
+++ b/addons/promote/common/src/main/data/promote/rules/maven-project-version-pattern.groovy
@@ -1,5 +1,6 @@
package org.commonjava.indy.promote.rules
+import java.util.regex.Pattern
import org.apache.commons.lang.StringUtils;
import org.commonjava.indy.promote.validate.model.ValidationRequest
import org.commonjava.indy.promote.validate.model.ValidationRule
@@ -8,7 +9,7 @@ import org.slf4j.LoggerFactory
class MavenProjectVersionPattern implements ValidationRule {
String validate(ValidationRequest request) throws Exception {
- def versionPattern = request.getValidationParameter("versionPattern")
+ def versionPattern = request.getVersionPattern()
def errors = Collections.synchronizedList(new ArrayList());
if (versionPattern != null) {
@@ -17,9 +18,10 @@ class MavenProjectVersionPattern implements ValidationRule {
def ref = tools.getArtifact(it)
if (ref != null) {
def vs = ref.getVersionString()
- if (!vs.matches(versionPattern)) {
+ def matcher = versionPattern.matcher(vs)
+ if (!matcher.matches()) {
errors.add(String.format("%s does not match version pattern: '%s' (version was: '%s')",
- it, versionPattern, vs))
+ it, versionPattern.pattern(), vs))
}
}
})
diff --git a/addons/promote/common/src/main/data/promote/rules/npm-version-pattern.groovy b/addons/promote/common/src/main/data/promote/rules/npm-version-pattern.groovy
index 74846ddd06..a8f7d03159 100644
--- a/addons/promote/common/src/main/data/promote/rules/npm-version-pattern.groovy
+++ b/addons/promote/common/src/main/data/promote/rules/npm-version-pattern.groovy
@@ -1,5 +1,6 @@
package org.commonjava.indy.promote.rules
+import java.util.regex.Pattern
import org.apache.commons.lang.StringUtils
import org.commonjava.indy.pkg.PackageTypeConstants;
import org.commonjava.indy.promote.validate.model.ValidationRequest
@@ -8,8 +9,8 @@ import org.slf4j.LoggerFactory
class NPMVersionPattern implements ValidationRule {
String validate(ValidationRequest request) throws Exception {
- def versionPattern = request.getValidationParameter("versionPattern")
- def scopedVersionPattern = request.getValidationParameter("scopedVersionPattern")
+ def versionPattern = request.getVersionPattern()
+ def scopedVersionPattern = request.getScopedVersionPattern()
def validScope = request.getValidationParameter("validScope")
def errors = Collections.synchronizedList(new ArrayList())
def logger = LoggerFactory.getLogger(getClass())
@@ -28,21 +29,24 @@ class NPMVersionPattern implements ValidationRule {
if (versionPattern != null) {
def vs = pkgPath.version
logger.info("Start to do version match for path {} with version {}", pkgPath, vs)
- if (!vs.matches(versionPattern)) {
+
+ def matcher = versionPattern.matcher(vs)
+ if (!matcher.matches()) {
errors.add(String.format("%s is not %s scoped and does not match version pattern: '%s' (version was: '%s')",
- it, validScope, versionPattern, vs))
+ it, validScope, versionPattern.pattern(), vs))
} else {
- logger.info("path {} with version {} matches with version pattern {}", pkgPath, vs, versionPattern)
+ logger.info("path {} with version {} matches with version pattern {}", pkgPath, vs, versionPattern.pattern())
}
}
} else if (scopedVersionPattern != null) {
def vs = pkgPath.version
logger.info("Start to do version match for path {} with version {}", pkgPath, vs)
- if (!vs.matches(scopedVersionPattern)) {
+ def matcher = scopedVersionPattern.matcher(vs)
+ if (!matcher.matches()) {
errors.add(String.format("%s is %s scoped and does not match scoped version pattern: '%s' (version was: '%s')",
- it, validScope, scopedVersionPattern, vs))
+ it, validScope, scopedVersionPattern.pattern(), vs))
} else {
- logger.info("path {} with version {} matches with version pattern {}", pkgPath, vs, scopedVersionPattern)
+ logger.info("path {} with version {} matches with version pattern {}", pkgPath, vs, scopedVersionPattern.pattern())
}
}
}
diff --git a/addons/promote/common/src/main/java/org/commonjava/indy/promote/data/PromotionManager.java b/addons/promote/common/src/main/java/org/commonjava/indy/promote/data/PromotionManager.java
index 7258180abd..70b5d859a9 100644
--- a/addons/promote/common/src/main/java/org/commonjava/indy/promote/data/PromotionManager.java
+++ b/addons/promote/common/src/main/java/org/commonjava/indy/promote/data/PromotionManager.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.promote.data;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.cdi.util.weft.DrainingExecutorCompletionService;
import org.commonjava.cdi.util.weft.ExecutorConfig;
import org.commonjava.cdi.util.weft.Locker;
@@ -29,7 +29,7 @@
import org.commonjava.indy.core.inject.GroupMembershipLocks;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.HostedRepository;
@@ -55,7 +55,7 @@
import org.commonjava.maven.galley.spi.nfc.NotFoundCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.commonjava.indy.metrics.RequestContextHelper;
+import org.commonjava.indy.util.RequestContextHelper;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Event;
diff --git a/addons/promote/common/src/main/java/org/commonjava/indy/promote/metrics/PathGauges.java b/addons/promote/common/src/main/java/org/commonjava/indy/promote/metrics/PathGauges.java
index 5d137bfa3d..c38fd92ea0 100644
--- a/addons/promote/common/src/main/java/org/commonjava/indy/promote/metrics/PathGauges.java
+++ b/addons/promote/common/src/main/java/org/commonjava/indy/promote/metrics/PathGauges.java
@@ -15,8 +15,8 @@
*/
package org.commonjava.indy.promote.metrics;
-import com.codahale.metrics.Gauge;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.api.Gauge;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.commonjava.indy.promote.model.PathsPromoteResult;
import javax.annotation.PostConstruct;
@@ -30,7 +30,7 @@
public class PathGauges
{
@Inject
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
private AtomicInteger total = new AtomicInteger();
@@ -48,7 +48,7 @@ public void init()
registerPathPromotionGauges( metricsManager );
}
- private void registerPathPromotionGauges( IndyMetricsManager metricsManager )
+ private void registerPathPromotionGauges( DefaultMetricsManager metricsManager )
{
Map> gauges = new HashMap<>();
gauges.put( "total", () -> getTotal() );
diff --git a/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/PromotionValidationTools.java b/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/PromotionValidationTools.java
index 8d67766cbc..2be85aea53 100644
--- a/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/PromotionValidationTools.java
+++ b/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/PromotionValidationTools.java
@@ -27,7 +27,7 @@
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
import org.commonjava.indy.data.ArtifactStoreQuery;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.model.core.io.IndyObjectMapper;
@@ -60,7 +60,7 @@
import org.commonjava.maven.galley.transport.htcli.model.HttpExchangeMetadata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.commonjava.indy.metrics.RequestContextHelper;
+import org.commonjava.indy.util.RequestContextHelper;
import org.slf4j.MDC;
import javax.inject.Inject;
diff --git a/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/PromotionValidator.java b/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/PromotionValidator.java
index 24aa0de8f2..d863607a2e 100644
--- a/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/PromotionValidator.java
+++ b/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/PromotionValidator.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.promote.validate;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.ClassUtils;
import org.commonjava.cdi.util.weft.DrainingExecutorCompletionService;
import org.commonjava.cdi.util.weft.ExecutorConfig;
@@ -27,8 +27,8 @@
import org.commonjava.indy.content.DownloadManager;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.RemoteRepository;
import org.commonjava.indy.promote.conf.PromoteConfig;
@@ -43,8 +43,7 @@
import org.commonjava.maven.galley.model.Transfer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.commonjava.indy.metrics.RequestContextHelper;
-import org.slf4j.MDC;
+import org.commonjava.indy.util.RequestContextHelper;
import javax.inject.Inject;
import java.io.File;
@@ -57,10 +56,10 @@
import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicReference;
-import static com.codahale.metrics.MetricRegistry.name;
import static java.lang.String.format;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.join;
import static org.commonjava.indy.core.ctl.PoolUtils.detectOverloadVoid;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.name;
/**
* Created by jdcasey on 9/11/15.
@@ -89,7 +88,7 @@ public class PromotionValidator
private PromoteConfig config;
@Inject
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
@Inject
@WeftManaged
@@ -104,7 +103,7 @@ protected PromotionValidator()
public PromotionValidator( PromoteValidationsManager validationsManager, PromotionValidationTools validationTools,
StoreDataManager storeDataMgr, DownloadManager downloadManager,
- WeftExecutorService validateService, IndyMetricsManager metricsManager )
+ WeftExecutorService validateService, DefaultMetricsManager metricsManager )
{
this.validationsManager = validationsManager;
this.validationTools = validationTools;
diff --git a/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/model/ValidationRequest.java b/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/model/ValidationRequest.java
index 967f245995..098f4491df 100644
--- a/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/model/ValidationRequest.java
+++ b/addons/promote/common/src/main/java/org/commonjava/indy/promote/validate/model/ValidationRequest.java
@@ -18,7 +18,6 @@
import org.commonjava.cdi.util.weft.ThreadContext;
import org.commonjava.indy.IndyWorkflowException;
import org.commonjava.indy.content.StoreResource;
-import org.commonjava.indy.metrics.RequestContextHelper;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.promote.model.PathsPromoteRequest;
@@ -26,12 +25,14 @@
import org.commonjava.indy.promote.model.ValidationRuleSet;
import org.commonjava.indy.promote.validate.PromotionValidationException;
import org.commonjava.indy.promote.validate.PromotionValidationTools;
+import org.commonjava.indy.util.RequestContextHelper;
import org.commonjava.maven.galley.model.Transfer;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Predicate;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -49,6 +50,12 @@ public class ValidationRequest
private final ArtifactStore sourceRepository;
+ private static final Predicate DEFAULT_FILTER =
+ getMetadataPredicate().negate().and( getChecksumPredicate().negate() );
+
+ private static final String VERSION_PATTERN = "versionPattern";
+ private static final String SCOPED_VERSION_PATTERN = "scopedVersionPattern";
+
public ValidationRequest( PromoteRequest promoteRequest, ValidationRuleSet ruleSet, PromotionValidationTools tools, ArtifactStore sourceRepository )
{
this.promoteRequest = promoteRequest;
@@ -59,11 +66,20 @@ public ValidationRequest( PromoteRequest promoteRequest, ValidationRuleSet ruleS
public synchronized Set getSourcePaths()
throws PromotionValidationException
{
- return getSourcePaths(false, false);
+ return getSourcePaths( false, false, DEFAULT_FILTER );
}
public synchronized Set getSourcePaths( boolean includeMetadata, boolean includeChecksums )
throws PromotionValidationException
+ {
+ Predicate metadata = asPredicate( includeMetadata ).or( getMetadataPredicate().negate() );
+ Predicate checksums = asPredicate( includeChecksums ).or( getChecksumPredicate().negate() );
+ return getSourcePaths( includeMetadata, includeChecksums ,metadata.and( checksums ) );
+ }
+
+ private Set getSourcePaths( boolean includeMetadata,
+ boolean includeChecksums , Predicate filter )
+ throws PromotionValidationException
{
if ( requestPaths == null )
{
@@ -99,8 +115,6 @@ public synchronized Set getSourcePaths( boolean includeMetadata, boolean
if ( !includeMetadata || !includeChecksums )
{
- Predicate filter = ( path ) -> ( includeMetadata || !path.matches( ".+/maven-metadata\\.xml(\\.(md5|sha[0-9]+))?" ) )
- && ( includeChecksums || !path.matches( ".+\\.(md5|sha[0-9]+)" ) );
return requestPaths.stream().filter( filter ).collect( Collectors.toSet() );
}
@@ -134,6 +148,18 @@ else if ( txfr.exists() )
}
}
+ private Predicate asPredicate( boolean value ) {
+ return ( path ) -> value;
+ }
+
+ private static Predicate getMetadataPredicate () {
+ return Pattern.compile( ".+/maven-metadata\\.xml(\\.(md5|sha[0-9]+))?" ).asPredicate();
+ }
+
+ private static Predicate getChecksumPredicate () {
+ return Pattern.compile( ".+\\.(md5|sha[0-9]+)" ).asPredicate();
+ }
+
public PromoteRequest getPromoteRequest()
{
return promoteRequest;
@@ -154,6 +180,26 @@ public String getValidationParameter( String key )
return ruleSet.getValidationParameter( key );
}
+ public Pattern getVersionPattern( String key )
+ {
+ return ruleSet.getVersionPattern( key );
+ }
+
+ public Pattern getVersionPattern()
+ {
+ return ruleSet.getVersionPattern( VERSION_PATTERN );
+ }
+
+ public Pattern getScopedVersionPattern( String key )
+ {
+ return ruleSet.getScopedVersionPattern( key );
+ }
+
+ public Pattern getScopedVersionPattern()
+ {
+ return ruleSet.getScopedVersionPattern( SCOPED_VERSION_PATTERN );
+ }
+
public StoreKey getSource()
{
return sourceRepository.getKey();
diff --git a/addons/promote/ftests/pom.xml b/addons/promote/ftests/pom.xml
index 365d61ae38..250e260b60 100644
--- a/addons/promote/ftests/pom.xml
+++ b/addons/promote/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-promote
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-promote
diff --git a/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/CacheCheckingforPromoteWithRemoteTest.java b/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/CacheCheckingforPromoteWithRemoteTest.java
index 160c5243a0..93ff5ff19f 100644
--- a/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/CacheCheckingforPromoteWithRemoteTest.java
+++ b/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/CacheCheckingforPromoteWithRemoteTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.promote.ftest;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.client.core.IndyClientModule;
import org.commonjava.indy.ftest.core.AbstractIndyFunctionalTest;
diff --git a/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/GroupHostedMetadataRemergedOnPromoteTest.java b/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/GroupHostedMetadataRemergedOnPromoteTest.java
index 44a30fd19d..b863cab3a7 100644
--- a/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/GroupHostedMetadataRemergedOnPromoteTest.java
+++ b/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/GroupHostedMetadataRemergedOnPromoteTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.promote.ftest;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.client.core.IndyClientModule;
import org.commonjava.indy.client.core.helper.PathInfo;
diff --git a/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/rule/ArtifactRefs_PromoteWithParent_RuleTest.java b/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/rule/ArtifactRefs_PromoteWithParent_RuleTest.java
index 8adf52dcb2..49ad69322a 100644
--- a/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/rule/ArtifactRefs_PromoteWithParent_RuleTest.java
+++ b/addons/promote/ftests/src/main/java/org/commonjava/indy/promote/ftest/rule/ArtifactRefs_PromoteWithParent_RuleTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.promote.ftest.rule;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.category.EventDependent;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.HostedRepository;
diff --git a/addons/promote/jaxrs/pom.xml b/addons/promote/jaxrs/pom.xml
index b0443cd821..942d4416f8 100644
--- a/addons/promote/jaxrs/pom.xml
+++ b/addons/promote/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-promote
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-promote-jaxrs
diff --git a/addons/promote/model-java/pom.xml b/addons/promote/model-java/pom.xml
index 6bef8c14cc..f4411ca6b2 100644
--- a/addons/promote/model-java/pom.xml
+++ b/addons/promote/model-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-promote
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-promote-model-java
Indy :: Add-Ons :: Artifact Promotion :: Java Domain Model
diff --git a/addons/promote/model-java/src/main/java/org/commonjava/indy/promote/model/ValidationCatalogDTO.java b/addons/promote/model-java/src/main/java/org/commonjava/indy/promote/model/ValidationCatalogDTO.java
index 8a49a3451b..9daa003216 100644
--- a/addons/promote/model-java/src/main/java/org/commonjava/indy/promote/model/ValidationCatalogDTO.java
+++ b/addons/promote/model-java/src/main/java/org/commonjava/indy/promote/model/ValidationCatalogDTO.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.promote.model;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import java.util.Collections;
import java.util.Map;
diff --git a/addons/promote/model-java/src/main/java/org/commonjava/indy/promote/model/ValidationRuleSet.java b/addons/promote/model-java/src/main/java/org/commonjava/indy/promote/model/ValidationRuleSet.java
index 331be72142..736ddba9dd 100644
--- a/addons/promote/model-java/src/main/java/org/commonjava/indy/promote/model/ValidationRuleSet.java
+++ b/addons/promote/model-java/src/main/java/org/commonjava/indy/promote/model/ValidationRuleSet.java
@@ -21,6 +21,9 @@
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.regex.Pattern;
/**
* Created by jdcasey on 9/11/15.
@@ -39,6 +42,9 @@ public class ValidationRuleSet
@ApiModelProperty( "Key-value mapping of extra parameters that MAY be required for certain validation rules" )
private Map validationParameters;
+ private transient Pattern versionPattern;
+ private transient Pattern scopedVersionPattern;
+
public ValidationRuleSet(){}
public ValidationRuleSet( String name, String storeKeyPattern, List ruleNames, Map validationParameters )
@@ -138,4 +144,28 @@ public String getValidationParameter( String key )
{
return validationParameters == null ? null : validationParameters.get( key );
}
+
+ public Pattern getVersionPattern( String key )
+ {
+ if ( versionPattern == null )
+ {
+ versionPattern = getPropertyAsPattern ( key );
+ }
+ return versionPattern;
+ }
+
+ public Pattern getScopedVersionPattern( String key )
+ {
+ if ( scopedVersionPattern == null )
+ {
+ scopedVersionPattern = getPropertyAsPattern ( key );
+ }
+ return scopedVersionPattern;
+ }
+
+ private Pattern getPropertyAsPattern ( String key )
+ {
+ String value = validationParameters.get( key );
+ return value == null ? null : Pattern.compile( value );
+ }
}
diff --git a/addons/promote/pom.xml b/addons/promote/pom.xml
index 4a05e64190..76121b47f4 100644
--- a/addons/promote/pom.xml
+++ b/addons/promote/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-promote
Indy :: Add-Ons :: Artifact Promotion :: Parent
diff --git a/addons/repo-proxy/common/pom.xml b/addons/repo-proxy/common/pom.xml
index a10f215134..6317c6badd 100644
--- a/addons/repo-proxy/common/pom.xml
+++ b/addons/repo-proxy/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-repo-proxy
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-repo-proxy-common
Indy :: Add-Ons :: Repository-Proxy :: Common
diff --git a/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/ContentBrowseRemoteIndyListingRewriteManager.java b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/ContentBrowseRemoteIndyListingRewriteManager.java
index bbf36d5400..1fa85b44d8 100644
--- a/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/ContentBrowseRemoteIndyListingRewriteManager.java
+++ b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/ContentBrowseRemoteIndyListingRewriteManager.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.repo.proxy;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.Indy;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.content.browse.client.IndyContentBrowseClientModule;
diff --git a/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/RepoProxyController.java b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/RepoProxyController.java
index 4066e816da..a48f771991 100644
--- a/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/RepoProxyController.java
+++ b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/RepoProxyController.java
@@ -41,8 +41,6 @@
import static java.util.Optional.of;
import static javax.servlet.http.HttpServletResponse.SC_MOVED_PERMANENTLY;
import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
-import static org.commonjava.indy.metrics.RequestContextHelper.HTTP_STATUS;
-import static org.commonjava.indy.metrics.RequestContextHelper.setContext;
import static org.commonjava.indy.pkg.npm.model.NPMPackageTypeDescriptor.NPM_PKG_KEY;
import static org.commonjava.indy.repo.proxy.RepoProxyAddon.ADDON_NAME;
import static org.commonjava.indy.repo.proxy.RepoProxyUtils.extractPath;
@@ -50,6 +48,8 @@
import static org.commonjava.indy.repo.proxy.RepoProxyUtils.getOriginalStoreKeyFromPath;
import static org.commonjava.indy.repo.proxy.RepoProxyUtils.getProxyTo;
import static org.commonjava.indy.repo.proxy.RepoProxyUtils.isNPMMetaPath;
+import static org.commonjava.indy.util.RequestContextHelper.HTTP_STATUS;
+import static org.commonjava.indy.util.RequestContextHelper.setContext;
@ApplicationScoped
public class RepoProxyController
diff --git a/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/conf/RepoProxyConfig.java b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/conf/RepoProxyConfig.java
index fee3d39208..5a3863a522 100644
--- a/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/conf/RepoProxyConfig.java
+++ b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/conf/RepoProxyConfig.java
@@ -46,6 +46,8 @@ public class RepoProxyConfig
private static final String ENABLED_PARAM = "enabled";
+ private static final String CONTENT_LIMITER_ENABLED = "content.limiter.enabled";
+
private static final String API_PATTERNS_PARAM = "api.url.patterns";
private static final String API_METHODS_PARAM = "api.methods";
@@ -74,6 +76,8 @@ public class RepoProxyConfig
private static final Boolean DEFAULT_CONTENT_BROWSE_REWRITE_ENABLE = Boolean.TRUE;
+ private static final Boolean DEFAULT_CONTENT_LIMITER_ENABLE = Boolean.TRUE;
+
private static final Integer DEFAULT_REMOTE_INDY_REQUEST_TIMEOUT = 60;
private String repoCreatorRuleBaseDir;
@@ -90,6 +94,8 @@ public class RepoProxyConfig
private Boolean contentBrowseRewriteEnabled;
+ private Boolean contentLimiterEnabled;
+
private String defaultRemoteIndyUrl;
private Boolean remoteIndyListingRewriteEnabled;
@@ -124,6 +130,12 @@ public Boolean isContentBrowseRewriteEnabled()
this.contentBrowseRewriteEnabled;
}
+ public Boolean isContentLimiterEnabled()
+ {
+ return this.contentLimiterEnabled == null ? DEFAULT_CONTENT_LIMITER_ENABLE :
+ this.contentLimiterEnabled;
+ }
+
public Set getApiPatterns()
{
if ( apiPatterns.isEmpty() )
@@ -220,6 +232,9 @@ public void parameter( final String name, final String value )
case REMOTE_INDY_REQUEST_TIMEOUT:
this.remoteIndyRequestTimeout = Integer.parseInt( value.trim() );
break;
+ case CONTENT_LIMITER_ENABLED:
+ this.contentLimiterEnabled = Boolean.valueOf( value.trim() );
+ break;
default:
break;
}
diff --git a/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/content/RepoProxyCacheProducer.java b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/content/RepoProxyCacheProducer.java
new file mode 100644
index 0000000000..45f0b9744f
--- /dev/null
+++ b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/content/RepoProxyCacheProducer.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.repo.proxy.content;
+
+import org.commonjava.indy.subsys.infinispan.CacheHandle;
+import org.commonjava.indy.subsys.infinispan.CacheProducer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+
+public class RepoProxyCacheProducer
+{
+ private final Logger logger = LoggerFactory.getLogger( getClass() );
+
+ @Inject
+ private CacheProducer cacheProducer;
+
+ private static final String REPO_PROXY_CONTENT_CACHE = "repo-proxy-content";
+
+ @RepoProxyContentCache
+ @Produces
+ @ApplicationScoped
+ public CacheHandle scheduleExpireCache()
+ {
+ return cacheProducer.getCache( REPO_PROXY_CONTENT_CACHE );
+ }
+}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapper.java b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/content/RepoProxyContentCache.java
similarity index 62%
rename from subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapper.java
rename to addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/content/RepoProxyContentCache.java
index 52b73480e2..65084cc76e 100644
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapper.java
+++ b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/content/RepoProxyContentCache.java
@@ -13,20 +13,22 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.commonjava.indy.measure.annotation;
+package org.commonjava.indy.repo.proxy.content;
-import javax.enterprise.util.Nonbinding;
-import javax.interceptor.InterceptorBinding;
+import javax.inject.Qualifier;
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-@InterceptorBinding
-@Target( { METHOD, TYPE } )
-@Retention( RUNTIME )
-public @interface MetricWrapper
+/**
+ * Qualifier used to supply "repo-proxy-content" cache
+ */
+@Qualifier
+@Target( { ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD } )
+@Retention( RetentionPolicy.RUNTIME )
+@Documented
+public @interface RepoProxyContentCache
{
}
diff --git a/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/content/RepoProxyContentLimiter.java b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/content/RepoProxyContentLimiter.java
new file mode 100644
index 0000000000..3026c03762
--- /dev/null
+++ b/addons/repo-proxy/common/src/main/java/org/commonjava/indy/repo/proxy/content/RepoProxyContentLimiter.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.repo.proxy.content;
+
+import org.commonjava.indy.IndyWorkflowException;
+import org.commonjava.indy.content.ContentManager;
+import org.commonjava.indy.data.IndyDataException;
+import org.commonjava.indy.data.StoreDataManager;
+import org.commonjava.indy.model.core.ArtifactStore;
+import org.commonjava.indy.model.core.StoreKey;
+import org.commonjava.indy.repo.proxy.conf.RepoProxyConfig;
+import org.commonjava.indy.subsys.infinispan.CacheHandle;
+import org.commonjava.indy.util.LocationUtils;
+import org.commonjava.maven.galley.event.FileStorageEvent;
+import org.infinispan.notifications.Listener;
+import org.infinispan.notifications.cachelistener.annotation.CacheEntriesEvicted;
+import org.infinispan.notifications.cachelistener.annotation.CacheEntryExpired;
+import org.infinispan.notifications.cachelistener.event.CacheEntriesEvictedEvent;
+import org.infinispan.notifications.cachelistener.event.CacheEntryExpiredEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import java.util.Map;
+
+import static org.commonjava.indy.model.core.StoreType.remote;
+
+@ApplicationScoped
+@Listener
+public class RepoProxyContentLimiter
+{
+
+ private final CacheHandle storedPaths;
+
+ private final RepoProxyConfig config;
+
+ private final StoreDataManager storeDataManager;
+
+ private final ContentManager contentManager;
+
+ private final Logger logger = LoggerFactory.getLogger( getClass() );
+
+ @Inject
+ public RepoProxyContentLimiter( @RepoProxyContentCache CacheHandle storedPaths,
+ StoreDataManager storeDataManager, ContentManager contentManager,
+ RepoProxyConfig config )
+ {
+ this.storedPaths = storedPaths;
+ this.storeDataManager = storeDataManager;
+ this.contentManager = contentManager;
+ this.config = config;
+ }
+
+ public void onContentStorage( @Observes FileStorageEvent storageEvent )
+ {
+ if ( !isEnabled() )
+ {
+ return;
+ }
+
+ StoreKey storeKey = LocationUtils.getKey( storageEvent );
+ if ( remote == storeKey.getType() )
+ {
+ String path = storageEvent.getTransfer().getPath();
+ String skp = storeKey.toString() + "#" + path;
+
+ storedPaths.put( skp, skp );
+ }
+ }
+
+ private boolean isEnabled()
+ {
+ return config.isEnabled() && config.isContentLimiterEnabled();
+ }
+
+ @CacheEntryExpired
+ public void onContentExpiration( CacheEntryExpiredEvent event )
+ {
+ if ( !isEnabled() )
+ {
+ return;
+ }
+
+ clearContent( event.getKey() );
+ }
+
+ @CacheEntriesEvicted
+ public void onContentEviction( CacheEntriesEvictedEvent event )
+ {
+ if ( !isEnabled() )
+ {
+ return;
+ }
+
+ Map entries = event.getEntries();
+ for ( String skp : entries.keySet() )
+ {
+ clearContent( skp );
+ }
+ }
+
+ private void clearContent( String skp )
+ {
+ String[] parts = skp.split( "#" );
+ StoreKey storeKey = StoreKey.fromString( parts[0] );
+
+ if ( remote == storeKey.getType() )
+ {
+ ArtifactStore store;
+ try
+ {
+ store = storeDataManager.getArtifactStore( storeKey );
+ contentManager.delete( store, parts[1] );
+ }
+ catch ( IndyDataException e )
+ {
+ logger.warn( "Failed to lookup store: {} from event: {}", storeKey, skp );
+ }
+ catch ( IndyWorkflowException e )
+ {
+ logger.warn( "Failed to delete: {} from: {}, from event: {}", parts[1], storeKey, skp );
+ }
+ }
+ }
+
+}
diff --git a/addons/repo-proxy/common/src/main/resources/META-INF/beans.xml b/addons/repo-proxy/common/src/main/resources/META-INF/beans.xml
index a85527e718..78fd046fcd 100644
--- a/addons/repo-proxy/common/src/main/resources/META-INF/beans.xml
+++ b/addons/repo-proxy/common/src/main/resources/META-INF/beans.xml
@@ -1,13 +1,20 @@
org.commonjava.indy
indy-repo-proxy
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-ftests-repo-proxy
diff --git a/addons/repo-proxy/ftests/src/main/java/org/commonjava/indy/repo/proxy/ftest/RepoProxyNPMHugeMetaContentRewriteTest.java b/addons/repo-proxy/ftests/src/main/java/org/commonjava/indy/repo/proxy/ftest/RepoProxyNPMHugeMetaContentRewriteTest.java
index 81fe715979..a2b2fd403a 100644
--- a/addons/repo-proxy/ftests/src/main/java/org/commonjava/indy/repo/proxy/ftest/RepoProxyNPMHugeMetaContentRewriteTest.java
+++ b/addons/repo-proxy/ftests/src/main/java/org/commonjava/indy/repo/proxy/ftest/RepoProxyNPMHugeMetaContentRewriteTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.repo.proxy.ftest;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.HostedRepository;
import org.commonjava.indy.model.core.RemoteRepository;
diff --git a/addons/repo-proxy/ftests/src/main/java/org/commonjava/indy/repo/proxy/ftest/create/RepoProxyCreatorWithNPMContentRewriteTest.java b/addons/repo-proxy/ftests/src/main/java/org/commonjava/indy/repo/proxy/ftest/create/RepoProxyCreatorWithNPMContentRewriteTest.java
index 2a6f9b9729..2328fcfc6f 100644
--- a/addons/repo-proxy/ftests/src/main/java/org/commonjava/indy/repo/proxy/ftest/create/RepoProxyCreatorWithNPMContentRewriteTest.java
+++ b/addons/repo-proxy/ftests/src/main/java/org/commonjava/indy/repo/proxy/ftest/create/RepoProxyCreatorWithNPMContentRewriteTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.repo.proxy.ftest.create;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.RemoteRepository;
diff --git a/addons/repo-proxy/ftests/src/main/resources/beans.xml b/addons/repo-proxy/ftests/src/main/resources/beans.xml
index 359f3ee069..78fd046fcd 100644
--- a/addons/repo-proxy/ftests/src/main/resources/beans.xml
+++ b/addons/repo-proxy/ftests/src/main/resources/beans.xml
@@ -1,13 +1,20 @@
org.commonjava.indy
indy-repo-proxy
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-repo-proxy-jaxrs
diff --git a/addons/repo-proxy/pom.xml b/addons/repo-proxy/pom.xml
index cca67a9da2..da0385c522 100644
--- a/addons/repo-proxy/pom.xml
+++ b/addons/repo-proxy/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-repo-proxy
Indy :: Add-Ons :: Repository-Proxy :: Parent
diff --git a/addons/revisions/common/pom.xml b/addons/revisions/common/pom.xml
index 1b56c77d87..8c988176d2 100644
--- a/addons/revisions/common/pom.xml
+++ b/addons/revisions/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-revisions
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-revisions-common
Indy :: Add-Ons :: Revisions :: Common
diff --git a/addons/revisions/common/src/main/java/org/commonjava/indy/revisions/RevisionsManager.java b/addons/revisions/common/src/main/java/org/commonjava/indy/revisions/RevisionsManager.java
index aea97aef47..dd375f5433 100644
--- a/addons/revisions/common/src/main/java/org/commonjava/indy/revisions/RevisionsManager.java
+++ b/addons/revisions/common/src/main/java/org/commonjava/indy/revisions/RevisionsManager.java
@@ -15,8 +15,8 @@
*/
package org.commonjava.indy.revisions;
-import static org.apache.commons.lang.StringUtils.isEmpty;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
+import static org.apache.commons.lang3.StringUtils.join;
import static org.commonjava.indy.audit.ChangeSummary.SYSTEM_USER;
import java.io.File;
@@ -36,11 +36,10 @@
import org.commonjava.indy.audit.ChangeSummary;
import org.commonjava.indy.change.event.IndyLifecycleEvent;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.measure.annotation.MetricNamed;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import static org.commonjava.indy.flat.data.DataFileStoreUtils.INDY_STORE;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.DEFAULT;
+
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.revisions.conf.RevisionsConfig;
import org.commonjava.indy.subsys.datafile.DataFile;
diff --git a/addons/revisions/common/src/test/java/org/commonjava/indy/revisions/RevisionsManagerTest.java b/addons/revisions/common/src/test/java/org/commonjava/indy/revisions/RevisionsManagerTest.java
index ef4d8ade03..109eb364e8 100644
--- a/addons/revisions/common/src/test/java/org/commonjava/indy/revisions/RevisionsManagerTest.java
+++ b/addons/revisions/common/src/test/java/org/commonjava/indy/revisions/RevisionsManagerTest.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.revisions;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.join;
import static org.commonjava.indy.audit.ChangeSummary.SYSTEM_USER;
import static org.commonjava.indy.subsys.git.GitManager.COMMIT_CHANGELOG_ENTRIES;
import static org.hamcrest.CoreMatchers.equalTo;
diff --git a/addons/revisions/jaxrs/pom.xml b/addons/revisions/jaxrs/pom.xml
index ed3483b9b3..497ef31eef 100644
--- a/addons/revisions/jaxrs/pom.xml
+++ b/addons/revisions/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-revisions
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-revisions-jaxrs
diff --git a/addons/revisions/pom.xml b/addons/revisions/pom.xml
index e9bb98adff..28fc786d92 100644
--- a/addons/revisions/pom.xml
+++ b/addons/revisions/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-revisions
Indy :: Add-Ons :: Revisions :: Parent
diff --git a/addons/sli/pom.xml b/addons/sli/pom.xml
index 89d9c3dc02..0be8711bbd 100644
--- a/addons/sli/pom.xml
+++ b/addons/sli/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-addons
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-sli
Indy :: Add-Ons :: Service Level Indicators Reporting :: JAX-RS
@@ -29,7 +29,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
+ indy-subsys-metrics
org.commonjava.indy
diff --git a/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/GoldenSignalsFunctionMetrics.java b/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/GoldenSignalsFunctionMetrics.java
deleted file mode 100644
index 45907c7578..0000000000
--- a/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/GoldenSignalsFunctionMetrics.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.sli.metrics;
-
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.Metric;
-import com.codahale.metrics.Timer;
-import com.codahale.metrics.health.HealthCheck;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static java.util.concurrent.TimeUnit.NANOSECONDS;
-
-public class GoldenSignalsFunctionMetrics
-{
- private String name;
-
- private Meter load = new Meter();
-
- private Timer latency = new Timer();
-
- private Meter errors = new Meter();
-
- private Meter throughput = new Meter();
-
- GoldenSignalsFunctionMetrics( String name )
- {
- this.name = name;
- }
-
- Map getMetrics()
- {
- Map metrics = new HashMap<>();
- metrics.put( name + ".latency", latency );
- metrics.put( name + ".errors", errors );
- metrics.put( name + ".throughput", throughput );
- metrics.put( name + ".load", load );
-
- return metrics;
- }
-
- public GoldenSignalsFunctionMetrics latency( long duration )
- {
- latency.update( duration, NANOSECONDS );
- return this;
- }
-
- public GoldenSignalsFunctionMetrics error()
- {
- errors.mark();
- return this;
- }
-
- public GoldenSignalsFunctionMetrics call()
- {
- throughput.mark();
- return this;
- }
-
- public HealthCheck getHealthCheck()
- {
- return new GSFunctionHealthCheck();
- }
-
- public GoldenSignalsFunctionMetrics started()
- {
- load.mark();
- return this;
- }
-
- final class GSFunctionHealthCheck
- extends HealthCheck
- {
- @Override
- protected Result check()
- throws Exception
- {
- // FIXME: We need need to incorporate the SLO targets to determine whether health / unhealthy.
- return Result.builder()
- .withDetail( "latency", latency.getSnapshot().get99thPercentile() )
- .withDetail( "errors", errors.getOneMinuteRate() )
- .withDetail( "throughput", throughput.getOneMinuteRate() )
- .withDetail( "load", load.getOneMinuteRate() )
- .healthy()
- .build();
- }
- }
-}
diff --git a/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/GoldenSignalsMetricSet.java b/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/GoldenSignalsMetricSet.java
deleted file mode 100644
index 42bc5568ac..0000000000
--- a/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/GoldenSignalsMetricSet.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.sli.metrics;
-
-import com.codahale.metrics.Metric;
-import com.codahale.metrics.MetricSet;
-import com.codahale.metrics.health.HealthCheck;
-import org.commonjava.indy.metrics.healthcheck.IndyCompoundHealthCheck;
-
-import javax.enterprise.context.ApplicationScoped;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FUNCTIONS;
-
-@ApplicationScoped
-public class GoldenSignalsMetricSet
- implements MetricSet, IndyCompoundHealthCheck
-{
- private Map functionMetrics = new HashMap<>();
-
- public GoldenSignalsMetricSet()
- {
- Stream.of( FUNCTIONS )
- .forEach( function -> {
- System.out.println( "Wiring SLI metrics for: " + function );
- functionMetrics.put( function, new GoldenSignalsFunctionMetrics( function ) );
- } );
- }
-
- @Override
- public Map getMetrics()
- {
- Map metrics = new HashMap<>();
- functionMetrics.values().forEach( ms -> metrics.putAll( ms.getMetrics() ) );
-
- return metrics;
- }
-
- public Optional function( String name )
- {
- return functionMetrics.containsKey( name ) ? Optional.of( functionMetrics.get( name ) ) : Optional.empty();
- }
-
- @Override
- public Map getHealthChecks()
- {
- Map checks = new HashMap<>();
- functionMetrics.forEach( (key,value)-> checks.put( "sli.golden." + key, value.getHealthCheck() ) );
- return checks;
- }
-}
diff --git a/core/src/test/java/org/commonjava/indy/fixture/MockWeftProvider.java b/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/IndyGoldenSignalsMetricSet.java
similarity index 62%
rename from core/src/test/java/org/commonjava/indy/fixture/MockWeftProvider.java
rename to addons/sli/src/main/java/org/commonjava/indy/sli/metrics/IndyGoldenSignalsMetricSet.java
index 9acfd3b69c..ded8e77a8c 100644
--- a/core/src/test/java/org/commonjava/indy/fixture/MockWeftProvider.java
+++ b/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/IndyGoldenSignalsMetricSet.java
@@ -13,23 +13,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.commonjava.indy.fixture;
+package org.commonjava.indy.sli.metrics;
-import org.commonjava.cdi.util.weft.config.DefaultWeftConfig;
-import org.commonjava.cdi.util.weft.config.WeftConfig;
+import org.commonjava.o11yphant.metrics.sli.GoldenSignalsMetricSet;
import javax.enterprise.context.ApplicationScoped;
-import javax.enterprise.inject.Alternative;
-import javax.enterprise.inject.Produces;
+import java.util.Arrays;
+import java.util.Collection;
+
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FUNCTIONS;
@ApplicationScoped
-@Alternative
-public class MockWeftProvider
+public class IndyGoldenSignalsMetricSet
+ extends GoldenSignalsMetricSet
{
- @Produces
- public WeftConfig getWeftConfig()
+ @Override
+ protected Collection getFunctions()
{
- return new DefaultWeftConfig();
+ return Arrays.asList( FUNCTIONS );
}
}
diff --git a/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/GoldenSignalsMetricSetProvider.java b/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/IndyGoldenSignalsMetricSetProvider.java
similarity index 70%
rename from addons/sli/src/main/java/org/commonjava/indy/sli/metrics/GoldenSignalsMetricSetProvider.java
rename to addons/sli/src/main/java/org/commonjava/indy/sli/metrics/IndyGoldenSignalsMetricSetProvider.java
index 9c81d545ba..2d65f5177a 100644
--- a/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/GoldenSignalsMetricSetProvider.java
+++ b/addons/sli/src/main/java/org/commonjava/indy/sli/metrics/IndyGoldenSignalsMetricSetProvider.java
@@ -15,22 +15,28 @@
*/
package org.commonjava.indy.sli.metrics;
-import com.codahale.metrics.MetricRegistry;
-import org.commonjava.indy.metrics.MetricSetProvider;
+import org.commonjava.o11yphant.metrics.api.MetricSet;
+import org.commonjava.o11yphant.metrics.MetricSetProvider;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
@ApplicationScoped
-public class GoldenSignalsMetricSetProvider
+public class IndyGoldenSignalsMetricSetProvider
implements MetricSetProvider
{
@Inject
- private GoldenSignalsMetricSet metricSet;
+ private IndyGoldenSignalsMetricSet metricSet;
@Override
- public void registerMetricSet( final MetricRegistry registry )
+ public MetricSet getMetricSet()
{
- registry.register( "sli.golden", metricSet );
+ return metricSet;
+ }
+
+ @Override
+ public String getName()
+ {
+ return "sli.golden";
}
}
diff --git a/api/pom.xml b/api/pom.xml
index 1bb84c0950..a3c82a81d0 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-api
@@ -37,8 +37,8 @@
propulsor-configuration-core
- commons-lang
- commons-lang
+ org.apache.commons
+ commons-lang3
org.commonjava.maven.galley
diff --git a/api/src/main/java/org/commonjava/indy/CustomJsonLayout.java b/api/src/main/java/org/commonjava/indy/CustomJsonLayout.java
index ae2f9cdd7b..4ef032bf0b 100644
--- a/api/src/main/java/org/commonjava/indy/CustomJsonLayout.java
+++ b/api/src/main/java/org/commonjava/indy/CustomJsonLayout.java
@@ -17,7 +17,7 @@
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.contrib.json.classic.JsonLayout;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/api/src/main/java/org/commonjava/indy/action/IndyLifecycleManager.java b/api/src/main/java/org/commonjava/indy/action/IndyLifecycleManager.java
index 91f9feec2f..310a511ab4 100644
--- a/api/src/main/java/org/commonjava/indy/action/IndyLifecycleManager.java
+++ b/api/src/main/java/org/commonjava/indy/action/IndyLifecycleManager.java
@@ -20,6 +20,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
+import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
@@ -188,7 +189,9 @@ private void runBootupActions()
if ( bootupActions != null )
{
- logger.info( "Running bootup actions..." );
+ logger.info( "Running bootup actions in the following order:\n\n{}",
+ bootupActions.stream().map( a -> a.getId() ).collect( Collectors.toList() ) );
+
for ( final BootupAction action : bootupActions )
{
logger.info( "Running bootup action: '{}'", action.getId() );
@@ -212,7 +215,9 @@ private void runMigrationActions()
boolean changed = false;
if ( migrationActions != null )
{
- logger.info( "Running migration actions..." );
+ logger.info( "Running migration actions in the following order:\n\n{}",
+ migrationActions.stream().map( a -> a.getId() ).collect( Collectors.toList() ) );
+
for ( final MigrationAction action : migrationActions )
{
logger.info( "Running migration action: '{}'", action.getId() );
@@ -235,7 +240,9 @@ private void runStartupActions()
if ( startupActions != null )
{
- logger.info( "Running startup actions..." );
+ logger.info( "Running startup actions in the following order:\n\n{}",
+ startupActions.stream().map( a -> a.getId() ).collect( Collectors.toList() ) );
+
for ( final StartupAction action : startupActions )
{
logger.info( "Running startup action: '{}'", action.getId() );
@@ -258,7 +265,9 @@ private void runShutdownActions()
if ( shutdownActions != null )
{
- logger.info( "Running shutdown actions..." );
+ logger.info( "Running shutdown actions in the following order:\n\n{}",
+ shutdownActions.stream().map( a -> a.getId() ).collect( Collectors.toList() ) );
+
for ( final ShutdownAction action : shutdownActions )
{
logger.info( "Running shutdown action: '{}'", action.getId() );
diff --git a/api/src/main/java/org/commonjava/indy/conf/DefaultIndyConfiguration.java b/api/src/main/java/org/commonjava/indy/conf/DefaultIndyConfiguration.java
index 0dceaa4b37..decec8fb33 100644
--- a/api/src/main/java/org/commonjava/indy/conf/DefaultIndyConfiguration.java
+++ b/api/src/main/java/org/commonjava/indy/conf/DefaultIndyConfiguration.java
@@ -25,8 +25,8 @@
import java.io.InputStream;
import java.util.Properties;
-import static org.apache.commons.lang.StringUtils.isBlank;
-import static org.apache.commons.lang.StringUtils.isEmpty;
+import static org.apache.commons.lang3.StringUtils.isBlank;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
@SectionName
@ApplicationScoped
diff --git a/api/src/main/java/org/commonjava/indy/util/AcceptInfoParser.java b/api/src/main/java/org/commonjava/indy/util/AcceptInfoParser.java
index 6235cd58af..668b0281ff 100644
--- a/api/src/main/java/org/commonjava/indy/util/AcceptInfoParser.java
+++ b/api/src/main/java/org/commonjava/indy/util/AcceptInfoParser.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.util;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.join;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/api/src/main/java/org/commonjava/indy/metrics/RequestContextHelper.java b/api/src/main/java/org/commonjava/indy/util/RequestContextHelper.java
similarity index 99%
rename from api/src/main/java/org/commonjava/indy/metrics/RequestContextHelper.java
rename to api/src/main/java/org/commonjava/indy/util/RequestContextHelper.java
index c9c3619772..1c5ec35a8e 100644
--- a/api/src/main/java/org/commonjava/indy/metrics/RequestContextHelper.java
+++ b/api/src/main/java/org/commonjava/indy/util/RequestContextHelper.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.commonjava.indy.metrics;
+package org.commonjava.indy.util;
import org.commonjava.cdi.util.weft.ThreadContext;
diff --git a/bin/test-setup.sh b/bin/test-setup.sh
index 2df694fbfe..4a28ebd767 100755
--- a/bin/test-setup.sh
+++ b/bin/test-setup.sh
@@ -56,6 +56,8 @@ else
cat > $ETC_BASE/conf.d/default.conf <<-EOF
[default]
standalone=true
+[_internal]
+store.validation.enabled=false
[ssl]
remote.ssl.required=false
EOF
diff --git a/bindings/jaxrs/pom.xml b/bindings/jaxrs/pom.xml
index 80d18f26cb..c4915ba4fe 100644
--- a/bindings/jaxrs/pom.xml
+++ b/bindings/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-bindings
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-bindings-jaxrs
diff --git a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/ContentAccessHandler.java b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/ContentAccessHandler.java
index 3149aaf5c1..717444cb40 100644
--- a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/ContentAccessHandler.java
+++ b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/ContentAccessHandler.java
@@ -26,8 +26,8 @@
import org.commonjava.indy.core.bind.jaxrs.util.TransferCountingInputStream;
import org.commonjava.indy.core.bind.jaxrs.util.TransferStreamingOutput;
import org.commonjava.indy.core.ctl.ContentController;
-import org.commonjava.indy.metrics.IndyMetricsManager;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.indy.model.core.BatchDeleteRequest;
import org.commonjava.indy.model.core.PackageTypes;
import org.commonjava.indy.model.core.StoreKey;
@@ -66,13 +66,12 @@
import java.util.function.Supplier;
import static org.commonjava.indy.core.bind.jaxrs.util.RequestUtils.isDirectoryPath;
-import static org.commonjava.indy.core.ctl.ContentController.LISTING_HTML_FILE;
-import static org.commonjava.indy.metrics.RequestContextHelper.CONTENT_ENTRY_POINT;
-import static org.commonjava.indy.metrics.RequestContextHelper.HTTP_STATUS;
-import static org.commonjava.indy.metrics.RequestContextHelper.METADATA_CONTENT;
-import static org.commonjava.indy.metrics.RequestContextHelper.PACKAGE_TYPE;
-import static org.commonjava.indy.metrics.RequestContextHelper.PATH;
-import static org.commonjava.indy.metrics.RequestContextHelper.setContext;
+import static org.commonjava.indy.util.RequestContextHelper.CONTENT_ENTRY_POINT;
+import static org.commonjava.indy.util.RequestContextHelper.HTTP_STATUS;
+import static org.commonjava.indy.util.RequestContextHelper.METADATA_CONTENT;
+import static org.commonjava.indy.util.RequestContextHelper.PACKAGE_TYPE;
+import static org.commonjava.indy.util.RequestContextHelper.PATH;
+import static org.commonjava.indy.util.RequestContextHelper.setContext;
import static org.commonjava.indy.pkg.npm.model.NPMPackageTypeDescriptor.NPM_PKG_KEY;
@ApplicationScoped
@@ -93,7 +92,7 @@ public class ContentAccessHandler
protected JaxRsRequestHelper jaxRsRequestHelper;
@Inject
- protected IndyMetricsManager metricsManager;
+ protected DefaultMetricsManager metricsManager;
@Inject
protected IndyMetricsConfig metricsConfig;
diff --git a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/NfcResource.java b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/NfcResource.java
index faa456f33f..a631b9ea36 100644
--- a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/NfcResource.java
+++ b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/NfcResource.java
@@ -46,7 +46,7 @@
import javax.ws.rs.core.Response;
import java.nio.file.Paths;
-import static org.apache.commons.lang.StringUtils.isBlank;
+import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
@Api( description = "REST resource that manages the not-found cache", value = "Not-Found Cache" )
diff --git a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/admin/DeprecatedStoreAdminHandler.java b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/admin/DeprecatedStoreAdminHandler.java
index 0714352336..2dc2fe2a02 100644
--- a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/admin/DeprecatedStoreAdminHandler.java
+++ b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/admin/DeprecatedStoreAdminHandler.java
@@ -68,7 +68,7 @@
import static javax.ws.rs.core.Response.notModified;
import static javax.ws.rs.core.Response.ok;
import static javax.ws.rs.core.Response.status;
-import static org.apache.commons.lang.StringUtils.isEmpty;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.commonjava.indy.model.core.ArtifactStore.METADATA_CHANGELOG;
import static org.commonjava.indy.util.ApplicationContent.application_json;
diff --git a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/admin/StoreAdminHandler.java b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/admin/StoreAdminHandler.java
index f91189cd23..1820c632a3 100644
--- a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/admin/StoreAdminHandler.java
+++ b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/admin/StoreAdminHandler.java
@@ -21,7 +21,7 @@
import static javax.ws.rs.core.Response.notModified;
import static javax.ws.rs.core.Response.ok;
import static javax.ws.rs.core.Response.status;
-import static org.apache.commons.lang.StringUtils.isEmpty;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.commonjava.indy.model.core.ArtifactStore.METADATA_CHANGELOG;
import static org.commonjava.indy.util.ApplicationContent.application_json;
diff --git a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/util/TransferCountingInputStream.java b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/util/TransferCountingInputStream.java
index 59355bb6d2..90f4614ac3 100644
--- a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/util/TransferCountingInputStream.java
+++ b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/util/TransferCountingInputStream.java
@@ -15,22 +15,21 @@
*/
package org.commonjava.indy.core.bind.jaxrs.util;
-import com.codahale.metrics.Meter;
import org.apache.commons.io.input.CountingInputStream;
-import org.commonjava.indy.metrics.IndyMetricsManager;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
+import org.commonjava.o11yphant.metrics.api.Meter;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.maven.galley.util.IdempotentCloseInputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import static org.commonjava.indy.IndyContentConstants.NANOS_PER_SEC;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.METER;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getDefaultName;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getName;
+import static org.commonjava.o11yphant.metrics.MetricsConstants.METER;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.getDefaultName;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.getName;
public class TransferCountingInputStream
extends IdempotentCloseInputStream
@@ -38,7 +37,7 @@ public class TransferCountingInputStream
private static final String TRANSFER_UPLOAD_METRIC_NAME = "indy.transferred.content.upload";
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
private IndyMetricsConfig metricsConfig;
@@ -49,7 +48,7 @@ protected TransferCountingInputStream( final InputStream stream )
super( new CountingInputStream( stream ) );
}
- public TransferCountingInputStream( final InputStream stream, final IndyMetricsManager metricsManager,
+ public TransferCountingInputStream( final InputStream stream, final DefaultMetricsManager metricsManager,
final IndyMetricsConfig metricsConfig )
{
this( stream );
diff --git a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/util/TransferStreamingOutput.java b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/util/TransferStreamingOutput.java
index 3b21319d80..c26129c25f 100644
--- a/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/util/TransferStreamingOutput.java
+++ b/bindings/jaxrs/src/main/java/org/commonjava/indy/core/bind/jaxrs/util/TransferStreamingOutput.java
@@ -15,12 +15,12 @@
*/
package org.commonjava.indy.core.bind.jaxrs.util;
-import com.codahale.metrics.Meter;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.CountingOutputStream;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.metrics.IndyMetricsManager;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
+import org.commonjava.o11yphant.metrics.api.Meter;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,9 +31,9 @@
import java.io.OutputStream;
import static org.commonjava.indy.IndyContentConstants.NANOS_PER_SEC;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.METER;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getDefaultName;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getName;
+import static org.commonjava.o11yphant.metrics.MetricsConstants.METER;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.getDefaultName;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.getName;
public class TransferStreamingOutput
implements StreamingOutput
@@ -43,11 +43,11 @@ public class TransferStreamingOutput
private InputStream stream;
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
private IndyMetricsConfig metricsConfig;
- public TransferStreamingOutput( final InputStream stream, final IndyMetricsManager metricsManager,
+ public TransferStreamingOutput( final InputStream stream, final DefaultMetricsManager metricsManager,
final IndyMetricsConfig metricsConfig )
{
this.stream = stream;
diff --git a/bindings/pom.xml b/bindings/pom.xml
index 7c690ff5b9..5762336c68 100644
--- a/bindings/pom.xml
+++ b/bindings/pom.xml
@@ -22,7 +22,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-bindings
diff --git a/boot/jaxrs/pom.xml b/boot/jaxrs/pom.xml
index de2baf1e35..5189856a7d 100644
--- a/boot/jaxrs/pom.xml
+++ b/boot/jaxrs/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy.boot
indy-booters
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy.boot
diff --git a/boot/jaxrs/src/main/java/org/commonjava/indy/boot/jaxrs/IndyDeployer.java b/boot/jaxrs/src/main/java/org/commonjava/indy/boot/jaxrs/IndyDeployer.java
index 1d2d6ef698..9f798f1af2 100644
--- a/boot/jaxrs/src/main/java/org/commonjava/indy/boot/jaxrs/IndyDeployer.java
+++ b/boot/jaxrs/src/main/java/org/commonjava/indy/boot/jaxrs/IndyDeployer.java
@@ -16,6 +16,7 @@
package org.commonjava.indy.boot.jaxrs;
import io.undertow.Undertow;
+import io.undertow.UndertowOptions;
import io.undertow.predicate.Predicate;
import io.undertow.predicate.Predicates;
import io.undertow.server.HttpServerExchange;
@@ -136,8 +137,10 @@ public void deploy( BootOptions bootOptions )
private Undertow buildAndStartUndertow( DeploymentManager dm, Integer port, String bind, RestConfig restConfig )
throws Exception
{
- Undertow.Builder builder =
- Undertow.builder().setHandler( getGzipEncodeHandler( dm ) ).addHttpListener( port, bind );
+ Undertow.Builder builder = Undertow.builder()
+ .setServerOption( UndertowOptions.ENABLE_HTTP2, true )
+ .setHandler( getGzipEncodeHandler( dm ) )
+ .addHttpListener( port, bind );
restConfig.configureBuilder( builder );
Undertow t = builder.build();
t.start();
diff --git a/boot/pom.xml b/boot/pom.xml
index f0ca808ca6..60bc99ef6c 100644
--- a/boot/pom.xml
+++ b/boot/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy.boot
diff --git a/clients/core-java/pom.xml b/clients/core-java/pom.xml
index 9d77a821f9..c9d13cb419 100644
--- a/clients/core-java/pom.xml
+++ b/clients/core-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-clients-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-client-core-java
diff --git a/clients/core-java/src/main/java/org/commonjava/indy/client/core/IndyClientHttp.java b/clients/core-java/src/main/java/org/commonjava/indy/client/core/IndyClientHttp.java
index 104a738054..8fc3f63a66 100644
--- a/clients/core-java/src/main/java/org/commonjava/indy/client/core/IndyClientHttp.java
+++ b/clients/core-java/src/main/java/org/commonjava/indy/client/core/IndyClientHttp.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.client.core;
import com.fasterxml.jackson.core.type.TypeReference;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.http.Header;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
@@ -65,7 +65,7 @@
import java.util.Map;
import java.util.function.Supplier;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.commonjava.indy.IndyContentConstants.CHECK_CACHE_ONLY;
import static org.commonjava.indy.client.core.helper.HttpResources.cleanupResources;
import static org.commonjava.indy.client.core.helper.HttpResources.entityToString;
diff --git a/clients/core-java/src/main/java/org/commonjava/indy/client/core/IndyResponseErrorDetails.java b/clients/core-java/src/main/java/org/commonjava/indy/client/core/IndyResponseErrorDetails.java
index 0bee7c840b..bc9c468ff7 100644
--- a/clients/core-java/src/main/java/org/commonjava/indy/client/core/IndyResponseErrorDetails.java
+++ b/clients/core-java/src/main/java/org/commonjava/indy/client/core/IndyResponseErrorDetails.java
@@ -17,7 +17,7 @@
import java.io.IOException;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.ProtocolVersion;
diff --git a/clients/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyMaintenanceClientModule.java b/clients/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyMaintenanceClientModule.java
index b0b6c923bb..f43a7cd693 100644
--- a/clients/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyMaintenanceClientModule.java
+++ b/clients/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyMaintenanceClientModule.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.client.core.module;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.client.core.IndyClientModule;
import org.commonjava.indy.client.core.util.UrlUtils;
diff --git a/clients/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyNfcClientModule.java b/clients/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyNfcClientModule.java
index e999c77ae6..83aea9ade7 100644
--- a/clients/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyNfcClientModule.java
+++ b/clients/core-java/src/main/java/org/commonjava/indy/client/core/module/IndyNfcClientModule.java
@@ -28,7 +28,7 @@
import java.net.URI;
import java.net.URISyntaxException;
-import static org.apache.commons.lang.StringUtils.isBlank;
+import static org.apache.commons.lang3.StringUtils.isBlank;
public class IndyNfcClientModule
extends IndyClientModule
diff --git a/clients/core-java/src/main/java/org/commonjava/indy/client/core/util/UrlUtils.java b/clients/core-java/src/main/java/org/commonjava/indy/client/core/util/UrlUtils.java
index ef1bcd14cb..5eddc155b3 100644
--- a/clients/core-java/src/main/java/org/commonjava/indy/client/core/util/UrlUtils.java
+++ b/clients/core-java/src/main/java/org/commonjava/indy/client/core/util/UrlUtils.java
@@ -23,7 +23,7 @@
import java.util.Map;
import java.util.function.Supplier;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.join;
public final class UrlUtils
{
diff --git a/clients/pom.xml b/clients/pom.xml
index 4ee0032e14..f6c8e4cc9e 100644
--- a/clients/pom.xml
+++ b/clients/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-clients-parent
diff --git a/core/pom.xml b/core/pom.xml
index 2bd51baae7..0bbfda43fd 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-core
@@ -132,7 +132,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
+ indy-subsys-metrics
org.jboss.resteasy
diff --git a/core/src/main/conf/conf.d/durable-state.conf b/core/src/main/conf/conf.d/durable-state.conf
new file mode 100644
index 0000000000..f9108b87b2
--- /dev/null
+++ b/core/src/main/conf/conf.d/durable-state.conf
@@ -0,0 +1,4 @@
+[durable-state]
+folo.storage=infinispan
+store.storage=infinispan
+schedule.storage=infinispan
\ No newline at end of file
diff --git a/core/src/main/java/org/commonjava/indy/core/change/StoreContentListener.java b/core/src/main/java/org/commonjava/indy/core/change/StoreContentListener.java
index f1bab9ad42..b9083e90c9 100644
--- a/core/src/main/java/org/commonjava/indy/core/change/StoreContentListener.java
+++ b/core/src/main/java/org/commonjava/indy/core/change/StoreContentListener.java
@@ -27,7 +27,7 @@
import org.commonjava.indy.content.StoreContentAction;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
diff --git a/core/src/main/java/org/commonjava/indy/core/change/StoreEnablementManager.java b/core/src/main/java/org/commonjava/indy/core/change/StoreEnablementManager.java
index b445800f26..46c53264a0 100644
--- a/core/src/main/java/org/commonjava/indy/core/change/StoreEnablementManager.java
+++ b/core/src/main/java/org/commonjava/indy/core/change/StoreEnablementManager.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.core.change;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.audit.ChangeSummary;
import org.commonjava.indy.change.event.ArtifactStoreEnablementEvent;
import org.commonjava.indy.change.event.ArtifactStorePostUpdateEvent;
@@ -27,7 +27,7 @@
import org.commonjava.indy.core.expire.SchedulerTriggerEvent;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.model.core.io.IndyObjectMapper;
diff --git a/core/src/main/java/org/commonjava/indy/core/conf/IndyDurableStateConfig.java b/core/src/main/java/org/commonjava/indy/core/conf/IndyDurableStateConfig.java
new file mode 100644
index 0000000000..f6f025fed3
--- /dev/null
+++ b/core/src/main/java/org/commonjava/indy/core/conf/IndyDurableStateConfig.java
@@ -0,0 +1,116 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.core.conf;
+
+import org.commonjava.indy.conf.IndyConfigInfo;
+import org.commonjava.propulsor.config.annotation.SectionName;
+import org.commonjava.propulsor.config.section.MapSectionListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.enterprise.context.ApplicationScoped;
+import java.io.InputStream;
+
+@ApplicationScoped
+@SectionName(IndyDurableStateConfig.SECTION_NAME)
+public class IndyDurableStateConfig
+ extends MapSectionListener
+ implements IndyConfigInfo
+{
+
+ public static final String SECTION_NAME = "durable-state";
+
+ public static final String STORAGE_INFINISPAN = "infinispan";
+
+ public static final String STORAGE_CASSANDRA = "cassandra";
+
+ private String foloStorage;
+
+ private String storeStorage;
+
+ private String scheduleStorage;
+
+ public String getFoloStorage()
+ {
+ return foloStorage;
+ }
+
+ public void setFoloStorage( String foloStorage )
+ {
+ this.foloStorage = foloStorage;
+ }
+
+ public String getStoreStorage()
+ {
+ return storeStorage;
+ }
+
+ public void setStoreStorage( String storeStorage )
+ {
+ this.storeStorage = storeStorage;
+ }
+
+ public String getScheduleStorage()
+ {
+ return scheduleStorage;
+ }
+
+ public void setScheduleStorage( String scheduleStorage )
+ {
+ this.scheduleStorage = scheduleStorage;
+ }
+
+ @Override
+ public void parameter(String name, String value)
+ {
+ Logger logger = LoggerFactory.getLogger( getClass() );
+ logger.trace( "Got durable-state config parameter: '{}' with value: '{}'", name, value );
+ switch ( name )
+ {
+ case "folo.storage":
+ {
+ this.foloStorage = value;
+ break;
+ }
+ case "store.storage":
+ {
+ this.storeStorage = value;
+ break;
+ }
+ case "schedule.storage":
+ {
+ this.scheduleStorage = value;
+ break;
+ }
+ default: break;
+ }
+
+ }
+
+ @Override
+ public String getDefaultConfigFileName()
+ {
+ return "conf.d/durable-state.conf";
+ }
+
+ @Override
+ public InputStream getDefaultConfig()
+ {
+ return Thread.currentThread()
+ .getContextClassLoader()
+ .getResourceAsStream( "default-durable-state.conf" );
+ }
+}
diff --git a/core/src/main/java/org/commonjava/indy/core/conf/IndyWeftConfig.java b/core/src/main/java/org/commonjava/indy/core/conf/IndyWeftConfig.java
index 73e93ff473..77d36967e8 100644
--- a/core/src/main/java/org/commonjava/indy/core/conf/IndyWeftConfig.java
+++ b/core/src/main/java/org/commonjava/indy/core/conf/IndyWeftConfig.java
@@ -18,6 +18,7 @@
import org.commonjava.cdi.util.weft.config.DefaultWeftConfig;
import org.commonjava.indy.conf.IndyConfigInfo;
import org.commonjava.indy.inject.Production;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.propulsor.config.ConfigurationException;
import org.commonjava.propulsor.config.annotation.SectionName;
import org.commonjava.propulsor.config.section.MapSectionListener;
@@ -27,8 +28,6 @@
import javax.enterprise.inject.Produces;
import java.io.InputStream;
-import static org.commonjava.indy.metrics.conf.IndyMetricsConfig.INDY_METRICS_NODE_PREFIX;
-
@ApplicationScoped
@SectionName( IndyWeftConfig.SECTION_NAME )
public class IndyWeftConfig
@@ -46,7 +45,7 @@ public class IndyWeftConfig
public static final String ENABLED = "enabled";
- public static final String NODE_PREFIX = INDY_METRICS_NODE_PREFIX;
+ public static final String NODE_PREFIX = IndyMetricsConfig.NODE_PREFIX;
public static final String THREADS_SUFFIX = ".threads";
diff --git a/core/src/main/java/org/commonjava/indy/core/content/AbstractMergedContentGenerator.java b/core/src/main/java/org/commonjava/indy/core/content/AbstractMergedContentGenerator.java
index 9adcd7e868..bc5483f64c 100644
--- a/core/src/main/java/org/commonjava/indy/core/content/AbstractMergedContentGenerator.java
+++ b/core/src/main/java/org/commonjava/indy/core/content/AbstractMergedContentGenerator.java
@@ -17,7 +17,6 @@
import java.io.IOException;
import java.util.Arrays;
-import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Stream;
@@ -34,7 +33,7 @@
import org.commonjava.indy.core.content.group.GroupMergeHelper;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreType;
diff --git a/core/src/main/java/org/commonjava/indy/core/content/ContentGeneratorManager.java b/core/src/main/java/org/commonjava/indy/core/content/ContentGeneratorManager.java
index ad7de7efb2..2df400ae62 100644
--- a/core/src/main/java/org/commonjava/indy/core/content/ContentGeneratorManager.java
+++ b/core/src/main/java/org/commonjava/indy/core/content/ContentGeneratorManager.java
@@ -18,7 +18,7 @@
import org.commonjava.indy.IndyWorkflowException;
import org.commonjava.indy.content.ContentGenerator;
import org.commonjava.indy.content.StoreResource;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.util.LocationUtils;
diff --git a/core/src/main/java/org/commonjava/indy/core/content/DefaultContentManager.java b/core/src/main/java/org/commonjava/indy/core/content/DefaultContentManager.java
index 4c19aec9d9..dc0a3ac377 100644
--- a/core/src/main/java/org/commonjava/indy/core/content/DefaultContentManager.java
+++ b/core/src/main/java/org/commonjava/indy/core/content/DefaultContentManager.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.IndyWorkflowException;
import org.commonjava.indy.conf.IndyConfiguration;
import org.commonjava.indy.content.ContentDigester;
@@ -26,7 +26,7 @@
import org.commonjava.indy.core.content.group.GroupRepositoryFilterManager;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
diff --git a/core/src/main/java/org/commonjava/indy/core/content/DefaultDirectContentAccess.java b/core/src/main/java/org/commonjava/indy/core/content/DefaultDirectContentAccess.java
index 8cd3df0a85..2a8e91d869 100644
--- a/core/src/main/java/org/commonjava/indy/core/content/DefaultDirectContentAccess.java
+++ b/core/src/main/java/org/commonjava/indy/core/content/DefaultDirectContentAccess.java
@@ -23,7 +23,7 @@
import org.commonjava.indy.content.DirectContentAccess;
import org.commonjava.indy.content.DownloadManager;
import org.commonjava.indy.content.StoreResource;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.maven.galley.event.EventMetadata;
diff --git a/core/src/main/java/org/commonjava/indy/core/content/DefaultDownloadManager.java b/core/src/main/java/org/commonjava/indy/core/content/DefaultDownloadManager.java
index fb24f8c620..069b17174a 100644
--- a/core/src/main/java/org/commonjava/indy/core/content/DefaultDownloadManager.java
+++ b/core/src/main/java/org/commonjava/indy/core/content/DefaultDownloadManager.java
@@ -28,9 +28,7 @@
import org.commonjava.indy.core.change.event.IndyFileEventManager;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.measure.annotation.MetricNamed;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.HostedRepository;
import org.commonjava.indy.model.core.RemoteRepository;
diff --git a/core/src/main/java/org/commonjava/indy/core/content/group/GroupRepositoryFilterManager.java b/core/src/main/java/org/commonjava/indy/core/content/group/GroupRepositoryFilterManager.java
index 7376ffc961..9a9010a2d9 100644
--- a/core/src/main/java/org/commonjava/indy/core/content/group/GroupRepositoryFilterManager.java
+++ b/core/src/main/java/org/commonjava/indy/core/content/group/GroupRepositoryFilterManager.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.core.content.group;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.conf.IndyConfiguration;
import org.commonjava.indy.content.GroupRepositoryFilter;
import org.commonjava.indy.model.core.ArtifactStore;
diff --git a/core/src/main/java/org/commonjava/indy/core/ctl/ContentController.java b/core/src/main/java/org/commonjava/indy/core/ctl/ContentController.java
index e401b200d6..889b9e656e 100644
--- a/core/src/main/java/org/commonjava/indy/core/ctl/ContentController.java
+++ b/core/src/main/java/org/commonjava/indy/core/ctl/ContentController.java
@@ -23,7 +23,7 @@
import org.commonjava.indy.content.StoreResource;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.model.core.StoreType;
diff --git a/core/src/main/java/org/commonjava/indy/core/ctl/IspnCacheController.java b/core/src/main/java/org/commonjava/indy/core/ctl/IspnCacheController.java
index cd1d33461b..374f830420 100644
--- a/core/src/main/java/org/commonjava/indy/core/ctl/IspnCacheController.java
+++ b/core/src/main/java/org/commonjava/indy/core/ctl/IspnCacheController.java
@@ -31,7 +31,7 @@
import java.util.HashMap;
import java.util.Map;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
@ApplicationScoped
public class IspnCacheController
diff --git a/core/src/main/java/org/commonjava/indy/core/ctl/SchedulerController.java b/core/src/main/java/org/commonjava/indy/core/ctl/SchedulerController.java
index b5478b8588..244eea5f4d 100644
--- a/core/src/main/java/org/commonjava/indy/core/ctl/SchedulerController.java
+++ b/core/src/main/java/org/commonjava/indy/core/ctl/SchedulerController.java
@@ -20,17 +20,22 @@
import org.commonjava.indy.core.expire.Expiration;
import org.commonjava.indy.core.expire.ExpirationSet;
import org.commonjava.indy.core.expire.ScheduleManager;
+import org.commonjava.indy.core.expire.ScheduleValue;
import org.commonjava.indy.core.expire.StoreKeyMatcher;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.StoreKey;
import org.infinispan.commons.api.BasicCache;
+import org.infinispan.query.Search;
+import org.infinispan.query.dsl.Query;
+import org.infinispan.query.dsl.QueryFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
+import java.util.List;
import java.util.stream.Collectors;
@ApplicationScoped
@@ -85,11 +90,16 @@ public ExpirationSet getDisabledStores()
// This key matcher will compare with the cache key group to see if the group ends with the "Disable-Timeout"(jobtype)
ExpirationSet expirations = scheduleManager.findMatchingExpirations(
- cacheHandle -> cacheHandle.execute( BasicCache::keySet )
- .stream()
- .filter( key -> key.getType()
- .equals( StoreEnablementManager.DISABLE_TIMEOUT ) )
- .collect( Collectors.toSet() ) );
+ cacheHandle -> {
+ QueryFactory queryFactory = Search.getQueryFactory( cacheHandle.getCache() );
+ Query q = queryFactory.from( ScheduleValue.class ).having( "key.type" ).eq( StoreEnablementManager.DISABLE_TIMEOUT ).build();
+ List list = q.list();
+ return list.stream().map( ScheduleValue::getKey ).collect( Collectors.toSet());
+// cacheHandle.execute( BasicCache::keySet )
+// .stream()
+// .filter( key -> key.getType().equals( StoreEnablementManager.DISABLE_TIMEOUT ) )
+// .collect( Collectors.toSet() );
+ } );
// TODO: This seems REALLY inefficient...
diff --git a/core/src/main/java/org/commonjava/indy/core/expire/InfinispanScheduleExpirationMigrationAction.java b/core/src/main/java/org/commonjava/indy/core/expire/InfinispanScheduleExpirationMigrationAction.java
new file mode 100644
index 0000000000..a9b2b323d1
--- /dev/null
+++ b/core/src/main/java/org/commonjava/indy/core/expire/InfinispanScheduleExpirationMigrationAction.java
@@ -0,0 +1,98 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.core.expire;
+
+import org.commonjava.indy.action.MigrationAction;
+import org.commonjava.indy.audit.ChangeSummary;
+import org.commonjava.indy.model.core.io.IndyObjectMapper;
+import org.commonjava.indy.subsys.datafile.DataFileManager;
+import org.commonjava.indy.subsys.infinispan.CacheHandle;
+import org.commonjava.indy.subsys.infinispan.CacheProducer;
+import org.infinispan.manager.EmbeddedCacheManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+@Named( "infinispan-schedule-expiration-migration" )
+public class InfinispanScheduleExpirationMigrationAction
+ implements MigrationAction
+{
+ private final Logger logger = LoggerFactory.getLogger( getClass() );
+
+ private static final String SCHEDULE_CACHE_V1 = "schedule-expire-cache";
+
+ @Inject
+ private DataFileManager dataFileManager;
+
+ @Inject
+ private CacheProducer cacheProducer;
+
+ @Inject
+ private CacheHandle scheduleCacheV2;
+
+ @Inject
+ private IndyObjectMapper objectMapper;
+
+ protected InfinispanScheduleExpirationMigrationAction()
+ {
+ }
+
+ @Override
+ public boolean migrate()
+ {
+ final Set result = Collections.synchronizedSet( new HashSet<>() );
+ if ( cacheProducer != null )
+ {
+ EmbeddedCacheManager cacheManager = cacheProducer.getCacheManager();
+ if ( cacheManager.cacheExists( SCHEDULE_CACHE_V1 ) )
+ {
+ logger.info( "Migrating from legacy schedule expiration cache: {}", SCHEDULE_CACHE_V1 );
+ cacheProducer.getCache( SCHEDULE_CACHE_V1 ).executeCache( c -> {
+ c.forEach( ( key, value ) -> {
+ if ( key instanceof ScheduleKey && value instanceof Map )
+ {
+ logger.info( "Migrating from legacy cache: {}", key );
+ scheduleCacheV2.put( (ScheduleKey) key,
+ new ScheduleValue( (ScheduleKey) key, (Map) value ) );
+ result.add( (ScheduleKey) key );
+ }
+ } );
+ c.clearAsync();
+ return null;
+ } );
+ }
+ }
+ return !result.isEmpty();
+ }
+
+ @Override
+ public int getMigrationPriority()
+ {
+ return 99;
+ }
+
+ @Override
+ public String getId()
+ {
+ return "Legacy ISPN schedule-expiration cache data migrator";
+ }
+}
diff --git a/core/src/main/java/org/commonjava/indy/core/expire/ScheduleKey.java b/core/src/main/java/org/commonjava/indy/core/expire/ScheduleKey.java
index 0ad60aa13a..64651eb4b1 100644
--- a/core/src/main/java/org/commonjava/indy/core/expire/ScheduleKey.java
+++ b/core/src/main/java/org/commonjava/indy/core/expire/ScheduleKey.java
@@ -17,6 +17,10 @@
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.model.core.StoreType;
+import org.hibernate.search.annotations.Analyze;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Index;
+import org.hibernate.search.annotations.Indexed;
import java.io.Externalizable;
import java.io.IOException;
@@ -25,14 +29,21 @@
import java.io.Serializable;
import java.util.Objects;
+@Indexed
public class ScheduleKey implements Externalizable, Serializable
{
+ @Field( index = Index.YES, analyze = Analyze.NO )
private StoreKey storeKey;
+ @Field( index = Index.YES, analyze = Analyze.NO )
private String type;
+ @Field( index = Index.YES, analyze = Analyze.NO )
private String name;
+ @Field( index = Index.YES, analyze = Analyze.NO )
+ private String groupName;
+
public ScheduleKey()
{
}
@@ -42,6 +53,7 @@ public ScheduleKey( final StoreKey storeKey, final String type, final String nam
this.storeKey = storeKey;
this.type = type;
this.name = name;
+ this.groupName = ScheduleManager.groupName( this.storeKey, this.type );
}
public StoreKey getStoreKey()
@@ -59,9 +71,9 @@ public String getName()
return name;
}
- public String groupName()
+ public String getGroupName()
{
- return ScheduleManager.groupName( this.storeKey, this.type );
+ return groupName;
}
public static ScheduleKey fromGroupWithName( final String group, final String name )
@@ -134,5 +146,7 @@ public void readExternal( ObjectInput in )
final String nameStr = (String) in.readObject();
name = "".equals( nameStr ) ? null : nameStr;
+
+ groupName = ScheduleManager.groupName( storeKey, type );
}
}
diff --git a/core/src/main/java/org/commonjava/indy/core/expire/ScheduleManager.java b/core/src/main/java/org/commonjava/indy/core/expire/ScheduleManager.java
index ddf6da34a5..61433398c9 100644
--- a/core/src/main/java/org/commonjava/indy/core/expire/ScheduleManager.java
+++ b/core/src/main/java/org/commonjava/indy/core/expire/ScheduleManager.java
@@ -126,10 +126,11 @@ public class ScheduleManager
@Inject
@ScheduleCache
- private CacheHandle scheduleCache;
+ private CacheHandle scheduleCache;
@Inject
@ScheduleEventLockCache
+ @Deprecated
private CacheHandle scheduleEventLockCache;
@Inject
@@ -185,7 +186,7 @@ public void rescheduleSnapshotTimeouts( final HostedRepository deploy )
for ( final ScheduleKey key : canceled )
{
final String path = key.getName();
- final StoreKey sk = storeKeyFrom( key.groupName() );
+ final StoreKey sk = storeKeyFrom( key.getGroupName() );
scheduleContentExpiration( sk, path, timeout );
}
@@ -218,7 +219,7 @@ else if ( repo.isPassthrough() )
for ( final ScheduleKey key : canceled )
{
final String path = key.getName();
- final StoreKey sk = storeKeyFrom( key.groupName() );
+ final StoreKey sk = storeKeyFrom( key.getGroupName() );
scheduleContentExpiration( sk, path, timeout );
}
@@ -286,8 +287,7 @@ public void setProxyTimeouts( final StoreKey key, final String path )
{
// logger.info( "[PROXY TIMEOUT SET] {}/{}; {}", repo.getKey(), path, new Date( System.currentTimeMillis()
// + timeout ) );
- cancel( new StoreKeyMatcher( key, CONTENT_JOB_TYPE ), path );
-
+ removeCache( new ScheduleKey( key, CONTENT_JOB_TYPE, path ) );
scheduleContentExpiration( key, path, timeout );
}
}
@@ -317,7 +317,7 @@ public void scheduleForStore( final StoreKey key, final String jobType, final St
final ScheduleKey cacheKey = new ScheduleKey( key, jobType, jobName );
- scheduleCache.execute( cache -> cache.put( cacheKey, dataMap, startSeconds, TimeUnit.SECONDS ) );
+ scheduleCache.execute( cache -> cache.put( cacheKey, new ScheduleValue( cacheKey, dataMap ), startSeconds, TimeUnit.SECONDS ) );
logger.debug( "Scheduled for the key {} with timeout: {} seconds", cacheKey, startSeconds );
}
@@ -586,19 +586,20 @@ public ExpirationSet findMatchingExpirations( final CacheKeyMatcher
private Expiration toExpiration( final ScheduleKey cacheKey )
{
- return new Expiration( cacheKey.groupName(), cacheKey.getName(), getNextExpireTime( cacheKey ) );
+ return new Expiration( cacheKey.getGroupName(), cacheKey.getName(), getNextExpireTime( cacheKey ) );
}
private Date getNextExpireTime( final ScheduleKey cacheKey )
{
return scheduleCache.executeCache( cache -> {
- final CacheEntry entry = cache.getAdvancedCache().getCacheEntry( cacheKey );
+ final CacheEntry entry =
+ cache.getAdvancedCache().getCacheEntry( cacheKey );
if ( entry != null )
{
final Metadata metadata = entry.getMetadata();
long expire = metadata.lifespan();
- final long startTimeInMillis = (Long)scheduleCache.get( cacheKey ).get( SCHEDULE_TIME );
+ final long startTimeInMillis = (Long)scheduleCache.get( cacheKey ).getDataPayload().get( SCHEDULE_TIME );
return calculateNextExpireTime( expire, startTimeInMillis );
}
return null;
@@ -708,14 +709,11 @@ public void stop()
private void removeCache( final ScheduleKey cacheKey )
{
- if ( scheduleCache.containsKey( cacheKey ) )
- {
- scheduleCache.remove( cacheKey );
- }
+ scheduleCache.remove( cacheKey );
}
@CacheEntryCreated
- public void scheduled( final CacheEntryCreatedEvent e )
+ public void scheduled( final CacheEntryCreatedEvent e )
{
if ( e == null )
{
@@ -726,7 +724,13 @@ public void scheduled( final CacheEntryCreatedEvent e )
if ( !e.isPre() )
{
final ScheduleKey expiredKey = e.getKey();
- final Map expiredContent = e.getValue();
+ final ScheduleValue value = e.getValue();
+ if ( value == null )
+ {
+ logger.warn( "The cache value for ISPN creation event of schedule expiration is null, key is {} .", expiredKey );
+ return;
+ }
+ final Map expiredContent = value.getDataPayload();
if ( expiredKey != null && expiredContent != null )
{
logger.debug( "Expiration Created: {}", expiredKey );
@@ -738,7 +742,7 @@ public void scheduled( final CacheEntryCreatedEvent e )
}
@CacheEntryExpired
- public void expired( CacheEntryExpiredEvent e )
+ public void expired( CacheEntryExpiredEvent e )
{
if ( e == null )
{
@@ -749,15 +753,13 @@ public void expired( CacheEntryExpiredEvent e )
if ( !e.isPre() )
{
final ScheduleKey expiredKey = e.getKey();
-/*
- if ( scheduleEventLockCache.containsKey( expiredKey ) )
+ final ScheduleValue value = e.getValue();
+ if ( value == null )
{
- logger.info( "Another instance {} is still handling expiration event for {}", expiredKey,
- scheduleEventLockCache.containsKey( expiredKey ) );
+ logger.warn( "The cache value for ISPN expired event of schedule expiration is null, key is {} .", expiredKey );
return;
}
-*/
- final Map expiredContent = e.getValue();
+ final Map expiredContent = value.getDataPayload();
if ( expiredKey != null && expiredContent != null )
{
logger.debug( "EXPIRED: {}", expiredKey );
@@ -790,7 +792,7 @@ public void expired( CacheEntryExpiredEvent e )
}
@CacheEntryRemoved
- public void cancelled( CacheEntryRemovedEvent e )
+ public void cancelled( CacheEntryRemovedEvent e )
{
if ( e == null )
{
diff --git a/core/src/main/java/org/commonjava/indy/core/expire/ScheduleValue.java b/core/src/main/java/org/commonjava/indy/core/expire/ScheduleValue.java
new file mode 100644
index 0000000000..59981cc89c
--- /dev/null
+++ b/core/src/main/java/org/commonjava/indy/core/expire/ScheduleValue.java
@@ -0,0 +1,84 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.core.expire;
+
+import org.hibernate.search.annotations.Analyze;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Index;
+import org.hibernate.search.annotations.Indexed;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Map;
+
+@Indexed
+public class ScheduleValue
+ implements Externalizable
+{
+ @Field( index = Index.YES, analyze = Analyze.NO )
+ private ScheduleKey key;
+
+ @Field( index = Index.NO, analyze = Analyze.NO )
+ private Map dataPayload;
+
+ public ScheduleValue()
+ {
+ }
+
+ public ScheduleValue( ScheduleKey key, Map dataPayload )
+ {
+ this.key = key;
+ this.dataPayload = dataPayload;
+ }
+
+ public ScheduleKey getKey()
+ {
+ return key;
+ }
+
+ public void setKey( ScheduleKey key )
+ {
+ this.key = key;
+ }
+
+ public Map getDataPayload()
+ {
+ return dataPayload;
+ }
+
+ public void setDataPayload( Map dataPayload )
+ {
+ this.dataPayload = dataPayload;
+ }
+
+ @Override
+ public void writeExternal( ObjectOutput out )
+ throws IOException
+ {
+ out.writeObject( key );
+ out.writeObject( dataPayload );
+ }
+
+ @Override
+ public void readExternal( ObjectInput in )
+ throws IOException, ClassNotFoundException
+ {
+ this.key = (ScheduleKey)in.readObject();
+ this.dataPayload = (Map)in.readObject();
+ }
+}
diff --git a/core/src/main/java/org/commonjava/indy/core/expire/StoreKeyMatcher.java b/core/src/main/java/org/commonjava/indy/core/expire/StoreKeyMatcher.java
index ebeb276d9b..cc67022a8b 100644
--- a/core/src/main/java/org/commonjava/indy/core/expire/StoreKeyMatcher.java
+++ b/core/src/main/java/org/commonjava/indy/core/expire/StoreKeyMatcher.java
@@ -18,8 +18,12 @@
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.subsys.infinispan.CacheHandle;
import org.commonjava.indy.subsys.infinispan.CacheKeyMatcher;
-import org.infinispan.commons.api.BasicCache;
+import org.infinispan.query.Search;
+import org.infinispan.query.dsl.Query;
+import org.infinispan.query.dsl.QueryFactory;
+import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -33,22 +37,23 @@ public class StoreKeyMatcher
//TODO: will have a thought to replace this type of matcher with a ISPN query API in the future to get better performance.
- private final StoreKey storeKey;
-
- private final String eventType;
+ private final String groupName;
public StoreKeyMatcher( final StoreKey key, final String eventType )
{
- this.storeKey = key;
- this.eventType = eventType;
+ this.groupName = ScheduleManager.groupName( key, eventType );
}
@Override
public Set matches( CacheHandle cacheHandle )
{
- return cacheHandle.execute( BasicCache::keySet )
- .stream()
- .filter( key -> key != null && key.exists() && key.groupName().equals( ScheduleManager.groupName( storeKey, eventType ) ) )
- .collect( Collectors.toSet() );
+ QueryFactory queryFactory = Search.getQueryFactory( cacheHandle.getCache() );
+ Query q = queryFactory.from( ScheduleValue.class ).having( "key.groupName" ).eq( groupName ).build();
+ List list = q.list();
+ return list.stream().map( ScheduleValue::getKey ).collect( Collectors.toSet());
+// return cacheHandle.execute( BasicCache::keySet )
+// .stream()
+// .filter( key -> key != null && key.exists() && key.groupName().equals( groupName ) )
+// .collect( Collectors.toSet() );
}
}
diff --git a/core/src/main/java/org/commonjava/indy/core/expire/cache/ScheduleCacheProducer.java b/core/src/main/java/org/commonjava/indy/core/expire/cache/ScheduleCacheProducer.java
index 8c4fa73369..a984078409 100644
--- a/core/src/main/java/org/commonjava/indy/core/expire/cache/ScheduleCacheProducer.java
+++ b/core/src/main/java/org/commonjava/indy/core/expire/cache/ScheduleCacheProducer.java
@@ -17,6 +17,7 @@
import org.commonjava.indy.cluster.IndyNode;
import org.commonjava.indy.core.expire.ScheduleKey;
+import org.commonjava.indy.core.expire.ScheduleValue;
import org.commonjava.indy.subsys.infinispan.CacheHandle;
import org.commonjava.indy.subsys.infinispan.CacheProducer;
import org.slf4j.Logger;
@@ -41,14 +42,14 @@ public class ScheduleCacheProducer
@Inject
private CacheProducer cacheProducer;
- private static final String SCHEDULE_EXPIRE = "schedule-expire-cache";
+ private static final String SCHEDULE_EXPIRE = "schedule-expire-cache-v2";
private static final String SCHEDULE_EVENT_LOCK = "schedule-event-lock-cache";
@ScheduleCache
@Produces
@ApplicationScoped
- public CacheHandle scheduleExpireCache()
+ public CacheHandle scheduleExpireCache()
{
return cacheProducer.getCache( SCHEDULE_EXPIRE );
}
diff --git a/core/src/main/java/org/commonjava/indy/core/inject/CassandraNotFoundCache.java b/core/src/main/java/org/commonjava/indy/core/inject/CassandraNotFoundCache.java
index 8292b03876..f8e8bad4c5 100644
--- a/core/src/main/java/org/commonjava/indy/core/inject/CassandraNotFoundCache.java
+++ b/core/src/main/java/org/commonjava/indy/core/inject/CassandraNotFoundCache.java
@@ -21,7 +21,7 @@
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import org.commonjava.indy.conf.IndyConfiguration;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.model.galley.KeyedLocation;
import org.commonjava.indy.subsys.cassandra.CassandraClient;
diff --git a/core/src/main/java/org/commonjava/indy/core/inject/IspnNotFoundCache.java b/core/src/main/java/org/commonjava/indy/core/inject/IspnNotFoundCache.java
index fcf3586568..b752743860 100644
--- a/core/src/main/java/org/commonjava/indy/core/inject/IspnNotFoundCache.java
+++ b/core/src/main/java/org/commonjava/indy/core/inject/IspnNotFoundCache.java
@@ -16,14 +16,12 @@
package org.commonjava.indy.core.inject;
import org.commonjava.indy.conf.IndyConfiguration;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.StoreKey;
import org.commonjava.indy.model.galley.KeyedLocation;
-import org.commonjava.indy.model.galley.RepositoryLocation;
import org.commonjava.indy.subsys.infinispan.CacheHandle;
import org.commonjava.maven.galley.model.ConcreteResource;
import org.commonjava.maven.galley.model.Location;
-import org.infinispan.Cache;
import org.infinispan.query.Search;
import org.infinispan.query.dsl.Expression;
import org.infinispan.query.dsl.Query;
@@ -34,7 +32,6 @@
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Alternative;
-import javax.enterprise.inject.Default;
import javax.inject.Inject;
import java.text.SimpleDateFormat;
import java.util.Date;
diff --git a/core/src/main/java/org/commonjava/indy/core/inject/NFCMetricsDecorator.java b/core/src/main/java/org/commonjava/indy/core/inject/NFCMetricsDecorator.java
index 7362ba1ef2..5d2d8a16e5 100644
--- a/core/src/main/java/org/commonjava/indy/core/inject/NFCMetricsDecorator.java
+++ b/core/src/main/java/org/commonjava/indy/core/inject/NFCMetricsDecorator.java
@@ -15,8 +15,7 @@
*/
package org.commonjava.indy.core.inject;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.measure.annotation.MetricNamed;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.maven.galley.model.ConcreteResource;
import org.commonjava.maven.galley.model.Location;
import org.commonjava.maven.galley.spi.nfc.NotFoundCache;
diff --git a/core/src/main/resources/default-durable-state.conf b/core/src/main/resources/default-durable-state.conf
new file mode 100644
index 0000000000..f9108b87b2
--- /dev/null
+++ b/core/src/main/resources/default-durable-state.conf
@@ -0,0 +1,4 @@
+[durable-state]
+folo.storage=infinispan
+store.storage=infinispan
+schedule.storage=infinispan
\ No newline at end of file
diff --git a/core/src/test/java/org/commonjava/indy/core/expire/ScheduleManagerTest.java b/core/src/test/java/org/commonjava/indy/core/expire/ScheduleManagerTest.java
index 81ff8f7e3f..520be482b3 100644
--- a/core/src/test/java/org/commonjava/indy/core/expire/ScheduleManagerTest.java
+++ b/core/src/test/java/org/commonjava/indy/core/expire/ScheduleManagerTest.java
@@ -52,7 +52,7 @@ public void testStoreKeyFrom()
{
StoreKey k = new StoreKey( "maven", StoreType.remote, "repo1" );
ScheduleKey key = new ScheduleKey(k, ScheduleManager.CONTENT_JOB_TYPE, "/abc");
- final StoreKey sk = ScheduleManager.storeKeyFrom( key.groupName() );
+ final StoreKey sk = ScheduleManager.storeKeyFrom( key.getGroupName() );
System.out.println(">>> " + sk);
assertNotNull( sk );
assertEquals( sk, k );
diff --git a/core/src/test/java/org/commonjava/indy/fixture/MockGalleyProvider.java b/core/src/test/java/org/commonjava/indy/fixture/MockTestProvider.java
similarity index 73%
rename from core/src/test/java/org/commonjava/indy/fixture/MockGalleyProvider.java
rename to core/src/test/java/org/commonjava/indy/fixture/MockTestProvider.java
index e7b290e9fd..074fd42d5c 100644
--- a/core/src/test/java/org/commonjava/indy/fixture/MockGalleyProvider.java
+++ b/core/src/test/java/org/commonjava/indy/fixture/MockTestProvider.java
@@ -16,22 +16,23 @@
package org.commonjava.indy.fixture;
import org.commonjava.atlas.maven.ident.ref.ProjectRef;
+import org.commonjava.cdi.util.weft.config.DefaultWeftConfig;
+import org.commonjava.cdi.util.weft.config.WeftConfig;
import org.commonjava.maven.galley.config.TransportManagerConfig;
import org.commonjava.maven.galley.maven.spi.defaults.MavenPluginDefaults;
import org.commonjava.maven.galley.maven.spi.defaults.MavenPluginImplications;
import org.commonjava.maven.galley.transport.htcli.conf.GlobalHttpConfiguration;
+import org.commonjava.o11yphant.honeycomb.config.HoneycombConfiguration;
+import org.commonjava.o11yphant.metrics.TrafficClassifier;
+import org.commonjava.o11yphant.metrics.sli.GoldenSignalsMetricSet;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Alternative;
import javax.enterprise.inject.Produces;
-//TODO: This provider is fully duplicated with org.commonjava.indy.test.fixture.core.MockGalleyProvider
-// in test/fixture-core for some dependency reasons in addons. Should be refactored in another
-// common test module in the future.
-
@ApplicationScoped
@Alternative
-public class MockGalleyProvider
+public class MockTestProvider
{
@Produces
public TransportManagerConfig getTransportManagerConfig()
@@ -76,4 +77,27 @@ public GlobalHttpConfiguration getGlobalHttpConfiguration()
return null;
}
+ @Produces
+ public WeftConfig getWeftConfig()
+ {
+ return new DefaultWeftConfig();
+ }
+
+ @Produces
+ public HoneycombConfiguration getHoneycombConfiguration()
+ {
+ return null;
+ }
+
+ @Produces
+ public GoldenSignalsMetricSet getGoldenSignalsMetricSet()
+ {
+ return null;
+ }
+
+ @Produces
+ public TrafficClassifier getTrafficClassifier()
+ {
+ return null;
+ }
}
diff --git a/core/src/test/resources/META-INF/beans.xml b/core/src/test/resources/META-INF/beans.xml
index 03820f5090..c291440c00 100644
--- a/core/src/test/resources/META-INF/beans.xml
+++ b/core/src/test/resources/META-INF/beans.xml
@@ -17,8 +17,7 @@
org.commonjava.indy.mem.data.MemoryStoreDataManager
- org.commonjava.indy.fixture.MockWeftProvider
- org.commonjava.indy.fixture.MockGalleyProvider
+ org.commonjava.indy.fixture.MockTestProvider
org.commonjava.indy.fixture.MockContentAdvisor
diff --git a/db/common/pom.xml b/db/common/pom.xml
index 15c49b51dd..b3bb863f15 100644
--- a/db/common/pom.xml
+++ b/db/common/pom.xml
@@ -22,7 +22,7 @@
org.commonjava.indy
indy-db
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-db-common
@@ -35,7 +35,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
+ indy-subsys-metrics
org.commonjava.indy
diff --git a/db/common/src/main/java/org/commonjava/indy/db/common/AbstractStoreDataManager.java b/db/common/src/main/java/org/commonjava/indy/db/common/AbstractStoreDataManager.java
index e6ec14fc0b..6195f4db1a 100644
--- a/db/common/src/main/java/org/commonjava/indy/db/common/AbstractStoreDataManager.java
+++ b/db/common/src/main/java/org/commonjava/indy/db/common/AbstractStoreDataManager.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.db.common;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.cdi.util.weft.ExecutorConfig;
import org.commonjava.cdi.util.weft.Locker;
import org.commonjava.cdi.util.weft.WeftManaged;
@@ -30,7 +30,7 @@
import org.commonjava.indy.data.StoreDataManager;
import org.commonjava.indy.data.StoreEventDispatcher;
import org.commonjava.indy.data.StoreValidator;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.HostedRepository;
@@ -61,7 +61,7 @@
import java.util.stream.Stream;
import static java.util.Collections.emptySet;
-import static org.apache.commons.lang.StringUtils.isBlank;
+import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.commonjava.indy.db.common.StoreUpdateAction.DELETE;
import static org.commonjava.indy.db.common.StoreUpdateAction.STORE;
diff --git a/db/common/src/main/java/org/commonjava/indy/db/common/DefaultArtifactStoreQuery.java b/db/common/src/main/java/org/commonjava/indy/db/common/DefaultArtifactStoreQuery.java
index 8542febcb6..8b71027130 100644
--- a/db/common/src/main/java/org/commonjava/indy/db/common/DefaultArtifactStoreQuery.java
+++ b/db/common/src/main/java/org/commonjava/indy/db/common/DefaultArtifactStoreQuery.java
@@ -19,7 +19,7 @@
import org.commonjava.indy.data.ArtifactStoreQuery;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.HostedRepository;
@@ -40,7 +40,6 @@
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
-import java.util.Objects;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Predicate;
diff --git a/db/flat/pom.xml b/db/flat/pom.xml
index 8e3eba17a5..ff81356bf3 100644
--- a/db/flat/pom.xml
+++ b/db/flat/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-db
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-db-flat
diff --git a/db/infinispan/pom.xml b/db/infinispan/pom.xml
index f74dfb0265..47ed770875 100644
--- a/db/infinispan/pom.xml
+++ b/db/infinispan/pom.xml
@@ -22,7 +22,7 @@
org.commonjava.indy
indy-db
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-db-infinispan
@@ -35,7 +35,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
+ indy-subsys-metrics
org.commonjava.indy
diff --git a/db/infinispan/src/main/java/org/commonjava/indy/infinispan/data/InfinispanStoreDataManager.java b/db/infinispan/src/main/java/org/commonjava/indy/infinispan/data/InfinispanStoreDataManager.java
index 5e116c3699..71c95ff435 100644
--- a/db/infinispan/src/main/java/org/commonjava/indy/infinispan/data/InfinispanStoreDataManager.java
+++ b/db/infinispan/src/main/java/org/commonjava/indy/infinispan/data/InfinispanStoreDataManager.java
@@ -20,7 +20,7 @@
import org.commonjava.indy.data.StoreEventDispatcher;
import org.commonjava.indy.db.common.AbstractStoreDataManager;
import org.commonjava.indy.db.common.StoreUpdateAction;
-import org.commonjava.indy.measure.annotation.Measure;
+import org.commonjava.o11yphant.metrics.annotation.Measure;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
diff --git a/db/memory/pom.xml b/db/memory/pom.xml
index d6da54f697..6754a54b1b 100644
--- a/db/memory/pom.xml
+++ b/db/memory/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-db
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-db-memory
@@ -34,7 +34,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
+ indy-subsys-metrics
org.commonjava.indy
diff --git a/db/memory/src/test/java/org/commonjava/indy/infinispan/data/fixture/ThreadDumper.java b/db/memory/src/test/java/org/commonjava/indy/infinispan/data/fixture/ThreadDumper.java
index 4b824d7dbd..3d680f6f6f 100644
--- a/db/memory/src/test/java/org/commonjava/indy/infinispan/data/fixture/ThreadDumper.java
+++ b/db/memory/src/test/java/org/commonjava/indy/infinispan/data/fixture/ThreadDumper.java
@@ -31,7 +31,7 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.join;
/**
* Created by jdcasey on 11/28/16.
diff --git a/db/metrics/pom.xml b/db/metrics/pom.xml
index 0d40130ed0..8dfbb93376 100644
--- a/db/metrics/pom.xml
+++ b/db/metrics/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-db
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-db-metrics
@@ -34,11 +34,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
-
-
- org.commonjava.indy
- indy-subsys-metrics-reporter
+ indy-subsys-metrics
org.commonjava.indy
diff --git a/db/metrics/src/main/java/org/commonjava/indy/db/metered/MeasuringArtifactStoreQueryInterceptor.java b/db/metrics/src/main/java/org/commonjava/indy/db/metered/MeasuringArtifactStoreQueryInterceptor.java
index 3dc3d45451..0320c3e695 100644
--- a/db/metrics/src/main/java/org/commonjava/indy/db/metered/MeasuringArtifactStoreQueryInterceptor.java
+++ b/db/metrics/src/main/java/org/commonjava/indy/db/metered/MeasuringArtifactStoreQueryInterceptor.java
@@ -17,7 +17,7 @@
import org.commonjava.indy.data.ArtifactStoreQuery;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.commonjava.indy.model.core.ArtifactStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,7 +35,7 @@ public abstract class MeasuringArtifactStoreQueryInterceptor
private StoreDataManager dataManager;
@Inject
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
@Override
public ArtifactStoreQuery query()
diff --git a/db/metrics/src/main/java/org/commonjava/indy/db/metered/MeasuringStoreQuery.java b/db/metrics/src/main/java/org/commonjava/indy/db/metered/MeasuringStoreQuery.java
index 21aec1f234..e808b709ae 100644
--- a/db/metrics/src/main/java/org/commonjava/indy/db/metered/MeasuringStoreQuery.java
+++ b/db/metrics/src/main/java/org/commonjava/indy/db/metered/MeasuringStoreQuery.java
@@ -18,7 +18,7 @@
import org.commonjava.indy.data.ArtifactStoreQuery;
import org.commonjava.indy.data.IndyDataException;
import org.commonjava.indy.data.StoreDataManager;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.commonjava.indy.model.core.ArtifactStore;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.HostedRepository;
@@ -28,7 +28,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.rmi.Remote;
import java.util.Collection;
import java.util.List;
import java.util.Set;
@@ -41,11 +40,11 @@ public class MeasuringStoreQuery
{
private final ArtifactStoreQuery query;
- private final IndyMetricsManager metricsManager;
+ private final DefaultMetricsManager metricsManager;
private final Logger logger = LoggerFactory.getLogger( getClass() );
- public MeasuringStoreQuery( final ArtifactStoreQuery query, final IndyMetricsManager metricsManager )
+ public MeasuringStoreQuery( final ArtifactStoreQuery query, final DefaultMetricsManager metricsManager )
{
this.query = query;
this.metricsManager = metricsManager;
diff --git a/db/pom.xml b/db/pom.xml
index 3093c04b54..f0bd26269e 100644
--- a/db/pom.xml
+++ b/db/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-db
diff --git a/deployments/cache-migrator/src/main/java/org/commonjava/indy/tools/cache/Main.java b/deployments/cache-migrator/src/main/java/org/commonjava/indy/tools/cache/Main.java
index 652bf40fc0..1107519ca6 100644
--- a/deployments/cache-migrator/src/main/java/org/commonjava/indy/tools/cache/Main.java
+++ b/deployments/cache-migrator/src/main/java/org/commonjava/indy/tools/cache/Main.java
@@ -17,6 +17,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
+import com.google.common.collect.Iterables;
import org.apache.commons.io.FileUtils;
import org.commonjava.indy.action.IndyLifecycleException;
import org.commonjava.indy.folo.model.TrackedContent;
@@ -29,19 +30,29 @@
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.InvocationTargetException;
+import java.util.HashSet;
+import java.util.List;
import java.util.Properties;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+import static org.apache.commons.io.IOUtils.copy;
+import static org.commonjava.indy.folo.ctl.FoloConstants.TRACKING_TYPE.SEALED;
import static org.commonjava.propulsor.boot.BootStatus.ERR_INIT;
import static org.commonjava.propulsor.boot.BootStatus.ERR_PARSE_ARGS;
@@ -139,10 +150,14 @@ private int run( final MigrationOptions options )
{
dumpJsonFile( cache, options );
}
- else
+ else if ( DataType.object == options.getDataType() )
{
dumpObjectFile( cache, options );
}
+ else
+ {
+ dumpZipFiles( cache, options );
+ }
}
else
@@ -370,4 +385,81 @@ private void dumpJsonFile( CacheHandle
org.commonjava.indy
- indy-subsys-metrics-reporter
+ indy-subsys-metrics
tar.gz
confset
diff --git a/deployments/launcher/src/main/resources/META-INF/beans.xml b/deployments/launcher/src/main/resources/META-INF/beans.xml
index ebcc6424b1..5d683b1534 100644
--- a/deployments/launcher/src/main/resources/META-INF/beans.xml
+++ b/deployments/launcher/src/main/resources/META-INF/beans.xml
@@ -1,13 +1,20 @@
org.commonjava.indy.bind.jaxrs.util.RestInterceptor
- org.commonjava.indy.metrics.jaxrs.interceptor.MetricsInterceptor
- org.commonjava.indy.subsys.honeycomb.interceptor.HoneycombMeasureInterceptor
- org.commonjava.indy.subsys.honeycomb.interceptor.HoneycombWrapperInterceptor
- org.commonjava.indy.subsys.honeycomb.interceptor.HoneycombWrapperStartInterceptor
- org.commonjava.indy.subsys.honeycomb.interceptor.HoneycombWrapperEndInterceptor
+ org.commonjava.o11yphant.metrics.interceptor.DefaultMetricsInterceptor
+ org.commonjava.o11yphant.honeycomb.interceptor.flat.FlatHoneycombMeasureInterceptor
+ org.commonjava.o11yphant.honeycomb.interceptor.flat.FlatHoneycombWrapperInterceptor
+ org.commonjava.o11yphant.honeycomb.interceptor.flat.FlatHoneycombWrapperStartInterceptor
+ org.commonjava.o11yphant.honeycomb.interceptor.flat.FlatHoneycombWrapperEndInterceptor
diff --git a/deployments/pom.xml b/deployments/pom.xml
index 8b2637de94..9fcc2b5c18 100644
--- a/deployments/pom.xml
+++ b/deployments/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-deployments
diff --git a/deployments/standalone/launcher/pom.xml b/deployments/standalone/launcher/pom.xml
index 96c59fb858..a8279698cf 100644
--- a/deployments/standalone/launcher/pom.xml
+++ b/deployments/standalone/launcher/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-standalone
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-standalone-launcher
diff --git a/deployments/standalone/launcher/src/main/resources/META-INF/beans.xml b/deployments/standalone/launcher/src/main/resources/META-INF/beans.xml
index 01fdda1bdb..b51be215ce 100644
--- a/deployments/standalone/launcher/src/main/resources/META-INF/beans.xml
+++ b/deployments/standalone/launcher/src/main/resources/META-INF/beans.xml
@@ -30,11 +30,11 @@
org.commonjava.indy.bind.jaxrs.util.RestInterceptor
- org.commonjava.indy.metrics.jaxrs.interceptor.MetricsInterceptor
- org.commonjava.indy.subsys.honeycomb.interceptor.HoneycombMeasureInterceptor
- org.commonjava.indy.subsys.honeycomb.interceptor.HoneycombWrapperInterceptor
- org.commonjava.indy.subsys.honeycomb.interceptor.HoneycombWrapperStartInterceptor
- org.commonjava.indy.subsys.honeycomb.interceptor.HoneycombWrapperEndInterceptor
+ org.commonjava.indy.subsys.metrics.jaxrs.interceptor.MetricsInterceptor
+ org.commonjava.o11yphant.honeycomb.interceptor.HoneycombMeasureInterceptor
+ org.commonjava.o11yphant.honeycomb.interceptor.HoneycombWrapperInterceptor
+ org.commonjava.o11yphant.honeycomb.interceptor.HoneycombWrapperStartInterceptor
+ org.commonjava.o11yphant.honeycomb.interceptor.HoneycombWrapperEndInterceptor
diff --git a/deployments/standalone/pom.xml b/deployments/standalone/pom.xml
index 2afd7a40cd..5b166c0e61 100644
--- a/deployments/standalone/pom.xml
+++ b/deployments/standalone/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-deployments
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-standalone
diff --git a/embedder-tests/pom.xml b/embedder-tests/pom.xml
index 4ec570f6dd..d804133374 100644
--- a/embedder-tests/pom.xml
+++ b/embedder-tests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.3.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy.embed.test
diff --git a/embedder-tests/sonar-report/pom.xml b/embedder-tests/sonar-report/pom.xml
index e387fb32d6..cb3e14016c 100644
--- a/embedder-tests/sonar-report/pom.xml
+++ b/embedder-tests/sonar-report/pom.xml
@@ -22,7 +22,7 @@
indy-embedder-tests
org.commonjava.indy.embed.test
- 2.3.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
4.0.0
@@ -63,11 +63,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
-
-
- org.commonjava.indy
- indy-subsys-metrics-reporter
+ indy-subsys-metrics
org.commonjava.indy
diff --git a/embedder/pom.xml b/embedder/pom.xml
index bbe429bc1a..e1f35c0742 100644
--- a/embedder/pom.xml
+++ b/embedder/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy.embed
@@ -60,15 +60,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
-
-
- org.commonjava.indy
- indy-subsys-metrics-reporter
-
-
- org.commonjava.indy
- indy-subsys-metrics-prometheus
+ indy-subsys-metrics
org.commonjava.indy
@@ -231,6 +223,11 @@
indy-repo-proxy-jaxrs
+
+ org.commonjava.util
+ o11yphant-metrics-core
+
+
org.commonjava.atlas
atlas-identities
@@ -320,10 +317,6 @@
indy-ftests-pkg-npm
test
-
- org.commonjava.indy
- indy-ftests-metrics
-
org.commonjava.indy
@@ -464,7 +457,6 @@
org.commonjava.indy:indy-ftests-promote
org.commonjava.indy:indy-ftests-diagnostics
org.commonjava.indy:indy-ftests-pkg-maven
- org.commonjava.indy:indy-ftests-metrics
org.commonjava.indy:indy-ftests-pkg-npm
org.commonjava.indy:indy-ftests-hosted-by-archive
org.commonjava.indy:indy-ftests-content-browse
diff --git a/embedder/src/it/resources/logback.xml b/embedder/src/it/resources/logback.xml
index 13762be955..d23658d6a4 100644
--- a/embedder/src/it/resources/logback.xml
+++ b/embedder/src/it/resources/logback.xml
@@ -36,7 +36,7 @@
-
+
diff --git a/embedder/src/main/resources/META-INF/beans.xml b/embedder/src/main/resources/META-INF/beans.xml
index 70cbad914b..00f9dbec70 100644
--- a/embedder/src/main/resources/META-INF/beans.xml
+++ b/embedder/src/main/resources/META-INF/beans.xml
@@ -1,7 +1,7 @@
diff --git a/embedder/src/test/resources/META-INF/beans.xml b/embedder/src/test/resources/META-INF/beans.xml
index 3eb23a4701..42d151fe66 100644
--- a/embedder/src/test/resources/META-INF/beans.xml
+++ b/embedder/src/test/resources/META-INF/beans.xml
@@ -1,13 +1,20 @@
-
-
+
+
diff --git a/filers/default/pom.xml b/filers/default/pom.xml
index 1ca1028a61..8334b14e51 100644
--- a/filers/default/pom.xml
+++ b/filers/default/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-file-managers
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-filer-default
@@ -54,7 +54,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
+ indy-subsys-metrics
diff --git a/filers/default/src/main/java/org/commonjava/indy/filer/def/DefaultGalleyStorageProvider.java b/filers/default/src/main/java/org/commonjava/indy/filer/def/DefaultGalleyStorageProvider.java
index c6a0916e0b..29847c2fcd 100644
--- a/filers/default/src/main/java/org/commonjava/indy/filer/def/DefaultGalleyStorageProvider.java
+++ b/filers/default/src/main/java/org/commonjava/indy/filer/def/DefaultGalleyStorageProvider.java
@@ -15,8 +15,6 @@
*/
package org.commonjava.indy.filer.def;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.Timer;
import com.datastax.driver.core.Session;
import org.commonjava.cdi.util.weft.ExecutorConfig;
import org.commonjava.cdi.util.weft.NamedThreadFactory;
@@ -25,8 +23,11 @@
import org.commonjava.indy.content.IndyChecksumAdvisor;
import org.commonjava.indy.content.SpecialPathSetProducer;
import org.commonjava.indy.filer.def.conf.DefaultStorageProviderConfiguration;
-import org.commonjava.indy.metrics.IndyMetricsManager;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
+import org.commonjava.o11yphant.metrics.api.Meter;
+import org.commonjava.o11yphant.metrics.api.MetricRegistry;
+import org.commonjava.o11yphant.metrics.api.Timer;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.indy.subsys.cassandra.CassandraClient;
import org.commonjava.indy.subsys.cassandra.config.CassandraConfig;
import org.commonjava.maven.galley.GalleyInitException;
@@ -80,7 +81,7 @@
import java.util.function.Function;
import static org.apache.commons.lang3.StringUtils.isBlank;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getSupername;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.getSupername;
import static org.commonjava.maven.galley.io.checksum.ChecksummingDecoratorAdvisor.ChecksumAdvice.CALCULATE_AND_WRITE;
import static org.commonjava.maven.galley.io.checksum.ChecksummingDecoratorAdvisor.ChecksumAdvice.NO_DECORATE;
import static org.commonjava.storage.pathmapped.pathdb.datastax.util.CassandraPathDBUtils.*;
@@ -123,7 +124,13 @@ public class DefaultGalleyStorageProvider
private Instance transferDecorators;
@Inject
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
+
+ @Inject
+ private MetricRegistry metricRegistry;
+
+ @Inject
+ private IndyMetricsConfig metricsConfig;
@Inject
private CassandraConfig cassandraConfig;
@@ -185,6 +192,8 @@ private void setupCacheProviderFactory()
if ( indyConfiguration.isStandalone() )
{
+ logger.info( "We're in standalone content-storage mode. Cassandra path-mapping database will NOT be used" );
+
// Only work for local debug mode.
ScheduledExecutorService debugDeleteExecutor = Executors.newScheduledThreadPool( 5, new NamedThreadFactory(
"debug-galley-delete-executor", new ThreadGroup( "debug-galley-delete-executor" ), true, 2 ) );
@@ -192,6 +201,8 @@ private void setupCacheProviderFactory()
return;
}
+ logger.info( "Initializing Cassandra-based path-mapping database for content storage." );
+
PathDB pathDB = null;
PathMappedStorageConfig pathMappedStorageConfig = getPathMappedStorageConfig();
if ( cassandraClient != null )
@@ -207,12 +218,11 @@ private void setupCacheProviderFactory()
if ( pathDB != null )
{
- final IndyMetricsConfig metricsConfig = metricsManager.getConfig();
if ( metricsConfig.isPathDBMetricsEnabled() )
{
final String operations = metricsConfig.getPathDBMetricsOperations();
logger.info( "Create measured PathDB, operations: {}" );
- pathDB = new MeasuredPathDB( pathDB, metricsManager.getMetricRegistry(), getSupername( "pathDB" ) )
+ pathDB = new MeasuredPathDB( pathDB, metricsManager, getSupername( "pathDB" ) )
{
@Override
protected boolean isMetricEnabled( String metricName )
@@ -283,12 +293,12 @@ private BiConsumer cumulativeTimer()
private Function meterProvider()
{
- return (name)->metricsManager.getMeter( name );
+ return ( name ) -> metricsManager.getMeter( name );
}
private Function timerProvider()
{
- return (name)->metricsManager.startTimer( name );
+ return ( name ) -> metricsManager.startTimer( name );
}
private ChecksummingTransferDecorator getChecksummingTransferDecorator()
diff --git a/filers/default/src/main/java/org/commonjava/indy/filer/def/IOLatencyDecorator.java b/filers/default/src/main/java/org/commonjava/indy/filer/def/IOLatencyDecorator.java
index 0587bcbf8a..01c9d71d75 100644
--- a/filers/default/src/main/java/org/commonjava/indy/filer/def/IOLatencyDecorator.java
+++ b/filers/default/src/main/java/org/commonjava/indy/filer/def/IOLatencyDecorator.java
@@ -15,8 +15,6 @@
*/
package org.commonjava.indy.filer.def;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.Timer;
import org.apache.commons.io.input.CountingInputStream;
import org.apache.commons.io.output.CountingOutputStream;
import org.commonjava.maven.galley.event.EventMetadata;
@@ -24,6 +22,7 @@
import org.commonjava.maven.galley.model.Transfer;
import org.commonjava.maven.galley.model.TransferOperation;
import org.commonjava.maven.galley.spi.metrics.TimingProvider;
+import org.commonjava.o11yphant.metrics.api.Meter;
import java.io.IOException;
import java.io.InputStream;
diff --git a/filers/default/src/main/java/org/commonjava/indy/filer/def/IndyTimingProvider.java b/filers/default/src/main/java/org/commonjava/indy/filer/def/IndyTimingProvider.java
index 55c66e33c7..134a3a7d0e 100644
--- a/filers/default/src/main/java/org/commonjava/indy/filer/def/IndyTimingProvider.java
+++ b/filers/default/src/main/java/org/commonjava/indy/filer/def/IndyTimingProvider.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.filer.def;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.commonjava.maven.galley.spi.metrics.TimingProvider;
public class IndyTimingProvider
@@ -23,9 +23,9 @@ public class IndyTimingProvider
{
private final String name;
- private final IndyMetricsManager metricsManager;
+ private final DefaultMetricsManager metricsManager;
- public IndyTimingProvider( final String name, final IndyMetricsManager metricsManager )
+ public IndyTimingProvider( final String name, final DefaultMetricsManager metricsManager )
{
this.name = name;
this.metricsManager = metricsManager;
diff --git a/filers/default/src/main/java/org/commonjava/indy/filer/def/TimingInputStream.java b/filers/default/src/main/java/org/commonjava/indy/filer/def/TimingInputStream.java
index 2967127626..d87b153497 100644
--- a/filers/default/src/main/java/org/commonjava/indy/filer/def/TimingInputStream.java
+++ b/filers/default/src/main/java/org/commonjava/indy/filer/def/TimingInputStream.java
@@ -15,12 +15,11 @@
*/
package org.commonjava.indy.filer.def;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.Timer;
import org.apache.commons.io.input.CountingInputStream;
-import org.commonjava.indy.metrics.RequestContextHelper;
+import org.commonjava.indy.util.RequestContextHelper;
import org.commonjava.maven.galley.spi.metrics.TimingProvider;
import org.commonjava.maven.galley.util.IdempotentCloseInputStream;
+import org.commonjava.o11yphant.metrics.api.Meter;
import java.io.IOException;
import java.util.function.BiConsumer;
diff --git a/filers/default/src/main/java/org/commonjava/indy/filer/def/TimingOutputStream.java b/filers/default/src/main/java/org/commonjava/indy/filer/def/TimingOutputStream.java
index 27bd9bfd60..60feda3bb2 100644
--- a/filers/default/src/main/java/org/commonjava/indy/filer/def/TimingOutputStream.java
+++ b/filers/default/src/main/java/org/commonjava/indy/filer/def/TimingOutputStream.java
@@ -15,13 +15,11 @@
*/
package org.commonjava.indy.filer.def;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.Timer;
import org.apache.commons.io.output.CountingOutputStream;
-import org.commonjava.indy.metrics.IndyMetricsManager;
-import org.commonjava.indy.metrics.RequestContextHelper;
+import org.commonjava.indy.util.RequestContextHelper;
import org.commonjava.maven.galley.spi.metrics.TimingProvider;
import org.commonjava.maven.galley.util.IdempotentCloseOutputStream;
+import org.commonjava.o11yphant.metrics.api.Meter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/filers/default/src/main/java/org/commonjava/indy/filer/def/metrics/DefaultStoragePathProvider.java b/filers/default/src/main/java/org/commonjava/indy/filer/def/metrics/DefaultStoragePathProvider.java
index 48a0eeac20..932799fd19 100644
--- a/filers/default/src/main/java/org/commonjava/indy/filer/def/metrics/DefaultStoragePathProvider.java
+++ b/filers/default/src/main/java/org/commonjava/indy/filer/def/metrics/DefaultStoragePathProvider.java
@@ -16,14 +16,14 @@
package org.commonjava.indy.filer.def.metrics;
import org.commonjava.indy.filer.def.conf.DefaultStorageProviderConfiguration;
-import org.commonjava.indy.metrics.system.StoragePathProvider;
+import org.commonjava.o11yphant.metrics.system.StoragePathProvider;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import java.io.File;
/**
- * Used to provide storage path in {@link org.commonjava.indy.metrics.system.SystemGaugesSet} to monitor
+ * Used to provide storage path in {@link org.commonjava.o11yphant.metrics.system.SystemGaugesSet} to monitor
* storage space usage
*/
@ApplicationScoped
diff --git a/filers/pom.xml b/filers/pom.xml
index 1ae625d20b..f98fe05c3c 100644
--- a/filers/pom.xml
+++ b/filers/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-file-managers
diff --git a/ftests/common/pom.xml b/ftests/common/pom.xml
index 2c0c695de6..a8b6165050 100644
--- a/ftests/common/pom.xml
+++ b/ftests/common/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-ftests-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-common
diff --git a/ftests/common/src/main/java/org/commonjava/indy/ftest/core/fixture/ThreadDumper.java b/ftests/common/src/main/java/org/commonjava/indy/ftest/core/fixture/ThreadDumper.java
index 12bc2d0235..443b79cb85 100644
--- a/ftests/common/src/main/java/org/commonjava/indy/ftest/core/fixture/ThreadDumper.java
+++ b/ftests/common/src/main/java/org/commonjava/indy/ftest/core/fixture/ThreadDumper.java
@@ -31,7 +31,7 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.join;
/**
* Created by jdcasey on 11/28/16.
diff --git a/ftests/core/pom.xml b/ftests/core/pom.xml
index 018ba2a166..8c8de46cbd 100644
--- a/ftests/core/pom.xml
+++ b/ftests/core/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-ftests-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-core
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupDownloadWithFirstRepoTimeoutTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupDownloadWithFirstRepoTimeoutTest.java
index 5436ab1acb..74fde6860b 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupDownloadWithFirstRepoTimeoutTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupDownloadWithFirstRepoTimeoutTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.RemoteRepository;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupIgnoresDisabledRemoteRepositoryTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupIgnoresDisabledRemoteRepositoryTest.java
index 05883d10a1..5217be5f69 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupIgnoresDisabledRemoteRepositoryTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupIgnoresDisabledRemoteRepositoryTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.RemoteRepository;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeInfoGenTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeInfoGenTest.java
index ab59ed2259..9626fb2fd9 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeInfoGenTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeInfoGenTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.core.content.group.GroupMergeHelper;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.ArtifactStore;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenConstituentDisabledTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenConstituentDisabledTest.java
index 4591ec3034..dee1a2a8c5 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenConstituentDisabledTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenConstituentDisabledTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.ftest.core.category.EventDependent;
import org.commonjava.indy.model.core.Group;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenGroupWithGroupMemberChangesTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenGroupWithGroupMemberChangesTest.java
index 6d8aa9659a..ab13b55d43 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenGroupWithGroupMemberChangesTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenGroupWithGroupMemberChangesTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenNewHostedAddedInMultiHostedGroupTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenNewHostedAddedInMultiHostedGroupTest.java
index e0b56c3f77..d5229928c6 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenNewHostedAddedInMultiHostedGroupTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenNewHostedAddedInMultiHostedGroupTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenSeqNewHostedAddedInMultiHostedGroupTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenSeqNewHostedAddedInMultiHostedGroupTest.java
index d8d5aa06aa..1ef6f5343e 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenSeqNewHostedAddedInMultiHostedGroupTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWhenSeqNewHostedAddedInMultiHostedGroupTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWithRepoErrorTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWithRepoErrorTest.java
index caa47876ee..cbe8eacf1c 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWithRepoErrorTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWithRepoErrorTest.java
@@ -23,7 +23,7 @@
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.RemoteRepository;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWithRepoTimeoutTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWithRepoTimeoutTest.java
index f42dbaf778..a01753a5ee 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWithRepoTimeoutTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataMergeWithRepoTimeoutTest.java
@@ -24,7 +24,7 @@
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.RemoteRepository;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataRemergeWhenConstituentDisabledTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataRemergeWhenConstituentDisabledTest.java
index 5eff63e20c..35e04eb523 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataRemergeWhenConstituentDisabledTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/GroupMetadataRemergeWhenConstituentDisabledTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/MetadataMergeRepoNoMetaListingTimeoutTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/MetadataMergeRepoNoMetaListingTimeoutTest.java
index f6c71be4ff..02f6a51748 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/MetadataMergeRepoNoMetaListingTimeoutTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/MetadataMergeRepoNoMetaListingTimeoutTest.java
@@ -22,7 +22,7 @@
import java.io.IOException;
import java.io.InputStream;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.ftest.core.category.EventDependent;
import org.commonjava.indy.model.core.Group;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryFilterGACacheTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryFilterGACacheTest.java
index 8b581c6a32..46d021529a 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryFilterGACacheTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryFilterGACacheTest.java
@@ -18,7 +18,7 @@
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.core.content.group.GroupRepositoryFilterManager;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryFilterTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryFilterTest.java
index 07f693b1c2..74e261a83e 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryFilterTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryFilterTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.HostedRepository;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskExistsTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskExistsTest.java
index cef4952ac6..baed1e4540 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskExistsTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskExistsTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.RemoteRepository;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskExtTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskExtTest.java
index 5611dd2cb8..83572f99c1 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskExtTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskExtTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.HostedRepository;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskMetadataExcludeTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskMetadataExcludeTest.java
index 03fb5a9d01..3acc4bba8f 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskMetadataExcludeTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskMetadataExcludeTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.HostedRepository;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskMetadataTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskMetadataTest.java
index 203e89abce..88858442bd 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskMetadataTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskMetadataTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.HostedRepository;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskTest.java
index 97885d08cd..cbd57085e0 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/RepositoryPathMaskTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.RemoteRepository;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreFileAndVerifyExistenceInGroupTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreFileAndVerifyExistenceInGroupTest.java
index 63a7c19f58..3fb68a6d77 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreFileAndVerifyExistenceInGroupTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreFileAndVerifyExistenceInGroupTest.java
@@ -23,7 +23,7 @@
import java.io.ByteArrayInputStream;
import java.io.InputStream;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreReverseMapInitTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreReverseMapInitTest.java
index cc85e44195..72748c972b 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreReverseMapInitTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreReverseMapInitTest.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.ftest.core.content;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.ftest.core.fixture.StoreTestDataBootupAction;
import org.commonjava.indy.model.core.Group;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreReverseMapMigrationTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreReverseMapMigrationTest.java
index e86dc250e4..f9748ea5ad 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreReverseMapMigrationTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreReverseMapMigrationTest.java
@@ -17,7 +17,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.client.core.IndyClientException;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreTwoFilesAndVerifyPresenceInGroupTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreTwoFilesAndVerifyPresenceInGroupTest.java
index 1ed889f28d..9013784066 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreTwoFilesAndVerifyPresenceInGroupTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/content/StoreTwoFilesAndVerifyPresenceInGroupTest.java
@@ -22,7 +22,7 @@
import java.io.ByteArrayInputStream;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.ftest.core.AbstractContentManagementTest;
import org.commonjava.indy.model.core.Group;
import org.commonjava.indy.model.core.StoreKey;
diff --git a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/store/AbstractStoreManagementTest.java b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/store/AbstractStoreManagementTest.java
index cacb454e74..b3a7389843 100644
--- a/ftests/core/src/main/java/org/commonjava/indy/ftest/core/store/AbstractStoreManagementTest.java
+++ b/ftests/core/src/main/java/org/commonjava/indy/ftest/core/store/AbstractStoreManagementTest.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.ftest.core.store;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.join;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
diff --git a/ftests/metrics/pom.xml b/ftests/metrics/pom.xml
deleted file mode 100644
index 6a0272afc1..0000000000
--- a/ftests/metrics/pom.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
- indy-ftests-parent
- org.commonjava.indy
- 2.5.0-SNAPSHOT
-
- 4.0.0
-
- indy-ftests-metrics
-
-
-
- org.commonjava.indy
- indy-client-core-java
-
-
- org.commonjava.indy
- indy-ftests-common
-
-
- org.commonjava.indy
- indy-test-fixtures-core
- compile
-
-
- org.commonjava.util
- http-testserver
- provided
-
-
- org.commonjava.indy
- indy-subsys-jaxrs
-
-
- org.commonjava.indy
- indy-bindings-jaxrs
-
-
- org.jboss.weld.se
- weld-se-core
- compile
-
-
- org.jboss.resteasy
- resteasy-jaxrs
-
-
- org.commonjava.indy
- indy-subsys-metrics-core
-
-
-
\ No newline at end of file
diff --git a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/IndyMetricsTest.java b/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/IndyMetricsTest.java
deleted file mode 100644
index d6cccfad99..0000000000
--- a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/IndyMetricsTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.ftest.metrics;
-
-import org.commonjava.indy.client.core.IndyClientModule;
-import org.commonjava.indy.ftest.core.AbstractIndyFunctionalTest;
-import org.commonjava.indy.ftest.metrics.client.IndyMetricsFtestClientModule;
-import org.commonjava.indy.test.fixture.core.CoreServerFixture;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Created by xiabai on 3/22/17.
- */
-public class IndyMetricsTest
- extends AbstractIndyFunctionalTest
-{
- @Test
- @Ignore
- public void MetricsTest() throws Exception
- {
- for ( int i = 0; i < 10; i++ )
- {
- client.module( IndyMetricsFtestClientModule.class ).getTimerWithOutException();
- }
-
- for ( int i = 0; i < 10; i++ )
- {
- try
- {
- client.module( IndyMetricsFtestClientModule.class ).getTimerWithException();
- }
- catch ( Throwable throwable )
- {
- //do nothing
- }
- }
-
- for ( int i = 0; i < 10; i++ )
- {
- client.module( IndyMetricsFtestClientModule.class ).getMeterWithOutException();
- }
-
- for ( int i = 0; i < 10; i++ )
- {
- try
- {
- client.module( IndyMetricsFtestClientModule.class ).getMeterWithException();
- }
- catch ( Throwable throwable )
- {
- //do nothing
- }
- }
- Thread.sleep( 5000 );
-
- assertEquals( "20", client.module( IndyMetricsFtestClientModule.class ).getMeterCount() );
- assertEquals( "20", client.module( IndyMetricsFtestClientModule.class ).getTimerCount() );
- assertEquals( "10", client.module( IndyMetricsFtestClientModule.class ).getMeterCountWithException());
- assertEquals( "10", client.module( IndyMetricsFtestClientModule.class ).getTimerCountWithException() );
- }
-
- @Override
- protected Collection getAdditionalClientModules()
- {
- return Arrays.asList( new IndyMetricsFtestClientModule() );
- }
-
- @Override
- protected void initTestConfig( CoreServerFixture fixture ) throws IOException
- {
- writeConfigFile( "conf.d/metrics.conf", "\n"+readTestResource( "default-test-metrics.conf" ) );
- }
-}
diff --git a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/ZabbixCacheStorageTest.java b/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/ZabbixCacheStorageTest.java
deleted file mode 100644
index 32ac8ba9ea..0000000000
--- a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/ZabbixCacheStorageTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.ftest.metrics;
-
-import org.commonjava.indy.client.core.IndyClientModule;
-import org.commonjava.indy.ftest.core.AbstractIndyFunctionalTest;
-import org.commonjava.indy.ftest.metrics.client.ZabbixCacheStorageTestClientModule;
-import org.commonjava.indy.test.fixture.core.CoreServerFixture;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-
-/**
- * Created by xiabai on 5/8/17.
- */
-public class ZabbixCacheStorageTest
- extends AbstractIndyFunctionalTest
-{
-// @Test
- public void putCache()
- {
- try
- {
- client.module( ZabbixCacheStorageTestClientModule.class ).putCache();
- org.junit.Assert.assertFalse( false );
- }
- catch ( Exception e )
- {
- org.junit.Assert.assertFalse( true );
- }
- }
-
- @Test
- public void getCache()
- {
- try
- {
-
- client.module( ZabbixCacheStorageTestClientModule.class ).putCache();
-
- org.junit.Assert.assertEquals( "456", client.module( ZabbixCacheStorageTestClientModule.class )
- .getHostGroupCache() );
- org.junit.Assert.assertEquals( "123", client.module( ZabbixCacheStorageTestClientModule.class )
- .getHostCache() );
- org.junit.Assert.assertEquals( "789", client.module( ZabbixCacheStorageTestClientModule.class )
- .getItemCache() );
-
- }
- catch ( Exception e )
-
- {
- org.junit.Assert.assertFalse( true );
- }
-
- }
-
- @Override
- protected Collection getAdditionalClientModules()
- {
- return Arrays.asList( new ZabbixCacheStorageTestClientModule() );
- }
-
- @Override
- protected void initTestConfig( CoreServerFixture fixture ) throws IOException
- {
- writeConfigFile( "conf.d/metrics.conf", "\n" + readTestResource( "default-test-metrics.conf" ) );
- writeConfigFile( "default-metrics.conf", "\n" + readTestResource( "default-test-metrics.conf" ) );
- }
-}
diff --git a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/client/IndyMetricsFtestClientModule.java b/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/client/IndyMetricsFtestClientModule.java
deleted file mode 100644
index a555be8e7b..0000000000
--- a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/client/IndyMetricsFtestClientModule.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.ftest.metrics.client;
-
-import org.commonjava.indy.client.core.IndyClientException;
-import org.commonjava.indy.client.core.IndyClientModule;
-import org.commonjava.indy.client.core.util.UrlUtils;
-
-/**
- * Created by xiabai on 3/22/17.
- */
-public class IndyMetricsFtestClientModule
- extends IndyClientModule
-{
- private static String TIMTER_PATH = "/ftest/metrics/timer";
- private static String METER_PATH = "/ftest/metrics/meter";
- private static String TIMER_COUNT_PATH = "/ftest/metrics/metricRegistry/timer";
- private static String TIMER_COUNT_EXCEPTION_PATH = "/ftest/metrics/metricRegistry/timer/exception";
- private static String MERTER_COUNT_PATH = "/ftest/metrics/metricRegistry/meter";
- private static String MERTER_COUNTEXCEPTION__PATH = "/ftest/metrics/metricRegistry/meter/exception";
-
- public String getTimerWithOutException() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", TIMTER_PATH+"/false" ), String.class );
- }
-
- public String getTimerWithException() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", TIMTER_PATH+"/true" ), String.class );
- }
-
- public String getMeterWithOutException() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", METER_PATH+"/false" ), String.class );
- }
-
- public String getMeterWithException() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", METER_PATH+"/true" ), String.class );
- }
-
- public String getTimerCount()throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", TIMER_COUNT_PATH), String.class );
- }
-
- public String getTimerCountWithException() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", TIMER_COUNT_EXCEPTION_PATH ), String.class );
- }
-
- public String getMeterCount() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", MERTER_COUNT_PATH ), String.class );
- }
-
- public String getMeterCountWithException() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", MERTER_COUNTEXCEPTION__PATH ), String.class );
- }
-
-}
diff --git a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/client/ZabbixCacheStorageTestClientModule.java b/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/client/ZabbixCacheStorageTestClientModule.java
deleted file mode 100644
index c26348de6c..0000000000
--- a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/client/ZabbixCacheStorageTestClientModule.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.ftest.metrics.client;
-
-import org.commonjava.indy.client.core.IndyClientException;
-import org.commonjava.indy.client.core.IndyClientModule;
-import org.commonjava.indy.client.core.util.UrlUtils;
-
-/**
- * Created by xiabai on 5/8/17.
- */
-public class ZabbixCacheStorageTestClientModule extends IndyClientModule
-{
- private static String PUT_PATH = "/ftest/metrics/storage/put";
- private static String GET_HOSTGROUP_PATH = "/ftest/metrics/storage/putHostGroup";
- private static String GET_HOST_PATH = "/ftest/metrics/storage/putHost";
- private static String GET_ITEM_PATH = "/ftest/metrics/storage/putItem";
-
- public String putCache() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", PUT_PATH ), String.class );
- }
-
- public String getHostGroupCache() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", GET_HOSTGROUP_PATH ), String.class );
- }
-
- public String getHostCache() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", GET_HOST_PATH ), String.class );
- }
-
- public String getItemCache() throws IndyClientException
- {
- return http.get( UrlUtils.buildUrl( "", GET_ITEM_PATH ), String.class );
- }
-
-}
diff --git a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/jaxrs/MetricsTestResource.java b/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/jaxrs/MetricsTestResource.java
deleted file mode 100644
index 550ee3fa11..0000000000
--- a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/jaxrs/MetricsTestResource.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.ftest.metrics.jaxrs;
-
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
-import org.commonjava.indy.bind.jaxrs.IndyResources;
-import org.commonjava.indy.bind.jaxrs.util.REST;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.measure.annotation.MetricNamed;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.inject.Inject;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.util.Random;
-
-/**
- * Created by xiabai on 3/22/17.
- */
-@Path( "/api/ftest/metrics/" )
-@Produces( "application/json" )
-@Consumes( "application/json" )
-public class MetricsTestResource
- implements IndyResources
-{
- private final Logger logger = LoggerFactory.getLogger( getClass() );
-
- @Inject
- MetricRegistry metricRegistry;
-
- @GET
- @Path( "/metricRegistry/timer" )
- public Response getTimerCount()
- {
- Timer timer = metricRegistry.timer( "testTimerRequest.timer" );
- return Response.ok( timer.getCount(), MediaType.APPLICATION_JSON ).build();
- }
-
- @GET
- @Path( "/metricRegistry/timer/exception" )
- public Response getTimerCountWithException()
- {
- Meter meter = null;
- try
- {
- meter = metricRegistry.meter("testTimerRequestWithException.exception" );
- }
- catch ( Throwable t )
- {
- t.printStackTrace();
- }
- return Response.ok( meter.getCount(), MediaType.APPLICATION_JSON ).build();
- }
-
- @GET
- @Path( "/metricRegistry/meter" )
- public Response getMeterCount()
- {
- Meter meter = metricRegistry.meter( "testMeterRequest.meter" );
- return Response.ok( meter.getCount(), MediaType.APPLICATION_JSON ).build();
- }
-
- @GET
- @Path( "/metricRegistry/meter/exception" )
- public Response getMeterCountWithException()
- {
- Meter meter =
- metricRegistry.meter( "testMeterRequestException.exception" );
- return Response.ok( meter.getCount(), MediaType.APPLICATION_JSON ).build();
- }
-
- @GET
- @Path( "/timer/{isException :[a-zA-Z]+}" )
- @Measure
- public Response getTimer( @PathParam( "isException" ) String isException )
- throws Exception
- {
- if ( isException.equals( "true" ) )
- {
- throw new Exception( "EXPECTED: MetricsTest has a exception" );
- }
- logger.info( "call in method : MetricsTest" );
- Random random = new Random();
- Thread.sleep( random.nextInt( 100 ) );
- return Response.ok( " \"Timer: well done\"", MediaType.APPLICATION_JSON ).build();
- }
-
- @GET
- @Path( "/meter/{isException :[a-zA-Z]+}" )
- @Measure
- public Response getMeter( @PathParam( "isException" ) String isException )
- throws Exception
- {
- logger.info( "call in method : getMeter" );
- if ( isException.equals( "true" ) )
- {
- throw new Exception( "EXPECTED: getMeter has a exception" );
- }
- Thread.sleep( 100 );
- return Response.ok( " " + "\"Meter :well done\"", MediaType.APPLICATION_JSON ).build();
- }
-}
diff --git a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/jaxrs/ZabbixCacheStorageResource.java b/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/jaxrs/ZabbixCacheStorageResource.java
deleted file mode 100644
index 4a887b1073..0000000000
--- a/ftests/metrics/src/main/java/org/commonjava/indy/ftest/metrics/jaxrs/ZabbixCacheStorageResource.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.ftest.metrics.jaxrs;
-
-import org.commonjava.indy.bind.jaxrs.IndyResources;
-import org.commonjava.indy.metrics.zabbix.cache.ZabbixCacheStorage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.inject.Inject;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.IOException;
-
-/**
- * Created by xiabai on 5/8/17.
- */
-@Path( "/api/ftest/metrics/" )
-@Produces( "application/json" )
-@Consumes( "application/json" )
-public class ZabbixCacheStorageResource
- implements IndyResources
-{
- private final Logger logger = LoggerFactory.getLogger( getClass() );
-
- @Inject
- ZabbixCacheStorage zabbixCacheStorage;
-
- @GET
- @Path( "/storage/put" )
- public Response putCache() throws IOException
- {
- zabbixCacheStorage.putHost( "test-host","123" );
- zabbixCacheStorage.putHostGroup( "test-host-group","456" );
- zabbixCacheStorage.putItem( "test-item","789" );
- return Response.ok("\"well done\"").build();
- }
-
- @GET
- @Path( "/storage/putHostGroup" )
- public Response getHostGroupCache() throws IOException
- {
- String result = zabbixCacheStorage.getHostGroup( "test-host-group" );
- return Response.ok( result, MediaType.APPLICATION_JSON ).build();
- }
-
- @GET
- @Path( "/storage/putHost" )
- public Response getHostCache() throws IOException
- {
- String result = zabbixCacheStorage.getHost( "test-host" );
- return Response.ok( result, MediaType.APPLICATION_JSON ).build();
- }
-
- @GET
- @Path( "/storage/putItem" )
- public Response getItemCache() throws IOException
- {
- String result = zabbixCacheStorage.getItem( "test-item" );
- return Response.ok( result, MediaType.APPLICATION_JSON ).build();
- }
-
-}
diff --git a/ftests/metrics/src/main/resources/META-INF/beans.xml b/ftests/metrics/src/main/resources/META-INF/beans.xml
deleted file mode 100644
index cf034ceac5..0000000000
--- a/ftests/metrics/src/main/resources/META-INF/beans.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- org.commonjava.indy.metrics.jaxrs.interceptor.MetricsInterceptor
-
-
\ No newline at end of file
diff --git a/ftests/metrics/src/main/resources/default-test-metrics.conf b/ftests/metrics/src/main/resources/default-test-metrics.conf
deleted file mode 100644
index f0b01aa0dc..0000000000
--- a/ftests/metrics/src/main/resources/default-test-metrics.conf
+++ /dev/null
@@ -1,77 +0,0 @@
-[metrics]
-enabled = true
-reporter.enabled = false
-
-######################################
-# List of enabled reporters (comma-separated)
-# At present, Indy metrics feature just support three reporters
-# GraPhiteDB,Zabbix,Console,Elasticsearch
-######################################
-
-reporter = graphite;zabbix;elasticsearch
-
-############################################
-# GraphiteDB reporter options
-############################################
-
-# This is the hostname of GraphiteDB.
-graphite.hostname = localhost
-# Port of GraphiteDB.
-graphite.port = 2003
-# Specific prefix for GraphiteDB Item
-graphite.reporter.prefix = local.one
-# Indy's metrics item have three type: simple,jvm,healthcheck
-# Period of simple item for reporting
-graphite.reporter.simple.period = 30
-# Period of jvm item for reporting
-graphite.reporter.jvm.period = 300
-# Period of healthcheck item for reporting
-graphite.reporter.healthcheck.period = 600
-
-############################################
-# Zabbix reporter options
-############################################
-
-#The Zabbix API is a web based API and is shipped as part of the web frontend
-# API URL used to access Zabbix from a web browser
-zabbix.api.url = example.com
-#Zabbix username for login Zabbix server(Zabbix API)
-zabbix.user = test
-#Zabbix password for login Zabbix server(Zabbix API)
-zabbix.pwd = test
-# Zabbix sender is a command line utility that may be used to send performance data to Zabbix server for processing.
-# Host of Zabbix server for Zabbix sender
-zabbix.sender.host = 192.168.1.1
-# Port of Zabbix server for Zabbix sender
-zabbix.sender.port = 10051
-# This is the hostname of the current Indy instance, it also is host name of Zabbix monitoring
-zabbix.indy.host = example.com
-# Specific prefix for Zabbix Item
-zabbix.reporter.prefix = local.one
-# Indy's metrics item have three type: simple,jvm,healthcheck
-# Those type have different period of reporter
-# Period of simple item for reporting
-zabbix.reporter.simple.period = 30
-# Period of jvm item for reporting
-zabbix.reporter.jvm.period = 300
-# Period of healthcheck item for reporting
-zabbix.reporter.healthcheck.period = 600
-
-############################################
-# Elasticsearch reporter options
-############################################
-
-# Specific prefix for Elasticsearch
-elk.reporter.prefix = local.one
-# Indy's metrics item have three type: simple,jvm,healthcheck.
-# Those type have different period of reporter
-# Period of simple item for reporting
-elk.reporter.simple.period = 30
-# Period of jvm item for reporting
-elk.reporter.jvm.period = 300
-# Period of healthcheck item for reporting
-elk.reporter.healthcheck.period = 600
-#The index name to index in Elasticsearch
-elk.reporter.index = local.one.name
-#Configure an array of hosts to send data to.
-elk.reporter.hosts = localhost:9200
\ No newline at end of file
diff --git a/ftests/pom.xml b/ftests/pom.xml
index be0bd23b72..b3cc40f93f 100644
--- a/ftests/pom.xml
+++ b/ftests/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-ftests-parent
@@ -32,7 +32,6 @@
common
core
- metrics
diff --git a/models/core-java/pom.xml b/models/core-java/pom.xml
index 0c2d1cf54b..cad85d2a32 100644
--- a/models/core-java/pom.xml
+++ b/models/core-java/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-models-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-model-core-java
@@ -52,6 +52,10 @@
org.commonjava.atlas
atlas-relationships-api
+
+ org.apache.commons
+ commons-lang3
+
commons-io
commons-io
diff --git a/models/core-java/src/main/java/org/commonjava/indy/model/core/StoreKey.java b/models/core-java/src/main/java/org/commonjava/indy/model/core/StoreKey.java
index f3e3b8e4ee..d98a5c47cf 100644
--- a/models/core-java/src/main/java/org/commonjava/indy/model/core/StoreKey.java
+++ b/models/core-java/src/main/java/org/commonjava/indy/model/core/StoreKey.java
@@ -22,11 +22,10 @@
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
-import java.io.Serializable;
import java.util.Arrays;
import java.util.concurrent.ConcurrentHashMap;
-import static org.apache.commons.lang.StringUtils.isBlank;
+import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
public final class StoreKey
diff --git a/models/core-java/src/main/java/org/commonjava/indy/model/util/HttpUtils.java b/models/core-java/src/main/java/org/commonjava/indy/model/util/HttpUtils.java
index b013b57b30..71d0ded61a 100644
--- a/models/core-java/src/main/java/org/commonjava/indy/model/util/HttpUtils.java
+++ b/models/core-java/src/main/java/org/commonjava/indy/model/util/HttpUtils.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.model.util;
-import static org.apache.commons.lang.StringUtils.isEmpty;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -25,7 +25,7 @@
import java.util.Map;
import java.util.TimeZone;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/models/core-java/src/main/java/org/commonjava/indy/stats/IndyDeprecatedApis.java b/models/core-java/src/main/java/org/commonjava/indy/stats/IndyDeprecatedApis.java
index 649ec24925..3a31e66a9b 100644
--- a/models/core-java/src/main/java/org/commonjava/indy/stats/IndyDeprecatedApis.java
+++ b/models/core-java/src/main/java/org/commonjava/indy/stats/IndyDeprecatedApis.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.stats;
-import org.apache.commons.lang.math.FloatRange;
+import org.apache.commons.lang3.Range;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,7 +29,7 @@
import static java.util.Optional.empty;
import static java.util.Optional.of;
-import static org.apache.commons.lang.StringUtils.isBlank;
+import static org.apache.commons.lang3.StringUtils.isBlank;
@Alternative
@Named
@@ -47,7 +47,7 @@ public IndyDeprecatedApis( Properties props )
{
this.props = props;
- Float minVersion = 0f;
+ float minVersion = 0f;
Set keys = props.stringPropertyNames();
for ( String key : keys )
@@ -55,16 +55,16 @@ public IndyDeprecatedApis( Properties props )
DeprecatedApiEntry et;
String value = props.getProperty( key );
- Float startVersion;
- Float endVersion;
+ float startVersion;
+ float endVersion;
- if ( key.indexOf( "," ) >= 0 ) // range
+ if ( key.contains( "," ) ) // range
{
key = key.replaceAll( "[\\[|\\]]", "" ); // strip off square brackets if present
String[] kv = key.split( "," );
startVersion = Float.parseFloat( kv[0].trim() );
endVersion = Float.parseFloat( kv[1].trim() );
- et = new DeprecatedApiEntry( new FloatRange( startVersion, endVersion ), value);
+ et = new DeprecatedApiEntry( Range.between( startVersion, endVersion ), value);
}
else
{
@@ -80,7 +80,7 @@ public IndyDeprecatedApis( Properties props )
deprecatedApis.add( et );
}
- minApiVersion = minVersion.toString();
+ minApiVersion = Float.toString(minVersion);
logger.debug( "Parsed deprecatedApis:{}, minApiVersion:{}", deprecatedApis, minApiVersion );
}
@@ -105,7 +105,7 @@ public Optional getDeprecated( String reqApiVersion )
// the scopes may overlap, we go through range entries first and other entries next
for ( DeprecatedApiEntry et : deprecatedApis )
{
- if ( et.range != null && et.range.containsFloat( reqVer ) )
+ if ( et.range != null && et.range.contains( reqVer ) )
{
return of( et );
}
@@ -129,7 +129,7 @@ public String getMinApiVersion()
public static class DeprecatedApiEntry
{
- private FloatRange range;
+ private Range range;
private Float endVersion;
@@ -146,7 +146,7 @@ public boolean isOff()
this.value = value;
}
- public DeprecatedApiEntry( FloatRange floatRange, String value )
+ public DeprecatedApiEntry( Range floatRange, String value )
{
this.range = floatRange;
this.value = value;
diff --git a/models/pom.xml b/models/pom.xml
index 3363172699..edfa09c8b4 100644
--- a/models/pom.xml
+++ b/models/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-models-parent
diff --git a/pom.xml b/pom.xml
index 993c1a76fe..93d7c27bab 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
pom
@@ -37,7 +37,7 @@
scm:git:https://github.com/CommonJava/indy
scm:git:https://github.com/CommonJava/indy
http://github.com/Commonjava/indy
- HEAD
+ indy-parent-2.5.4
@@ -75,25 +75,25 @@
0.1.5
2.4.6.Final
2.10.1
- 4.0.2
4.0.4.Final
4.4.9
4.5.9
1.1.0
3.7.1.0
3.7.2
- 1.7
+ 1.8
+ 1.3
- 1.1.1-SNAPSHOT
- 1.4
+ 1.1.1
+ 1.5
25
3.2.1
1.16
- 2.12
+ 2.13
2.3
1.11
- 1.17
+ 1.18
1.4
1.4
0.13.1
@@ -140,7 +140,7 @@
- uis
+
models
api
addons
@@ -152,14 +152,14 @@
filers
test
tools
- embedder
+
ftests
- rest
+
clients
- deployments
+
@@ -187,7 +187,7 @@
org.commonjava.indy.ui
indy-ui-layover
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
runtime
@@ -195,22 +195,22 @@
org.commonjava.indy
indy-model-core-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-api
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-core
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-core
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -218,32 +218,32 @@
org.commonjava.indy
indy-db-flat
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-db-metrics
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-db-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-db-infinispan
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-bindings-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy.launch
indy-launcher
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
tar.gz
skinny
provided
@@ -251,7 +251,7 @@
org.commonjava.indy.launch
indy-launcher
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
tar.gz
complete
provided
@@ -259,7 +259,7 @@
org.commonjava.indy.launch
indy-launcher
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
tar.gz
data
provided
@@ -267,7 +267,7 @@
org.commonjava.indy.launch
indy-launcher
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
tar.gz
etc
provided
@@ -276,17 +276,17 @@
org.commonjava.indy
indy-revisions-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-revisions-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-revisions-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -294,7 +294,7 @@
org.commonjava.indy
indy-revisions-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
uiset
provided
@@ -302,12 +302,12 @@
org.commonjava.indy
indy-dot-maven-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-dot-maven-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
dataset
provided
@@ -315,22 +315,22 @@
org.commonjava.indy
indy-dot-maven-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-ftests-dot-maven
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-httprox-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-httprox-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -338,17 +338,17 @@
org.commonjava.indy
indy-ftests-httprox
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-content-index
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-content-index
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -356,51 +356,51 @@
org.commonjava.indy
indy-db-memory
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-test-db
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-test-fixtures-core
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-test-providers-core
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-test-utils
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-filer-default
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-honeycomb
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-honeycomb
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -408,17 +408,17 @@
org.commonjava.indy
indy-subsys-flatfile
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-cassandra
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-cassandra
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -426,79 +426,79 @@
org.commonjava.indy
indy-subsys-infinispan
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-http
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-git
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-groovy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-prefetch
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-cpool
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-client-core-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-ftests-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-ftests-core
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-folo-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-ftests-folo
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-folo-client-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-folo-model-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-folo-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-folo-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
dataset
provided
@@ -506,7 +506,7 @@
org.commonjava.indy
indy-folo-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -514,33 +514,33 @@
org.commonjava.indy
indy-promote-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-ftests-promote
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-promote-client-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-promote-model-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-promote-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-promote-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -548,7 +548,7 @@
org.commonjava.indy
indy-promote-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
dataset
provided
@@ -556,19 +556,19 @@
org.commonjava.indy
indy-promote-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
dataset
provided
org.commonjava.indy
indy-implied-repos-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-implied-repos-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -576,37 +576,37 @@
org.commonjava.indy
indy-implied-repos-model-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-implied-repos-client-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-ftests-implied-repos
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy.embed
indy-embedder
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy.boot
indy-booter-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-keycloak
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-subsys-keycloak
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -614,7 +614,7 @@
org.commonjava.indy
indy-subsys-infinispan
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -622,7 +622,7 @@
org.commonjava.indy
indy-subsys-prefetch
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -631,7 +631,7 @@
org.commonjava.indy
indy-koji-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
tar.gz
confset
provided
@@ -639,103 +639,103 @@
org.commonjava.indy
indy-koji-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-koji-model-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-koji-client-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-koji-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-path-mapped-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-path-mapped-model-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-path-mapped-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-pkg-maven-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-pkg-maven-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-pkg-npm-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-ftests-pkg-maven
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-ftests-pkg-npm
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-pkg-npm-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-pkg-npm-model-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-diagnostics-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-diagnostics-client-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-diagnostics-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-ftests-diagnostics
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-diagnostics-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
confset
tar.gz
provided
@@ -743,81 +743,64 @@
org.commonjava.indy
indy-hosted-by-archive-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-hosted-by-archive-client-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-ftests-hosted-by-archive
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-hosted-by-archive-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-hosted-by-archive-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
confset
tar.gz
org.commonjava.indy
- indy-subsys-metrics-core
- 2.5.0-SNAPSHOT
+ indy-subsys-metrics
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
- indy-subsys-metrics-reporter
- 2.5.0-SNAPSHOT
-
-
- org.commonjava.indy
- indy-subsys-metrics-prometheus
- 2.5.0-SNAPSHOT
-
-
- org.commonjava.indy
- indy-subsys-metrics-reporter
- 2.5.0-SNAPSHOT
+ indy-subsys-metrics
+ 2.5.4.2-SNAPSHOT
confset
tar.gz
provided
-
- org.commonjava.indy
- indy-ftests-metrics
- 2.5.0-SNAPSHOT
- test
-
-
org.commonjava.indy
indy-sli
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy.rest
indy-rest-api
yaml
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
provided
org.commonjava.indy.rest
indy-rest-api
json
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
provided
@@ -856,33 +839,33 @@
org.commonjava.indy
indy-content-browse-common
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy
indy-content-browse-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy
indy-ftests-content-browse
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
test
org.commonjava.indy
indy-content-browse-model-java
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy
indy-content-browse-client-java
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy
indy-content-browse-common
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
confset
tar.gz
provided
@@ -890,35 +873,35 @@
org.commonjava.indy
indy-content-browse-ui
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
reactui
tar.gz
org.commonjava.indy
indy-changelog-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-changelog-client-java
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-ftests-changelog
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
test
org.commonjava.indy
indy-changelog-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-changelog-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
confset
tar.gz
@@ -936,12 +919,12 @@
org.commonjava.indy
indy-event-audit-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy
indy-event-audit-common
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
confset
tar.gz
provided
@@ -956,23 +939,23 @@
org.commonjava.indy
indy-repo-proxy-common
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy
indy-repo-proxy-jaxrs
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy
indy-ftests-repo-proxy
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
test
org.commonjava.indy
indy-repo-proxy-common
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
confset
tar.gz
@@ -1076,38 +1059,6 @@
1.0.0
-
-
- io.dropwizard.metrics
- metrics-core
- ${metricsVersion}
-
-
- io.dropwizard.metrics
- metrics-jvm
- ${metricsVersion}
-
-
- io.dropwizard.metrics
- metrics-healthchecks
- ${metricsVersion}
-
-
- io.dropwizard.metrics
- metrics-graphite
- ${metricsVersion}
-
-
- io.dropwizard.metrics
- metrics-servlets
- ${metricsVersion}
-
-
- io.dropwizard.metrics
- metrics-json
- ${metricsVersion}
-
-
com.internetitem
@@ -1601,6 +1552,28 @@
${logbackContribVersion}
+
+
+ org.commonjava.util
+ o11yphant-honeycomb-api
+ ${o11yphantVersion}
+
+
+ org.commonjava.util
+ o11yphant-honeycomb-core
+ ${o11yphantVersion}
+
+
+ org.commonjava.util
+ o11yphant-metrics-api
+ ${o11yphantVersion}
+
+
+ org.commonjava.util
+ o11yphant-metrics-core
+ ${o11yphantVersion}
+
+
org.commonjava.propulsor
@@ -1919,6 +1892,7 @@
**/.pydevproject
**/Jenkinsfile
**/MAVEN_ENV
+ **/*.cql
diff --git a/rest/api/pom.xml b/rest/api/pom.xml
index c1c3de3ce8..ae2e05ea18 100644
--- a/rest/api/pom.xml
+++ b/rest/api/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy.rest
indy-rest-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-rest-api
diff --git a/rest/api/src/main/resources/META-INF/beans.xml b/rest/api/src/main/resources/META-INF/beans.xml
index 579b8d9900..78fd046fcd 100644
--- a/rest/api/src/main/resources/META-INF/beans.xml
+++ b/rest/api/src/main/resources/META-INF/beans.xml
@@ -1,4 +1,21 @@
+
+
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy.rest
diff --git a/subsys/cassandra/pom.xml b/subsys/cassandra/pom.xml
index 73f1a32b37..33aa834183 100644
--- a/subsys/cassandra/pom.xml
+++ b/subsys/cassandra/pom.xml
@@ -22,7 +22,7 @@
org.commonjava.indy
indy-subsystems
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-subsys-cassandra
diff --git a/subsys/cassandra/src/main/java/org/commonjava/indy/subsys/cassandra/CassandraClient.java b/subsys/cassandra/src/main/java/org/commonjava/indy/subsys/cassandra/CassandraClient.java
index da25e6684e..3bee2dbeef 100644
--- a/subsys/cassandra/src/main/java/org/commonjava/indy/subsys/cassandra/CassandraClient.java
+++ b/subsys/cassandra/src/main/java/org/commonjava/indy/subsys/cassandra/CassandraClient.java
@@ -29,7 +29,7 @@
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
@ApplicationScoped
public class CassandraClient
@@ -127,4 +127,9 @@ public void close()
closed = true;
}
}
+
+ public Map getSessions()
+ {
+ return sessions;
+ }
}
diff --git a/subsys/cpool/pom.xml b/subsys/cpool/pom.xml
index 41337e705f..05af017cf3 100644
--- a/subsys/cpool/pom.xml
+++ b/subsys/cpool/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-subsystems
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-subsys-cpool
@@ -33,6 +33,10 @@
org.commonjava.indy
indy-api
+
+ org.commonjava.util
+ o11yphant-metrics-core
+
io.agroal
agroal-api
diff --git a/subsys/cpool/src/main/java/org/commonjava/indy/subsys/cpool/ConnectionPoolProvider.java b/subsys/cpool/src/main/java/org/commonjava/indy/subsys/cpool/ConnectionPoolProvider.java
index ad6fdcdcd5..445344051b 100644
--- a/subsys/cpool/src/main/java/org/commonjava/indy/subsys/cpool/ConnectionPoolProvider.java
+++ b/subsys/cpool/src/main/java/org/commonjava/indy/subsys/cpool/ConnectionPoolProvider.java
@@ -15,16 +15,15 @@
*/
package org.commonjava.indy.subsys.cpool;
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.health.HealthCheck;
-import com.codahale.metrics.health.HealthCheckRegistry;
import io.agroal.api.AgroalDataSource;
import io.agroal.api.AgroalDataSourceListener;
import io.agroal.api.AgroalDataSourceMetrics;
import io.agroal.api.configuration.AgroalDataSourceConfiguration;
import io.agroal.api.configuration.supplier.AgroalPropertiesReader;
import org.commonjava.indy.action.IndyLifecycleException;
+import org.commonjava.o11yphant.metrics.api.Gauge;
+import org.commonjava.o11yphant.metrics.api.MetricRegistry;
+import org.commonjava.o11yphant.metrics.healthcheck.impl.HealthCheckResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,6 +38,7 @@
import java.util.Properties;
import static javax.naming.Context.INITIAL_CONTEXT_FACTORY;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.name;
@ApplicationScoped
public class ConnectionPoolProvider
@@ -51,9 +51,6 @@ public class ConnectionPoolProvider
@Inject
private MetricRegistry metricRegistry;
- @Inject
- private HealthCheckRegistry healthCheckRegistry;
-
public void init()
throws IndyLifecycleException
{
@@ -110,49 +107,46 @@ public void init()
private void registerMetrics(AgroalDataSourceMetrics agroalMetrics, String name) {
- metricRegistry.register(MetricRegistry.name(name, "acquireCount"), (Gauge) agroalMetrics::acquireCount);
- metricRegistry.register(MetricRegistry.name(name, "creationCount"), (Gauge) agroalMetrics::creationCount);
- metricRegistry.register(MetricRegistry.name(name, "leakDetectionCount"), (Gauge) agroalMetrics::leakDetectionCount);
- metricRegistry.register(MetricRegistry.name(name, "destroyCount"), (Gauge) agroalMetrics::destroyCount);
- metricRegistry.register(MetricRegistry.name(name, "flushCount"), (Gauge) agroalMetrics::flushCount);
- metricRegistry.register(MetricRegistry.name(name, "invalidCount"), (Gauge) agroalMetrics::invalidCount);
- metricRegistry.register(MetricRegistry.name(name, "reapCount"), (Gauge) agroalMetrics::reapCount);
-
- metricRegistry.register(MetricRegistry.name(name, "activeCount"), (Gauge) agroalMetrics::activeCount);
- metricRegistry.register(MetricRegistry.name(name, "availableCount"), (Gauge) agroalMetrics::availableCount);
- metricRegistry.register(MetricRegistry.name(name, "maxUsedCount"), (Gauge) agroalMetrics::maxUsedCount);
- metricRegistry.register(MetricRegistry.name(name, "awaitingCount"), (Gauge) agroalMetrics::awaitingCount);
- metricRegistry.register(MetricRegistry.name(name, "blockingTimeAverage"), (Gauge) agroalMetrics::blockingTimeAverage);
- metricRegistry.register(MetricRegistry.name(name, "blockingTimeMax"), (Gauge) agroalMetrics::blockingTimeMax);
- metricRegistry.register(MetricRegistry.name(name, "blockingTimeTotal"), (Gauge) agroalMetrics::blockingTimeTotal);
- metricRegistry.register(MetricRegistry.name(name, "creationTimeAverage"), (Gauge) agroalMetrics::creationTimeAverage);
- metricRegistry.register(MetricRegistry.name(name, "creationTimeMax"), (Gauge) agroalMetrics::creationTimeMax);
- metricRegistry.register(MetricRegistry.name(name, "creationTimeTotal"), (Gauge) agroalMetrics::creationTimeTotal);
+ metricRegistry.register(name(name, "acquireCount"), (Gauge) agroalMetrics::acquireCount);
+ metricRegistry.register(name(name, "creationCount"), (Gauge) agroalMetrics::creationCount);
+ metricRegistry.register(name(name, "leakDetectionCount"), (Gauge) agroalMetrics::leakDetectionCount);
+ metricRegistry.register(name(name, "destroyCount"), (Gauge) agroalMetrics::destroyCount);
+ metricRegistry.register(name(name, "flushCount"), (Gauge) agroalMetrics::flushCount);
+ metricRegistry.register(name(name, "invalidCount"), (Gauge) agroalMetrics::invalidCount);
+ metricRegistry.register(name(name, "reapCount"), (Gauge) agroalMetrics::reapCount);
+
+ metricRegistry.register(name(name, "activeCount"), (Gauge) agroalMetrics::activeCount);
+ metricRegistry.register(name(name, "availableCount"), (Gauge) agroalMetrics::availableCount);
+ metricRegistry.register(name(name, "maxUsedCount"), (Gauge) agroalMetrics::maxUsedCount);
+ metricRegistry.register(name(name, "awaitingCount"), (Gauge) agroalMetrics::awaitingCount);
+ metricRegistry.register(name(name, "blockingTimeAverage"), (Gauge) agroalMetrics::blockingTimeAverage);
+ metricRegistry.register(name(name, "blockingTimeMax"), (Gauge) agroalMetrics::blockingTimeMax);
+ metricRegistry.register(name(name, "blockingTimeTotal"), (Gauge) agroalMetrics::blockingTimeTotal);
+ metricRegistry.register(name(name, "creationTimeAverage"), (Gauge) agroalMetrics::creationTimeAverage);
+ metricRegistry.register(name(name, "creationTimeMax"), (Gauge) agroalMetrics::creationTimeMax);
+ metricRegistry.register(name(name, "creationTimeTotal"), (Gauge) agroalMetrics::creationTimeTotal);
}
- private void registerHealthChecks(AgroalDataSource ds, String name)
+ private void registerHealthChecks( AgroalDataSource ds, String name )
{
- healthCheckRegistry.register(name, new HealthCheck()
- {
- @Override protected Result check()
+ metricRegistry.registerHealthCheck( name, () -> {
+ try (Connection con = ds.getConnection())
{
- try ( Connection con = ds.getConnection() )
+ if ( con.isValid( 5 ) )
{
- if ( con.isValid(5) )
- {
- return Result.healthy();
- }
- else
- {
- return Result.unhealthy( "validation check failed for DataSource %s", name );
- }
+ return HealthCheckResult.healthy();
}
- catch ( SQLException e )
+ else
{
- return Result.unhealthy( e );
+ return HealthCheckResult.unhealthy(
+ String.format( "validation check failed for DataSource %s", name ) );
}
}
- });
+ catch ( SQLException e )
+ {
+ return HealthCheckResult.unhealthy( e );
+ }
+ } );
}
private static class AgroalDataSourceLogger implements AgroalDataSourceListener
diff --git a/subsys/flatfile/pom.xml b/subsys/flatfile/pom.xml
index 4466c76176..8c221f5478 100644
--- a/subsys/flatfile/pom.xml
+++ b/subsys/flatfile/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-subsystems
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-subsys-flatfile
diff --git a/subsys/git/pom.xml b/subsys/git/pom.xml
index 55581c327b..22e6c651ec 100644
--- a/subsys/git/pom.xml
+++ b/subsys/git/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-subsystems
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-subsys-git
diff --git a/subsys/git/src/main/java/org/commonjava/indy/subsys/git/GitManager.java b/subsys/git/src/main/java/org/commonjava/indy/subsys/git/GitManager.java
index 0de78b85fe..815c835457 100644
--- a/subsys/git/src/main/java/org/commonjava/indy/subsys/git/GitManager.java
+++ b/subsys/git/src/main/java/org/commonjava/indy/subsys/git/GitManager.java
@@ -69,8 +69,8 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
-import static org.apache.commons.lang.StringUtils.isEmpty;
-import static org.apache.commons.lang.StringUtils.join;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
+import static org.apache.commons.lang3.StringUtils.join;
import static org.commonjava.indy.audit.ChangeSummary.SYSTEM_USER;
@ApplicationScoped
diff --git a/subsys/groovy/pom.xml b/subsys/groovy/pom.xml
index b14ec17259..a2d865d6fe 100644
--- a/subsys/groovy/pom.xml
+++ b/subsys/groovy/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-subsystems
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-subsys-groovy
@@ -42,6 +42,10 @@
indy-api
provided
+
+ org.commonjava.util
+ o11yphant-honeycomb-api
+
org.jboss.weld.se
weld-se-core
@@ -65,10 +69,5 @@
indy-subsys-http
test
-
- org.commonjava.indy
- indy-subsys-metrics-reporter
- test
-
diff --git a/subsys/groovy/src/test/java/org/commonjava/indy/subsys/template/fixture/MockStoragePathProvider.java b/subsys/groovy/src/test/java/org/commonjava/indy/subsys/template/fixture/MockStoragePathProvider.java
index d8dc3d7fb7..98a2547008 100644
--- a/subsys/groovy/src/test/java/org/commonjava/indy/subsys/template/fixture/MockStoragePathProvider.java
+++ b/subsys/groovy/src/test/java/org/commonjava/indy/subsys/template/fixture/MockStoragePathProvider.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.subsys.template.fixture;
-import org.commonjava.indy.metrics.system.StoragePathProvider;
+import org.commonjava.o11yphant.metrics.system.StoragePathProvider;
import javax.enterprise.context.ApplicationScoped;
import java.io.File;
diff --git a/subsys/groovy/src/test/java/org/commonjava/indy/subsys/template/fixture/TestProvider.java b/subsys/groovy/src/test/java/org/commonjava/indy/subsys/template/fixture/TestProvider.java
index 59a832c42f..8cb8945b27 100644
--- a/subsys/groovy/src/test/java/org/commonjava/indy/subsys/template/fixture/TestProvider.java
+++ b/subsys/groovy/src/test/java/org/commonjava/indy/subsys/template/fixture/TestProvider.java
@@ -34,6 +34,8 @@
import org.commonjava.maven.galley.spi.event.FileEventManager;
import org.commonjava.maven.galley.spi.nfc.NotFoundCache;
import org.commonjava.maven.galley.transport.htcli.conf.GlobalHttpConfiguration;
+import org.commonjava.o11yphant.honeycomb.config.HoneycombConfiguration;
+import org.commonjava.o11yphant.metrics.sli.GoldenSignalsMetricSet;
import org.junit.rules.TemporaryFolder;
import javax.annotation.PostConstruct;
@@ -174,4 +176,15 @@ public UserLifecycleManager getUserLifecycleManager()
return userLifecycleManager;
}
+ @Produces
+ public HoneycombConfiguration getHoneycombConfiguration()
+ {
+ return null;
+ }
+
+ @Produces
+ public GoldenSignalsMetricSet getGoldenSignalsMetricSet()
+ {
+ return null;
+ }
}
diff --git a/subsys/honeycomb/pom.xml b/subsys/honeycomb/pom.xml
index 042d6aa45d..4089fdc9b8 100644
--- a/subsys/honeycomb/pom.xml
+++ b/subsys/honeycomb/pom.xml
@@ -20,7 +20,7 @@
indy-subsystems
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
@@ -29,8 +29,8 @@
- io.honeycomb.beeline
- beeline-core
+ org.commonjava.util
+ o11yphant-honeycomb-api
org.commonjava.indy
@@ -38,15 +38,11 @@
org.commonjava.indy
- indy-subsys-metrics-core
-
-
- org.jboss.spec.javax.servlet
- jboss-servlet-api_3.0_spec
+ indy-subsys-metrics
org.commonjava.indy
- indy-subsys-metrics-reporter
+ indy-subsys-cassandra
diff --git a/subsys/honeycomb/src/main/conf/conf.d/honeycomb.conf b/subsys/honeycomb/src/main/conf/conf.d/honeycomb.conf
index b495722596..093b8dd5c6 100644
--- a/subsys/honeycomb/src/main/conf/conf.d/honeycomb.conf
+++ b/subsys/honeycomb/src/main/conf/conf.d/honeycomb.conf
@@ -9,3 +9,6 @@
#spans.include=DefaultArtifactStoreQuery,DefaultContentManager,MavenMetadataMerger,getOrderedConcreteStoresInGroup
#spans.exclude=getArtifactStore
+
+# Inject envar to root span fields
+#environment.mappings=envar=honeycomb_var,...
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/HoneycombContextualizer.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/HoneycombContextualizer.java
deleted file mode 100644
index 0fa820ea28..0000000000
--- a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/HoneycombContextualizer.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.subsys.honeycomb;
-
-import io.honeycomb.beeline.tracing.Beeline;
-import io.honeycomb.beeline.tracing.Span;
-import org.commonjava.cdi.util.weft.ThreadContextualizer;
-import org.commonjava.indy.subsys.honeycomb.config.HoneycombConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.inject.Named;
-
-@ApplicationScoped
-@Named
-public class HoneycombContextualizer
- implements ThreadContextualizer
-{
- private static final String THREAD_NAME = "thread.name";
-
- private static final String THREAD_GROUP_NAME = "thread.group.name";
-
- private final Logger logger = LoggerFactory.getLogger( getClass() );
-
- private static ThreadLocal SPAN = new ThreadLocal<>();
-
- @Inject
- private HoneycombManager honeycombManager;
-
- @Inject
- private HoneycombConfiguration configuration;
-
- @Inject
- private IndyTracingContext tracingContext;
-
- @Override
- public String getId()
- {
- return "honeycomb.threadpool.spanner";
- }
-
- @Override
- public Object extractCurrentContext()
- {
- if ( configuration.isEnabled() )
- {
- Beeline beeline = honeycombManager.getBeeline();
- SpanContext ctx = new SpanContext( beeline.getActiveSpan() );
- logger.trace( "Extracting parent-thread context: {}", ctx );
- return ctx;
- }
- return null;
- }
-
- @Override
- public void setChildContext( final Object parentContext )
- {
- if ( configuration.isEnabled() )
- {
- tracingContext.reinitThreadSpans();
-
- logger.trace( "Creating thread-level root span using parent-thread context: {}", parentContext );
- SPAN.set( honeycombManager.startRootTracer( "thread." + Thread.currentThread().getThreadGroup().getName(), (SpanContext) parentContext ) );
- }
- }
-
- @Override
- public void clearContext()
- {
- if ( configuration.isEnabled() )
- {
- Span span = SPAN.get();
- if ( span != null )
- {
- logger.trace( "Closing thread-level root span: {}", span );
- honeycombManager.addFields( span );
- span.addField( THREAD_NAME, Thread.currentThread().getName() );
- span.addField( THREAD_GROUP_NAME, Thread.currentThread().getThreadGroup().getName() );
-
- span.close();
-
- honeycombManager.endTrace();
- }
-
- SPAN.remove();
-
- tracingContext.clearThreadSpans();
- }
- }
-}
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/HoneycombFilter.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/HoneycombFilter.java
deleted file mode 100644
index 7ea6dd9beb..0000000000
--- a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/HoneycombFilter.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.subsys.honeycomb;
-
-import io.honeycomb.beeline.tracing.Span;
-import org.commonjava.indy.subsys.honeycomb.config.HoneycombConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-
-import static org.apache.commons.lang3.StringUtils.isBlank;
-import static org.commonjava.indy.metrics.RequestContextHelper.getContext;
-
-@ApplicationScoped
-public class HoneycombFilter
- implements Filter
-{
- @Inject
- private HoneycombManager honeycombManager;
-
- @Inject
- private HoneycombConfiguration config;
-
- private final Logger logger = LoggerFactory.getLogger( getClass() );
-
- @Override
- public void init( final FilterConfig filterConfig ) throws ServletException
- {
- }
-
- @Override
- public void doFilter( final ServletRequest request, final ServletResponse response, final FilterChain chain )
- throws IOException, ServletException
- {
- logger.trace( "START: {}", getClass().getSimpleName() );
-
- HttpServletRequest hsr = (HttpServletRequest) request;
- logger.debug( "START: {}", hsr.getPathInfo() );
-
- Span rootSpan = null;
- try
- {
- rootSpan = honeycombManager.startRootTracer( getEndpointName( hsr.getMethod(), hsr.getPathInfo() ) );
- if ( rootSpan != null )
- {
- rootSpan.addField( "path_info", hsr.getPathInfo() );
- }
-
- chain.doFilter( request, response );
- }
- finally
- {
- logger.debug( "END: {}", hsr.getPathInfo() );
- if ( rootSpan != null )
- {
- honeycombManager.addFields( rootSpan );
- rootSpan.close();
- honeycombManager.endTrace();
- }
-
- logger.trace( "END: {}", getClass().getSimpleName() );
- }
- }
-
- private String getEndpointName( String method, String pathInfo )
- {
- StringBuilder sb = new StringBuilder( method + "_" );
- String[] toks = pathInfo.split( "/" );
- for ( String s : toks )
- {
- if ( isBlank( s ) || "api".equals( s ) )
- {
- continue;
- }
- sb.append( s );
- if ( "admin".equals( s ) )
- {
- sb.append( "_" );
- }
- else
- {
- break;
- }
- }
- return sb.toString();
- }
-
- @Override
- public void destroy()
- {
- }
-
-}
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/HoneycombManager.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/HoneycombManager.java
deleted file mode 100644
index 553b788bc8..0000000000
--- a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/HoneycombManager.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.subsys.honeycomb;
-
-import io.honeycomb.beeline.tracing.Beeline;
-import io.honeycomb.beeline.tracing.Span;
-import io.honeycomb.beeline.tracing.SpanBuilderFactory;
-import io.honeycomb.beeline.tracing.SpanPostProcessor;
-import io.honeycomb.beeline.tracing.Tracer;
-import io.honeycomb.beeline.tracing.Tracing;
-import io.honeycomb.beeline.tracing.propagation.PropagationContext;
-import io.honeycomb.beeline.tracing.sampling.Sampling;
-import io.honeycomb.libhoney.HoneyClient;
-import io.honeycomb.libhoney.LibHoney;
-import io.honeycomb.libhoney.responses.ResponseObservable;
-import io.honeycomb.libhoney.transport.impl.ConsoleTransport;
-import org.commonjava.cdi.util.weft.ThreadContext;
-import org.commonjava.indy.metrics.RequestContextHelper;
-import org.commonjava.indy.subsys.honeycomb.config.HoneycombConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.annotation.PostConstruct;
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-
-import java.util.Map;
-
-import static org.commonjava.indy.metrics.RequestContextHelper.CUMULATIVE_COUNTS;
-import static org.commonjava.indy.metrics.RequestContextHelper.CUMULATIVE_TIMINGS;
-import static org.commonjava.indy.metrics.RequestContextHelper.REQUEST_PARENT_SPAN;
-import static org.commonjava.indy.metrics.RequestContextHelper.TRACE_ID;
-import static org.commonjava.indy.metrics.RequestContextHelper.getContext;
-
-@ApplicationScoped
-public class HoneycombManager
-{
- private final Logger logger = LoggerFactory.getLogger( getClass() );
-
- private HoneyClient client;
-
- private Beeline beeline;
-
- @Inject
- private HoneycombContextualizer honeycombContextualizer;
-
- @Inject
- private HoneycombConfiguration configuration;
-
- @Inject
- private IndyTraceSampler traceSampler;
-
- @Inject
- private IndyTracingContext tracingContext;
-
- @Inject
- private IndyEventPostProcessor eventPostProcessor;
-
- public HoneycombManager()
- {
- }
-
- @PostConstruct
- public void init()
- {
- if ( configuration.isEnabled() )
- {
- String writeKey = configuration.getWriteKey();
- String dataset = configuration.getDataset();
-
- logger.debug( "Init Honeycomb manager, dataset: {}", dataset );
- client = new HoneyClient( LibHoney.options().setDataset( dataset ).setWriteKey( writeKey )
- .setEventPostProcessor( eventPostProcessor ).build() ); //, new ConsoleTransport( new ResponseObservable() ) );
- LibHoney.setDefault( client );
-
- SpanPostProcessor postProcessor = Tracing.createSpanProcessor( client, Sampling.alwaysSampler() );
- SpanBuilderFactory factory = Tracing.createSpanBuilderFactory( postProcessor, traceSampler );
-
- Tracer tracer = Tracing.createTracer( factory, tracingContext );
- beeline = Tracing.createBeeline( tracer, factory );
- }
- }
-
- public HoneyClient getClient()
- {
- return client;
- }
-
- public Beeline getBeeline()
- {
- return beeline;
- }
-
- public Span startRootTracer( String spanName )
- {
- return startRootTracer( spanName, null );
- }
-
- public Span startRootTracer( String spanName, SpanContext parentContext )
- {
- Beeline beeline = getBeeline();
- if ( beeline != null )
- {
- Span span = null;
- if ( parentContext != null )
- {
- PropagationContext propContext =
- new PropagationContext( parentContext.getTraceId(), parentContext.getParentSpanId(), null,
- null );
-
- logger.debug( "Starting root span: {} based on parent context: {}, thread: {}", spanName, propContext, Thread.currentThread().getId() );
- span = beeline.getSpanBuilderFactory()
- .createBuilder()
- .setParentContext( propContext )
- .setSpanName( spanName )
- .setServiceName( "indy" )
- .build();
-
- }
- else
- {
- String traceId = RequestContextHelper.getContext( TRACE_ID );
- String parentId = RequestContextHelper.getContext( REQUEST_PARENT_SPAN );
-
- span = beeline.getSpanBuilderFactory().createBuilder()
- // .setParentContext( parentContext )
- .setSpanName( spanName ).setServiceName( "indy" ).build();
- }
-
- span = beeline.getTracer().startTrace( span );
-
- logger.debug( "Started root span: {} (ID: {}, trace ID: {} and parent: {}, thread: {})", span,
- span.getSpanId(), span.getTraceId(), span.getParentSpanId(),
- Thread.currentThread().getId() );
-
- span.markStart();
- return span;
- }
-
- return null;
- }
-
- public Span startChildSpan( final String spanName )
- {
- Beeline beeline = getBeeline();
- if ( beeline != null )
- {
- Span span = null;
- if ( tracingContext.isEmpty() )
- {
- logger.debug( "Parent span from context: {} is a NO-OP, starting root trace instead in: {}", tracingContext, Thread.currentThread().getId() );
- span = startRootTracer( spanName );
- }
- else
- {
- span = beeline.startChildSpan( spanName );
- }
-
- logger.debug( "Child span: {} (id: {}, trace: {}, parent: {}, thread: {})", span,
- span.getSpanId(), span.getTraceId(), span.getParentSpanId(),
- Thread.currentThread().getId() );
-
- span.markStart();
- return span;
- }
-
- return null;
- }
-
- public void addFields( Span span )
- {
- if ( beeline != null )
- {
- ThreadContext ctx = ThreadContext.getContext( false );
- if ( ctx != null )
- {
- configuration.getFieldSet().forEach( field -> {
- Object value = getContext( field );
- if ( value != null )
- {
- span.addField( field, value );
- }
- } );
-
- Map cumulativeTimings = (Map) ctx.get( CUMULATIVE_TIMINGS );
- if ( cumulativeTimings != null )
- {
- cumulativeTimings.forEach( ( k, v ) -> span.addField( CUMULATIVE_TIMINGS + "." + k, v ) );
- }
-
- Map cumulativeCounts = (Map) ctx.get( CUMULATIVE_COUNTS );
- if ( cumulativeCounts != null )
- {
- cumulativeCounts.forEach( ( k, v ) -> span.addField( CUMULATIVE_COUNTS + "." + k, v ) );
- }
- }
- }
- }
-
- public void endTrace()
- {
- if ( beeline != null )
- {
- logger.debug( "Ending trace: {}", Thread.currentThread().getId() );
- getBeeline().getTracer().endTrace();
- }
- }
-
-}
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyCassandraConnectionRootSpanFields.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyCassandraConnectionRootSpanFields.java
new file mode 100644
index 0000000000..2de6dc9f6b
--- /dev/null
+++ b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyCassandraConnectionRootSpanFields.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.subsys.honeycomb;
+
+import com.datastax.driver.core.Session;
+import org.commonjava.indy.subsys.cassandra.CassandraClient;
+import org.commonjava.o11yphant.honeycomb.impl.CassandraConnectionRootSpanFields;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import java.util.Collections;
+import java.util.Map;
+
+@ApplicationScoped
+public class IndyCassandraConnectionRootSpanFields
+ extends CassandraConnectionRootSpanFields
+{
+
+ private final Map sessions;
+
+ @Inject
+ public IndyCassandraConnectionRootSpanFields( CassandraClient cassandraClient )
+ {
+ this.sessions = Collections.unmodifiableMap( cassandraClient.getSessions() );
+ }
+
+ @Override
+ protected Map getSessions()
+ {
+ return sessions;
+ }
+}
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/SpanContext.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyCustomTraceIdProvider.java
similarity index 50%
rename from subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/SpanContext.java
rename to subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyCustomTraceIdProvider.java
index 526296fd74..24a40f6c69 100644
--- a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/SpanContext.java
+++ b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyCustomTraceIdProvider.java
@@ -15,39 +15,26 @@
*/
package org.commonjava.indy.subsys.honeycomb;
-import io.honeycomb.beeline.tracing.Span;
+import org.commonjava.o11yphant.honeycomb.CustomTraceIdProvider;
+import org.commonjava.o11yphant.metrics.RequestContextHelper;
-public class SpanContext
-{
- private String traceId;
-
- private String parentSpanId;
-
- public SpanContext( final String traceId, final String parentSpanId )
- {
- this.traceId = traceId;
- this.parentSpanId = parentSpanId;
- }
-
- public SpanContext( final Span span )
- {
- this.traceId = span.getTraceId();
- this.parentSpanId = span.getSpanId();
- }
+import javax.enterprise.context.ApplicationScoped;
- public String getParentSpanId()
- {
- return parentSpanId;
- }
-
- public String getTraceId()
- {
- return traceId;
- }
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
+import static org.commonjava.o11yphant.honeycomb.util.TraceIdUtils.getUUIDTraceId;
+import static org.commonjava.o11yphant.metrics.RequestContextConstants.TRACE_ID;
+@ApplicationScoped
+public class IndyCustomTraceIdProvider implements CustomTraceIdProvider
+{
@Override
- public String toString()
+ public String generateId()
{
- return "SpanContext{" + "traceId='" + traceId + '\'' + ", parentSpanId='" + parentSpanId + '\'' + '}';
+ String traceId = RequestContextHelper.getContext( TRACE_ID );
+ if ( isNotBlank(traceId ))
+ {
+ return traceId;
+ }
+ return getUUIDTraceId();
}
}
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyEventPostProcessor.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyEventPostProcessor.java
deleted file mode 100644
index 5d1c38222e..0000000000
--- a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyEventPostProcessor.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.subsys.honeycomb;
-
-import com.codahale.metrics.Meter;
-import io.honeycomb.libhoney.EventPostProcessor;
-import io.honeycomb.libhoney.eventdata.EventData;
-import org.commonjava.indy.metrics.IndyMetricsManager;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-
-import static org.commonjava.indy.metrics.IndyMetricsConstants.METER;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getDefaultName;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getName;
-
-@ApplicationScoped
-public class IndyEventPostProcessor implements EventPostProcessor
-{
-
- private final Logger logger = LoggerFactory.getLogger( getClass() );
-
- @Inject
- private IndyMetricsManager metricsManager;
-
- @Inject
- private IndyMetricsConfig metricsConfig;
-
- private final static String TRANSFER_HONEYCOMB_EVENT = "indy.transferred.honeycomb.event";
-
- @Override
- public void process( EventData> eventData )
- {
- if ( metricsConfig != null && metricsManager != null )
- {
- String name = getName( metricsConfig.getNodePrefix(), TRANSFER_HONEYCOMB_EVENT,
- getDefaultName( IndyEventPostProcessor.class, "process" ), METER );
- Meter meter = metricsManager.getMeter( name );
- meter.mark();
- }
- }
-}
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyTraceSampler.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyTraceSampler.java
deleted file mode 100644
index 158c8fd704..0000000000
--- a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyTraceSampler.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.subsys.honeycomb;
-
-import io.honeycomb.beeline.tracing.Span;
-import io.honeycomb.beeline.tracing.sampling.TraceSampler;
-import org.commonjava.cdi.util.weft.ThreadContext;
-import org.commonjava.indy.metrics.TrafficClassifier;
-import org.commonjava.indy.subsys.honeycomb.config.HoneycombConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.Random;
-
-import static org.commonjava.indy.subsys.honeycomb.interceptor.HoneycombInterceptorUtils.SAMPLE_OVERRIDE;
-
-@ApplicationScoped
-public class IndyTraceSampler
- implements TraceSampler
-{
- private final Random random = new Random();
-
- private final Logger logger = LoggerFactory.getLogger( getClass() );
-
- @Inject
- private TrafficClassifier classifier;
-
- @Inject
- private HoneycombConfiguration configuration;
-
- @Override
- public int sample( final String input )
- {
- ThreadContext ctx = ThreadContext.getContext( false );
- if ( ctx == null )
- {
- logger.debug( "No ThreadContext for functional diagnosis; skipping span: {}", input );
- return 0;
- }
-
- if ( ctx.get( SAMPLE_OVERRIDE ) != null )
- {
- logger.debug( "Including span via override (span: {})", input );
- return 1;
- }
-
- List functionClassifiers = classifier.getCachedFunctionClassifiers();
- Integer rate = configuration.getBaseSampleRate();
-
- rate = configuration.getSampleRate( input );
-
- if ( rate == configuration.getBaseSampleRate() && functionClassifiers != null )
- {
- Optional mostAggressive = functionClassifiers.stream()
- .map( classifier -> configuration.getSampleRate(
- classifier ) )
- .filter( theRate -> theRate > 0 )
- .min( ( one, two ) -> two - one );
-
- if ( mostAggressive.isPresent() )
- {
- rate = mostAggressive.get();
- }
- }
-
- if ( rate == 1 || Math.abs( random.nextInt() ) % rate == 0 )
- {
- logger.debug( "Including span due to sampling rate: {} (span: {})", rate, input );
- return 1;
- }
-
- logger.debug( "Skipping span due to sampling rate: {} (span: {})", rate, input );
- return 0;
- }
-}
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyTracingContext.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyTracingContext.java
deleted file mode 100644
index 66ac05d4a0..0000000000
--- a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/IndyTracingContext.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.subsys.honeycomb;
-
-import io.honeycomb.beeline.tracing.TracerSpan;
-import io.honeycomb.beeline.tracing.context.TracingContext;
-import org.commonjava.indy.subsys.honeycomb.config.HoneycombConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import java.util.ArrayDeque;
-import java.util.Deque;
-
-@ApplicationScoped
-public class IndyTracingContext
- implements TracingContext
-{
- private static ThreadLocal> SPANS = ThreadLocal.withInitial( ArrayDeque::new );
-
- private Logger logger = LoggerFactory.getLogger( getClass() );
-
- @Inject
- private HoneycombConfiguration config;
-
- public void reinitThreadSpans()
- {
- if ( config.isEnabled() )
- {
- logger.debug( "Clearing spans in current thread: {}", Thread.currentThread().getId() );
- SPANS.set( new ArrayDeque<>() );
- }
- }
-
- public void clearThreadSpans()
- {
- if ( config.isEnabled() )
- {
- logger.debug( "Clearing context...SPANs in current thread: {} (thread: {})", SPANS.get().size(),
- Thread.currentThread().getId() );
- TracerSpan tracerSpan = SPANS.get().peekLast();
- if ( tracerSpan != null )
- {
- tracerSpan.close();
- }
-
- logger.debug( "Clearing spans deque in: {}", Thread.currentThread().getId() );
- SPANS.remove();
- }
- }
-
- @Override
- public Deque get()
- {
- return SPANS.get();
- }
-
- @Override
- public int size()
- {
- logger.debug( "SPANs in current thread: {} (thread: {})", SPANS.get().size(), Thread.currentThread().getId() );
- return SPANS.get().size();
- }
-
- @Override
- public TracerSpan peekLast()
- {
- logger.debug( "SPANs in current thread: {} (thread: {})", SPANS.get().size(), Thread.currentThread().getId() );
- return SPANS.get().peekLast();
- }
-
- @Override
- public TracerSpan peekFirst()
- {
- logger.debug( "SPANs in current thread: {} (thread: {})", SPANS.get().size(), Thread.currentThread().getId() );
- return SPANS.get().peekFirst();
- }
-
- @Override
- public boolean isEmpty()
- {
- Deque spans = SPANS.get();
- logger.debug( "SPANs in current thread: {} (thread: {})", spans.size(), Thread.currentThread().getId() );
- boolean empty = spans.isEmpty();
-
- logger.debug( "SPANs.isEmpty() ? {}", empty );
- return empty;
- }
-
- @Override
- public void push( final TracerSpan span )
- {
- logger.debug( "SPANs in current thread: {} (thread: {})", SPANS.get().size(), Thread.currentThread().getId() );
- SPANS.get().push( span );
- }
-
- @Override
- public TracerSpan pop()
- {
- logger.debug( "Pre-POP SPANs in current thread: {} (thread: {})", SPANS.get().size(), Thread.currentThread().getId() );
-
- TracerSpan span = SPANS.get().pop();
-
- logger.debug( "Post-POP SPANs in current thread: {} (thread: {})", SPANS.get().size(), Thread.currentThread().getId() );
- return span;
- }
-}
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/config/HoneycombConfiguration.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/config/HoneycombConfiguration.java
deleted file mode 100644
index fcc5dcfbf3..0000000000
--- a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/config/HoneycombConfiguration.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.subsys.honeycomb.config;
-
-import org.commonjava.indy.conf.IndyConfigInfo;
-import org.commonjava.propulsor.config.ConfigurationException;
-import org.commonjava.propulsor.config.annotation.SectionName;
-import org.commonjava.propulsor.config.section.MapSectionListener;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.enterprise.context.ApplicationScoped;
-import java.io.InputStream;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import static org.commonjava.indy.metrics.RequestContextHelper.CLIENT_ADDR;
-import static org.commonjava.indy.metrics.RequestContextHelper.CONTENT_TRACKING_ID;
-import static org.commonjava.indy.metrics.RequestContextHelper.HTTP_METHOD;
-import static org.commonjava.indy.metrics.RequestContextHelper.HTTP_STATUS;
-import static org.commonjava.indy.metrics.RequestContextHelper.PACKAGE_TYPE;
-import static org.commonjava.indy.metrics.RequestContextHelper.PATH;
-import static org.commonjava.indy.metrics.RequestContextHelper.TRACE_ID;
-import static org.commonjava.indy.metrics.RequestContextHelper.REQUEST_LATENCY_MILLIS;
-import static org.commonjava.indy.metrics.RequestContextHelper.REST_ENDPOINT_PATH;
-
-@SectionName( "honeycomb" )
-@ApplicationScoped
-public class HoneycombConfiguration
- extends MapSectionListener
- implements IndyConfigInfo
-{
- private static final Set DEFAULT_FIELDS = Collections.unmodifiableSet( new HashSet<>(
- Arrays.asList( CONTENT_TRACKING_ID, HTTP_METHOD, HTTP_STATUS, TRACE_ID, CLIENT_ADDR, PATH, PACKAGE_TYPE,
- REST_ENDPOINT_PATH, REQUEST_LATENCY_MILLIS ) ) );
-
- private static final String ENABLED = "enabled";
-
- private static final String WRITE_KEY = "write.key";
-
- private static final String DATASET = "dataset";
-
- private static final String FIELDS = "fields";
-
- private static final String BASE_SAMPLE_RATE = "base.sample.rate";
-
- private static final String SAMPLE_PREFIX = "sample.";
-
- private static final Integer DEFAULT_BASE_SAMPLE_RATE = 100;
-
- private boolean enabled;
-
- private String writeKey;
-
- private String dataset;
-
- private Integer baseSampleRate;
-
- private Map spanRates = new HashMap<>();
-
- private Set spansIncluded = Collections.emptySet();
-
- private Set spansExcluded = Collections.emptySet();
-
- private Set fields;
-
- public HoneycombConfiguration()
- {
- }
-
- public boolean isEnabled()
- {
- return enabled;
- }
-
- @Override
- public void sectionStarted( final String name )
- throws ConfigurationException
- {
- // NOP; just block map init in the underlying implementation.
- }
-
- @Override
- public void parameter( final String name, final String value )
- throws ConfigurationException
- {
- switch(name)
- {
- case ENABLED:
- this.enabled = Boolean.TRUE.equals( Boolean.parseBoolean( value.trim() ) );
- break;
- case WRITE_KEY:
- this.writeKey = value.trim();
- break;
- case DATASET:
- this.dataset = value.trim();
- break;
- case BASE_SAMPLE_RATE:
- this.baseSampleRate = Integer.parseInt( value.trim() );
- break;
- case FIELDS:
- this.fields = Collections.unmodifiableSet(
- new HashSet<>( Arrays.asList( value.trim().split( "\\s*,\\s*" ) ) ) );
- break;
- default:
- if ( name.startsWith( SAMPLE_PREFIX ) && name.length() > SAMPLE_PREFIX.length() )
- {
- spanRates.put( name.substring( SAMPLE_PREFIX.length() ).trim(), Integer.parseInt( value ) );
- }
- }
- }
-
- public String getWriteKey()
- {
- return writeKey;
- }
-
- public String getDataset()
- {
- return dataset;
- }
-
- @Override
- public String getDefaultConfigFileName()
- {
- return "honeycomb.conf";
- }
-
- @Override
- public InputStream getDefaultConfig()
- {
- return Thread.currentThread().getContextClassLoader().getResourceAsStream( "default-honeycomb.conf" );
- }
-
- public Integer getBaseSampleRate()
- {
- return baseSampleRate == null ? DEFAULT_BASE_SAMPLE_RATE : baseSampleRate;
- }
-
- public int getSampleRate( Method method )
- {
- Logger logger = LoggerFactory.getLogger( getClass() );
- if ( !spanRates.isEmpty() )
- {
- String[] keys = {
- method.getName(),
- method.getDeclaringClass().getSimpleName() + "." + method.getName(),
- method.getDeclaringClass().getName() + "." + method.getName(),
- method.getDeclaringClass().getSimpleName(),
- method.getDeclaringClass().getName()
- };
-
- for( String key: keys )
- {
- Integer rate = spanRates.get( key );
- if ( rate != null )
- {
- logger.trace( "Found sampling rate for: {} = {}", key, rate );
- return rate;
- }
- }
- }
-
- logger.trace( "Returning base sampling rate for: {} = {}", method, getBaseSampleRate() );
- return getBaseSampleRate();
- }
-
- public Set getFieldSet()
- {
- return fields == null ? DEFAULT_FIELDS : fields;
- }
-
- public Integer getSampleRate( final String classifier )
- {
- Logger logger = LoggerFactory.getLogger( getClass() );
-
- Integer rate = spanRates.get( classifier );
- if ( rate != null )
- {
- logger.trace( "Found sampling rate for: {} = {}", classifier, rate );
- return rate;
- }
-
- String[] parts = classifier.split( "\\." );
- for ( String part : parts )
- {
- rate = spanRates.get( part );
- if ( rate != null )
- {
- logger.trace( "Found sampling rate for: {} = {}", part, rate );
- return rate;
- }
- }
-
- StringBuilder sb = new StringBuilder();
- for ( int i = parts.length; i > 0; i-- )
- {
- sb.setLength( 0 );
- for ( int j = 0; j < i; j++ )
- {
- if ( sb.length() > 0 )
- {
- sb.append( '.' );
- }
- sb.append( parts[j] );
- }
-
- rate = spanRates.get( sb.toString() );
- if ( rate != null )
- {
- logger.trace( "Found sampling rate for: {} = {}", sb, rate );
- return rate;
- }
- }
-
- logger.trace( "Returning base sampling rate for: {} = {}", classifier, getBaseSampleRate() );
- return getBaseSampleRate();
- }
-}
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/config/IndyHoneycombConfiguration.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/config/IndyHoneycombConfiguration.java
new file mode 100644
index 0000000000..05c41de515
--- /dev/null
+++ b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/config/IndyHoneycombConfiguration.java
@@ -0,0 +1,212 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.subsys.honeycomb.config;
+
+import org.commonjava.indy.conf.IndyConfigInfo;
+import org.commonjava.indy.conf.IndyConfiguration;
+import org.commonjava.o11yphant.honeycomb.config.HoneycombConfiguration;
+import org.commonjava.propulsor.config.ConfigurationException;
+import org.commonjava.propulsor.config.annotation.SectionName;
+import org.commonjava.propulsor.config.section.MapSectionListener;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+@SectionName( "honeycomb" )
+@ApplicationScoped
+public class IndyHoneycombConfiguration
+ extends MapSectionListener
+ implements IndyConfigInfo, HoneycombConfiguration
+{
+ @Inject
+ private IndyConfiguration indyConfiguration;
+
+ private static final String ENABLED = "enabled";
+
+ private static final String CONSOLE_TRANSPORT = "console.transport";
+
+ private static final String WRITE_KEY = "write.key";
+
+ private static final String DATASET = "dataset";
+
+ private static final String FIELDS = "fields";
+
+ private static final String BASE_SAMPLE_RATE = "base.sample.rate";
+
+ private static final String SAMPLE_PREFIX = "sample.";
+
+ private static final String ENVIRONMENT_MAPPINGS = "environment.mappings";
+
+ private static final String CP_NAMES = "cp.names";
+
+ private static final Integer DEFAULT_BASE_SAMPLE_RATE = 100;
+
+ private boolean enabled;
+
+ private boolean consoleTransport;
+
+ private String writeKey;
+
+ private String dataset;
+
+ private Integer baseSampleRate;
+
+ private Map spanRates = new HashMap<>();
+
+ private Set spansIncluded = Collections.emptySet();
+
+ private Set spansExcluded = Collections.emptySet();
+
+ private Set fields;
+
+ private String environmentMappings;
+
+ private String cpNames;
+
+ public IndyHoneycombConfiguration()
+ {
+ }
+
+ @Override
+ public Map getSpanRates()
+ {
+ return spanRates;
+ }
+
+ @Override
+ public boolean isEnabled()
+ {
+ return enabled;
+ }
+
+ @Override
+ public boolean isConsoleTransport()
+ {
+ return consoleTransport;
+ }
+
+ @Override
+ public String getServiceName()
+ {
+ return "indy";
+ }
+
+ @Override
+ public void sectionStarted( final String name ) throws ConfigurationException
+ {
+ // NOP; just block map init in the underlying implementation.
+ }
+
+ @Override
+ public void parameter( final String name, final String value ) throws ConfigurationException
+ {
+ switch ( name )
+ {
+ case ENABLED:
+ this.enabled = Boolean.TRUE.equals( Boolean.parseBoolean( value.trim() ) );
+ break;
+ case WRITE_KEY:
+ this.writeKey = value.trim();
+ break;
+ case DATASET:
+ this.dataset = value.trim();
+ break;
+ case BASE_SAMPLE_RATE:
+ this.baseSampleRate = Integer.parseInt( value.trim() );
+ break;
+ case ENVIRONMENT_MAPPINGS:
+ this.environmentMappings = value.trim();
+ break;
+ case CP_NAMES:
+ this.cpNames = value.trim();
+ break;
+ case FIELDS:
+ this.fields = Collections.unmodifiableSet(
+ new HashSet<>( Arrays.asList( value.trim().split( "\\s*,\\s*" ) ) ) );
+ break;
+ case CONSOLE_TRANSPORT:
+ this.consoleTransport = Boolean.parseBoolean( value.trim() );
+ break;
+ default:
+ if ( name.startsWith( SAMPLE_PREFIX ) && name.length() > SAMPLE_PREFIX.length() )
+ {
+ spanRates.put( name.substring( SAMPLE_PREFIX.length() ).trim(), Integer.parseInt( value ) );
+ }
+ }
+ }
+
+ @Override
+ public String getWriteKey()
+ {
+ return writeKey;
+ }
+
+ @Override
+ public String getDataset()
+ {
+ return dataset;
+ }
+
+ @Override
+ public String getDefaultConfigFileName()
+ {
+ return "honeycomb.conf";
+ }
+
+ @Override
+ public InputStream getDefaultConfig()
+ {
+ return Thread.currentThread().getContextClassLoader().getResourceAsStream( "default-honeycomb.conf" );
+ }
+
+ @Override
+ public Integer getBaseSampleRate()
+ {
+ return baseSampleRate == null ? DEFAULT_BASE_SAMPLE_RATE : baseSampleRate;
+ }
+
+ @Override
+ public Set getFieldSet()
+ {
+ return fields == null ? DEFAULT_FIELDS : fields;
+ }
+
+ @Override
+ public String getEnvironmentMappings()
+ {
+ return environmentMappings;
+ }
+
+ @Override
+ public String getCPNames()
+ {
+ return cpNames;
+ }
+
+ @Override
+ public String getNodeId()
+ {
+ return indyConfiguration.getNodeId();
+ }
+
+}
diff --git a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/interceptor/HoneycombInterceptorUtils.java b/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/interceptor/HoneycombInterceptorUtils.java
deleted file mode 100644
index 7d52795235..0000000000
--- a/subsys/honeycomb/src/main/java/org/commonjava/indy/subsys/honeycomb/interceptor/HoneycombInterceptorUtils.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.subsys.honeycomb.interceptor;
-
-import io.honeycomb.beeline.tracing.Span;
-import org.commonjava.cdi.util.weft.ThreadContext;
-import org.commonjava.indy.measure.annotation.MetricWrapperNamed;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.interceptor.InvocationContext;
-import java.lang.reflect.Method;
-import java.lang.reflect.Parameter;
-import java.util.LinkedList;
-import java.util.function.Supplier;
-
-public class HoneycombInterceptorUtils
-{
-
- public static final String SAMPLE_OVERRIDE = "honeycomb.sample-override";
-
- public static String getMetricNameFromParam( InvocationContext context )
- {
- String name = null;
-
- Method method = context.getMethod();
- Parameter[] parameters = method.getParameters();
- for ( int i=0; i
org.commonjava.indy
indy-subsystems
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-subsys-http
diff --git a/subsys/http/src/main/java/org/commonjava/indy/subsys/http/util/UserPass.java b/subsys/http/src/main/java/org/commonjava/indy/subsys/http/util/UserPass.java
index 4f7df8df4d..11f5a58d1a 100644
--- a/subsys/http/src/main/java/org/commonjava/indy/subsys/http/util/UserPass.java
+++ b/subsys/http/src/main/java/org/commonjava/indy/subsys/http/util/UserPass.java
@@ -16,7 +16,7 @@
package org.commonjava.indy.subsys.http.util;
import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.http.Header;
import org.apache.http.HttpRequest;
import org.commonjava.indy.util.ApplicationHeader;
diff --git a/subsys/infinispan/pom.xml b/subsys/infinispan/pom.xml
index c9ef021f8d..61be429492 100644
--- a/subsys/infinispan/pom.xml
+++ b/subsys/infinispan/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-subsystems
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-subsys-infinispan
@@ -39,11 +39,7 @@
org.commonjava.indy
- indy-subsys-metrics-core
-
-
- org.commonjava.indy
- indy-subsys-metrics-reporter
+ indy-subsys-metrics
org.infinispan
diff --git a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/BasicCacheHandle.java b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/BasicCacheHandle.java
index 3abfe44395..d91f77bf9c 100644
--- a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/BasicCacheHandle.java
+++ b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/BasicCacheHandle.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.subsys.infinispan;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.infinispan.commons.api.BasicCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -24,7 +24,7 @@
import java.util.function.Function;
import java.util.function.Supplier;
-import static com.codahale.metrics.MetricRegistry.name;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.name;
public class BasicCacheHandle
{
@@ -32,7 +32,7 @@ public class BasicCacheHandle
protected BasicCache cache;
- protected IndyMetricsManager metricsManager;
+ protected DefaultMetricsManager metricsManager;
private String metricPrefix;
@@ -52,7 +52,7 @@ protected BasicCacheHandle()
{
}
- protected BasicCacheHandle( String named, BasicCache cache, IndyMetricsManager metricsManager, String metricPrefix )
+ protected BasicCacheHandle( String named, BasicCache cache, DefaultMetricsManager metricsManager, String metricPrefix )
{
this.name = named;
this.cache = cache;
diff --git a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/CacheHandle.java b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/CacheHandle.java
index a8a8f0c63f..3a4f70e18f 100644
--- a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/CacheHandle.java
+++ b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/CacheHandle.java
@@ -15,8 +15,8 @@
*/
package org.commonjava.indy.subsys.infinispan;
-import org.apache.commons.lang.StringUtils;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.apache.commons.lang3.StringUtils;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.infinispan.Cache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,7 +37,7 @@ public class CacheHandle extends BasicCacheHandle
{
protected CacheHandle(){}
- public CacheHandle( String named, Cache cache, IndyMetricsManager metricsManager, String metricPrefix )
+ public CacheHandle( String named, Cache cache, DefaultMetricsManager metricsManager, String metricPrefix )
{
super( named, cache, metricsManager, metricPrefix );
}
diff --git a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/CacheProducer.java b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/CacheProducer.java
index f04b6f2f41..2098c820a9 100644
--- a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/CacheProducer.java
+++ b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/CacheProducer.java
@@ -23,8 +23,8 @@
import org.commonjava.indy.action.IndyLifecycleException;
import org.commonjava.indy.action.ShutdownAction;
import org.commonjava.indy.conf.IndyConfiguration;
-import org.commonjava.indy.metrics.IndyMetricsManager;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.indy.subsys.infinispan.config.ISPNClusterConfiguration;
import org.commonjava.indy.subsys.infinispan.config.ISPNRemoteConfiguration;
import org.infinispan.Cache;
@@ -55,9 +55,8 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getSupername;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.getSupername;
import static org.commonjava.indy.subsys.infinispan.metrics.IspnCheckRegistrySet.INDY_METRIC_ISPN;
/**
@@ -81,7 +80,7 @@ public class CacheProducer
private IndyConfiguration indyConfiguration;
@Inject
- private IndyMetricsManager metricsManager;
+ private DefaultMetricsManager metricsManager;
@Inject
private IndyMetricsConfig metricsConfig;
diff --git a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/RemoteCacheHandle.java b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/RemoteCacheHandle.java
index aadb9e1683..34d10d4373 100644
--- a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/RemoteCacheHandle.java
+++ b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/RemoteCacheHandle.java
@@ -15,15 +15,15 @@
*/
package org.commonjava.indy.subsys.infinispan;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.DefaultMetricsManager;
import org.infinispan.client.hotrod.RemoteCache;
-import static com.codahale.metrics.MetricRegistry.name;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.name;
public class RemoteCacheHandle extends BasicCacheHandle
{
- public RemoteCacheHandle( String named, RemoteCache cache, IndyMetricsManager metricsManager, String metricPrefix )
+ public RemoteCacheHandle( String named, RemoteCache cache, DefaultMetricsManager metricsManager, String metricPrefix )
{
super( named, cache, metricsManager, metricPrefix );
}
diff --git a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/config/ISPNClusterConfiguration.java b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/config/ISPNClusterConfiguration.java
index 77042a8b8c..0d48d11bd3 100644
--- a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/config/ISPNClusterConfiguration.java
+++ b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/config/ISPNClusterConfiguration.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.subsys.infinispan.config;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.conf.IndyConfigInfo;
import org.commonjava.indy.conf.SystemPropertyProvider;
import org.commonjava.propulsor.config.annotation.ConfigName;
diff --git a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/config/ISPNDBConfiguration.java b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/config/ISPNDBConfiguration.java
index f5e5836181..4210feaa30 100644
--- a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/config/ISPNDBConfiguration.java
+++ b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/config/ISPNDBConfiguration.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.subsys.infinispan.config;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.conf.IndyConfigInfo;
import org.commonjava.indy.conf.SystemPropertyProvider;
import org.commonjava.propulsor.config.annotation.ConfigName;
diff --git a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/metrics/IspnCheckRegistrySet.java b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/metrics/IspnCheckRegistrySet.java
index 4dc65d5cca..e0ad647880 100644
--- a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/metrics/IspnCheckRegistrySet.java
+++ b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/metrics/IspnCheckRegistrySet.java
@@ -15,9 +15,9 @@
*/
package org.commonjava.indy.subsys.infinispan.metrics;
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.Metric;
-import com.codahale.metrics.MetricSet;
+import org.commonjava.o11yphant.metrics.api.Gauge;
+import org.commonjava.o11yphant.metrics.api.Metric;
+import org.commonjava.o11yphant.metrics.api.MetricSet;
import org.infinispan.AdvancedCache;
import org.infinispan.Cache;
import org.infinispan.manager.EmbeddedCacheManager;
@@ -30,7 +30,7 @@
import java.util.Set;
import java.util.function.Supplier;
-import static com.codahale.metrics.MetricRegistry.name;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.name;
public class IspnCheckRegistrySet
implements MetricSet
diff --git a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/metrics/IspnRegistrySetProvider.java b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/metrics/IspnRegistrySetProvider.java
index eec5f340e4..ce72a91943 100644
--- a/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/metrics/IspnRegistrySetProvider.java
+++ b/subsys/infinispan/src/main/java/org/commonjava/indy/subsys/infinispan/metrics/IspnRegistrySetProvider.java
@@ -15,9 +15,9 @@
*/
package org.commonjava.indy.subsys.infinispan.metrics;
-import com.codahale.metrics.MetricRegistry;
-import org.commonjava.indy.metrics.MetricSetProvider;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
+import org.commonjava.o11yphant.metrics.api.MetricSet;
+import org.commonjava.o11yphant.metrics.MetricSetProvider;
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
import org.commonjava.indy.subsys.infinispan.CacheProducer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,12 +29,12 @@
import java.util.List;
import java.util.Set;
-import static com.codahale.metrics.MetricRegistry.name;
import static org.commonjava.indy.subsys.infinispan.metrics.IspnCheckRegistrySet.INDY_METRIC_ISPN;
+import static org.commonjava.o11yphant.metrics.util.NameUtils.name;
@ApplicationScoped
public class IspnRegistrySetProvider
- implements MetricSetProvider
+ implements MetricSetProvider
{
@Inject
private IndyMetricsConfig metricsConfig;
@@ -48,14 +48,9 @@ public class IspnRegistrySetProvider
private final Logger logger = LoggerFactory.getLogger( getClass() );
@Override
- public void registerMetricSet( final MetricRegistry registry )
+ public MetricSet getMetricSet()
{
- if ( !metricsConfig.isIspnMetricsEnabled() )
- {
- return;
- }
-
- logger.info( "Adding ISPN checks to registry: {}", registry );
+ logger.info( "Adding ISPN checks" );
String gauges = metricsConfig.getIspnGauges();
List list = null;
if ( gauges != null )
@@ -71,8 +66,18 @@ public void registerMetricSet( final MetricRegistry registry )
caches.forEach( ( n ) -> cacheProducer.getCacheManager().getCache( n ) );
}
}
+ return new IspnCheckRegistrySet( cacheProducer.getCacheManager(), list );
+ }
+
+ @Override
+ public String getName()
+ {
+ return name( metricsConfig.getNodePrefix(), INDY_METRIC_ISPN );
+ }
- registry.register( name( metricsConfig.getNodePrefix(), INDY_METRIC_ISPN ),
- new IspnCheckRegistrySet( cacheProducer.getCacheManager(), list ) );
+ @Override
+ public boolean isEnabled()
+ {
+ return metricsConfig.isIspnMetricsEnabled();
}
}
diff --git a/subsys/infinispan/src/main/resources/infinispan-jdbc.xml b/subsys/infinispan/src/main/resources/infinispan-jdbc.xml
index 62a7ed313f..59540b4c17 100644
--- a/subsys/infinispan/src/main/resources/infinispan-jdbc.xml
+++ b/subsys/infinispan/src/main/resources/infinispan-jdbc.xml
@@ -140,6 +140,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- indy-subsys-metrics
- org.commonjava.indy
- 2.5.0-SNAPSHOT
-
- 4.0.0
-
- indy-subsys-metrics-core
-
-
-
- io.dropwizard.metrics
- metrics-core
-
-
- io.dropwizard.metrics
- metrics-jvm
-
-
- io.dropwizard.metrics
- metrics-healthchecks
-
-
- org.apache.commons
- commons-lang3
-
-
-
- org.commonjava.indy
- indy-api
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/Measure.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/Measure.java
deleted file mode 100644
index 62524436b6..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/Measure.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.measure.annotation;
-
-import javax.enterprise.util.Nonbinding;
-import javax.interceptor.InterceptorBinding;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-@InterceptorBinding
-@Target( { METHOD, TYPE } )
-@Retention( RUNTIME )
-public @interface Measure
-{
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricNamed.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricNamed.java
deleted file mode 100644
index 2bbadf86a0..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricNamed.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.measure.annotation;
-
-import org.commonjava.indy.metrics.IndyMetricsConstants;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-@Target( { METHOD, TYPE } )
-@Retention( RUNTIME )
-public @interface MetricNamed
-{
- /**
- * Need to migrate to {@link IndyMetricsConstants#DEFAULT}.
- * @deprecated
- */
- String DEFAULT = IndyMetricsConstants.DEFAULT;
-
- String value() default DEFAULT;
-}
\ No newline at end of file
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapperEnd.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapperEnd.java
deleted file mode 100644
index 5b98af60c0..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapperEnd.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.measure.annotation;
-
-import javax.interceptor.InterceptorBinding;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-@InterceptorBinding
-@Target( { METHOD, TYPE } )
-@Retention( RUNTIME )
-public @interface MetricWrapperEnd
-{
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapperNamed.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapperNamed.java
deleted file mode 100644
index 7680d38c5b..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapperNamed.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.measure.annotation;
-
-import javax.enterprise.util.Nonbinding;
-import javax.interceptor.InterceptorBinding;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-@InterceptorBinding
-@Target( { PARAMETER } )
-@Retention( RUNTIME )
-public @interface MetricWrapperNamed
-{
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapperStart.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapperStart.java
deleted file mode 100644
index 1b94fa7470..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/measure/annotation/MetricWrapperStart.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.measure.annotation;
-
-import javax.interceptor.InterceptorBinding;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-@InterceptorBinding
-@Target( { METHOD, TYPE } )
-@Retention( RUNTIME )
-public @interface MetricWrapperStart
-{
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/IndyMetricsConstants.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/IndyMetricsConstants.java
deleted file mode 100644
index 395972c70d..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/IndyMetricsConstants.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics;
-
-import org.apache.commons.lang3.ClassUtils;
-
-import static com.codahale.metrics.MetricRegistry.name;
-import static org.apache.commons.lang.StringUtils.isBlank;
-
-public class IndyMetricsConstants
-{
- public static final String DEFAULT = "default";
-
- public static final String EXCEPTION = "exception";
-
- public static final String METER = "meter";
-
- public static final String TIMER = "timer";
-
- public static final String SKIP_METRIC = "skip-this-metric";
-
- /**
- * Get default metric name. Use abbreviated package name, e.g., foo.bar.ClassA.methodB -> f.b.ClassA.methodB
- */
- public static String getDefaultName( Class> declaringClass, String method )
- {
- // minimum len 1 shortens the package name and keeps class name
- String cls = ClassUtils.getAbbreviatedName( declaringClass.getName(), 1 );
- return name( cls, method );
- }
-
- /**
- * Get default metric name. Use abbreviated package name, e.g., foo.bar.ClassA.methodB -> f.b.ClassA.methodB
- */
- public static String getDefaultName( String declaringClass, String method )
- {
- // minimum len 1 shortens the package name and keeps class name
- String cls = ClassUtils.getAbbreviatedName( declaringClass, 1 );
- return name( cls, method );
- }
-
- /**
- * Get the metric fullname with no default value.
- * @param nameParts user specified name parts
- */
- public static String getSupername( String nodePrefix, String... nameParts )
- {
- return name( nodePrefix, nameParts );
- }
-
- /**
- * Get the metric fullname.
- * @param name user specified name
- * @param defaultName 'class name + method name', not null.
- */
- public static String getName( String nodePrefix, String name, String defaultName, String... suffix )
- {
- if ( isBlank( name ) || name.equals( DEFAULT ) )
- {
- name = defaultName;
- }
- return name( name( nodePrefix, name ), suffix );
- }
-
-
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/MetricSetProvider.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/MetricSetProvider.java
deleted file mode 100644
index be0055b68e..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/MetricSetProvider.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics;
-
-import com.codahale.metrics.MetricRegistry;
-
-public interface MetricSetProvider
-{
- void registerMetricSet( MetricRegistry registry );
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/exception/IndyMetricsException.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/exception/IndyMetricsException.java
deleted file mode 100644
index ea5ab9609c..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/exception/IndyMetricsException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.exception;
-
-import org.commonjava.indy.IndyException;
-
-/**
- * Created by xiabai on 5/9/17.
- */
-public class IndyMetricsException extends IndyException
-{
- public IndyMetricsException( final String message, final Object... params )
- {
- super( message, params );
- }
-
- public IndyMetricsException( final String message, final Throwable cause, final Object... params )
- {
- super( message, cause, params );
- }
-
- private static final long serialVersionUID = 1L;
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyComponentHC.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyComponentHC.java
deleted file mode 100644
index b67490561b..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyComponentHC.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.healthcheck;
-
-public abstract class IndyComponentHC extends IndyHealthCheck
-{
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyCompoundHealthCheck.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyCompoundHealthCheck.java
deleted file mode 100644
index 56380f7916..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyCompoundHealthCheck.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.healthcheck;
-
-import com.codahale.metrics.health.HealthCheck;
-
-import java.util.Map;
-import java.util.Set;
-
-import static org.commonjava.indy.metrics.util.NameUtils.getAbbreviatedName;
-
-public interface IndyCompoundHealthCheck
-{
-
- Map getHealthChecks();
-
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyHealthCheck.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyHealthCheck.java
deleted file mode 100644
index de64bf5bb5..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyHealthCheck.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.healthcheck;
-
-import com.codahale.metrics.health.HealthCheck;
-
-import static org.commonjava.indy.metrics.util.NameUtils.getAbbreviatedName;
-
-/**
- * Created by xiabai on 3/10/17.
- */
-public abstract class IndyHealthCheck
- extends HealthCheck
-{
-
- public String getName()
- {
- return getAbbreviatedName( this.getClass() );
- }
-
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyHealthCheckRegistrySet.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyHealthCheckRegistrySet.java
deleted file mode 100644
index 1677366359..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/IndyHealthCheckRegistrySet.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.healthcheck;
-
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.Metric;
-import com.codahale.metrics.MetricSet;
-import com.codahale.metrics.health.HealthCheck;
-import com.codahale.metrics.health.HealthCheckRegistry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.SortedMap;
-
-/**
- * Created by xiabai on 3/13/17.
- */
-public class IndyHealthCheckRegistrySet
- implements MetricSet
-{
- private static final Logger logger = LoggerFactory.getLogger( IndyHealthCheckRegistrySet.class );
-
- private String name = "healthcheck";
-
- private HealthCheckRegistry healthCheckRegistry;
-
- public IndyHealthCheckRegistrySet()
- {
- healthCheckRegistry = new HealthCheckRegistry();
- }
-
- @Override
- public Map getMetrics()
- {
- final Map gauges = new HashMap();
- SortedMap healthResult = healthCheckRegistry.runHealthChecks();
- healthResult.forEach( ( s, result ) ->
- {
- gauges.put( s, (Gauge) () ->
- {
- if ( result.isHealthy() )
- {
- return 1;
- }
- return 0;
- } );
- } );
- logger.info( "get metrics " + gauges );
- return gauges;
- }
-
- public void register( String name, HealthCheck healthCheck )
- {
- healthCheckRegistry.register( name, healthCheck );
- }
-
- public void setName( String name )
- {
- this.name = name;
- }
-
- public String getName()
- {
- return name;
-
- }
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/impl/DeadlockHealthCheck.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/impl/DeadlockHealthCheck.java
deleted file mode 100644
index 56fa1896a2..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/impl/DeadlockHealthCheck.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.healthcheck.impl;
-
-import org.commonjava.indy.metrics.healthcheck.IndyComponentHC;
-import org.commonjava.indy.metrics.healthcheck.IndyHealthCheck;
-
-import javax.inject.Named;
-
-@Named
-public class DeadlockHealthCheck
- extends IndyComponentHC
-{
- com.codahale.metrics.health.jvm.ThreadDeadlockHealthCheck
- deadlock = new com.codahale.metrics.health.jvm.ThreadDeadlockHealthCheck();
-
- @Override
- protected Result check() throws Exception
- {
- return deadlock.execute();
- }
-
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/impl/HeapHealthCheck.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/impl/HeapHealthCheck.java
deleted file mode 100644
index 4e9ce4f160..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/impl/HeapHealthCheck.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.healthcheck.impl;
-
-import org.commonjava.indy.metrics.healthcheck.IndyComponentHC;
-import org.commonjava.indy.metrics.healthcheck.IndyHealthCheck;
-
-import javax.inject.Named;
-
-@Named
-public class HeapHealthCheck
- extends IndyComponentHC
-{
- private static final double GB = Math.pow(1024, 3);
-
- private static final String FREE_GB = "free-gb";
-
- private static final String USED_GB = "used-gb";
-
- private static final String TOTAL_GB = "total-gb";
-
- private static final String MAX_GB = "max-gb";
-
- private static final String CURRENT_LOAD = "current-load-pct";
-
- private static final float HEALTHY_LOAD_MAX = 90f;
-
- @Override
- protected Result check()
- throws Exception
- {
- Runtime runtime = Runtime.getRuntime();
- ResultBuilder builder = Result.builder();
-
- double free = runtime.freeMemory();
- double total = runtime.totalMemory();
- double used = total-free;
-
- double max = runtime.maxMemory();
- double load = 100 * (used / max);
-
- if ( load > HEALTHY_LOAD_MAX )
- {
- builder.unhealthy();
- }
- else
- {
- builder.healthy();
- }
-
- builder.withDetail( FREE_GB, free / GB )
- .withDetail( USED_GB, used / GB )
- .withDetail( MAX_GB, max / GB )
- .withDetail( TOTAL_GB, total / GB ).withDetail( CURRENT_LOAD, load );
-
- return builder.build();
- }
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/impl/SummaryHealthCheck.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/impl/SummaryHealthCheck.java
deleted file mode 100644
index 21c7ad4ab1..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/healthcheck/impl/SummaryHealthCheck.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.healthcheck.impl;
-
-import org.commonjava.indy.metrics.healthcheck.IndyComponentHC;
-import org.commonjava.indy.metrics.healthcheck.IndyCompoundHealthCheck;
-import org.commonjava.indy.metrics.healthcheck.IndyHealthCheck;
-
-import javax.enterprise.inject.Instance;
-import javax.inject.Inject;
-import javax.inject.Named;
-import java.util.concurrent.atomic.AtomicInteger;
-
-@Named
-public class SummaryHealthCheck
- extends IndyHealthCheck
-{
- enum SummaryRating
- {
- green, yellow, red;
- }
-
- private static final String RATING = "rating";
-
- private static final String UNHEALTHY_COUNT = "unhealthy-count";
-
- @Inject
- private Instance looseComponents;
-
- @Inject
- private Instance looseCompounds;
-
- @Override
- protected Result check()
- throws Exception
- {
- AtomicInteger count = new AtomicInteger( 0 );
- looseComponents.forEach( check->{
- if ( !check.execute().isHealthy() )
- count.incrementAndGet();
- } );
-
- looseCompounds.forEach( lc->{
- lc.getHealthChecks().forEach( ( k, check ) -> {
- if ( !check.execute().isHealthy() )
- {
- count.incrementAndGet();
- }
- } );
- } );
-
- ResultBuilder rb = Result.builder();
- if ( count.get() > 3 )
- {
- rb.unhealthy().withDetail( RATING, SummaryRating.red );
- }
- else if ( count.get() > 0 )
- {
- rb.unhealthy().withDetail( RATING, SummaryRating.yellow );
- }
- else
- {
- rb.healthy();
- }
-
- rb.withDetail( UNHEALTHY_COUNT, count.get() );
-
- return rb.build();
- }
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/jvm/IndyJVMInstrumentation.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/jvm/IndyJVMInstrumentation.java
deleted file mode 100644
index 358bde5003..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/jvm/IndyJVMInstrumentation.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.jvm;
-
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.jvm.BufferPoolMetricSet;
-import com.codahale.metrics.jvm.CachedThreadStatesGaugeSet;
-import com.codahale.metrics.jvm.ClassLoadingGaugeSet;
-import com.codahale.metrics.jvm.FileDescriptorRatioGauge;
-import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
-import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
-import com.codahale.metrics.jvm.ThreadStatesGaugeSet;
-
-import java.lang.management.ManagementFactory;
-import java.util.concurrent.TimeUnit;
-
-import static com.codahale.metrics.MetricRegistry.name;
-
-/**
- * Created by xiabai on 3/10/17.
- */
-public class IndyJVMInstrumentation
-{
- private static final String JVM_MEMORY = "jvm.memory";
-
- private static final String JVM_GARBAGE = "jvm.garbage";
-
- private static final String JVM_THREADS = "jvm.threads";
-
- private static final String JVM_FILES = "jvm.files";
-
- private static final String JVM_BUFFERS = "jvm.buffers";
-
- private static final String JVM_CLASSLOADING = "jvm.classloading";
-
- public static void registerJvmMetric( String nodePrefix, MetricRegistry registry )
- {
- registry.register( name( nodePrefix, JVM_MEMORY ), new MemoryUsageGaugeSet() );
- registry.register( name( nodePrefix, JVM_GARBAGE ), new GarbageCollectorMetricSet() );
- registry.register( name( nodePrefix, JVM_THREADS ), new CachedThreadStatesGaugeSet( 60, TimeUnit.SECONDS ));
- registry.register( name( nodePrefix, JVM_FILES ), new FileDescriptorRatioGauge() );
- registry.register( name( nodePrefix, JVM_CLASSLOADING ), new ClassLoadingGaugeSet() );
- registry.register( name( nodePrefix, JVM_BUFFERS ),
- new BufferPoolMetricSet( ManagementFactory.getPlatformMBeanServer() ) );
- }
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/system/StoragePathProvider.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/system/StoragePathProvider.java
deleted file mode 100644
index 1c988ebb2d..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/system/StoragePathProvider.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.system;
-
-import java.io.File;
-
-public interface StoragePathProvider
-{
- File getStoragePath();
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/system/SystemGaugesSet.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/system/SystemGaugesSet.java
deleted file mode 100644
index 9705bbe037..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/system/SystemGaugesSet.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.system;
-
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.Metric;
-import com.codahale.metrics.MetricSet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.inject.Named;
-import java.io.File;
-import java.lang.management.ManagementFactory;
-import java.lang.management.OperatingSystemMXBean;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * A set of gauges for system gauges, including stats on cpu, process, physical mem, swap mem.
- */
-@ApplicationScoped
-@Named
-public class SystemGaugesSet
- implements MetricSet
-{
- private final Logger logger = LoggerFactory.getLogger( this.getClass() );
-
- @Inject
- private StoragePathProvider storagePathProvider;
-
- private final OperatingSystemMXBean operatingSystemMXBean;
-
- public SystemGaugesSet()
- {
- this( ManagementFactory.getOperatingSystemMXBean() );
- }
-
- public SystemGaugesSet( OperatingSystemMXBean mxBean )
- {
- this.operatingSystemMXBean = mxBean;
- }
-
- public Map getMetrics()
- {
- if ( !( operatingSystemMXBean instanceof com.sun.management.OperatingSystemMXBean ) )
- {
- return Collections.emptyMap();
- }
-
- final com.sun.management.OperatingSystemMXBean osMxBean =
- (com.sun.management.OperatingSystemMXBean) operatingSystemMXBean;
-
- final Map gauges = new HashMap<>();
-
- try
- {
- gauges.put( "process.cpu.load", (Gauge) osMxBean::getProcessCpuLoad );
- gauges.put( "system.cpu.load", (Gauge) osMxBean::getSystemCpuLoad );
- gauges.put( "system.load.avg", (Gauge) osMxBean::getSystemLoadAverage );
- gauges.put( "process.cpu.time.ms", (Gauge) () -> osMxBean.getProcessCpuTime() / 1000 );
-
- gauges.put( "mem.total.swap", (Gauge) osMxBean::getTotalSwapSpaceSize );
- gauges.put( "mem.total.physical", (Gauge) osMxBean::getTotalPhysicalMemorySize );
- gauges.put( "mem.free.physical", (Gauge) osMxBean::getFreePhysicalMemorySize );
- gauges.put( "mem.free.swap", (Gauge) osMxBean::getFreeSwapSpaceSize );
- }
- catch ( Throwable e )
- {
- logger.warn( "Cannot get system level metrics. Reason: {}", e.getMessage() );
- }
-
- try
- {
- final File storePath = getIndyStorageDir();
- if ( storePath.exists() && storePath.isDirectory() )
- {
- gauges.put( "store.indy.total", (Gauge) storePath::getTotalSpace );
- gauges.put( "store.indy.usable", (Gauge) storePath::getUsableSpace );
- }
- else
- {
- logger.warn( "Cannot trace indy storage usage because storage path {} not defined.",
- storePath.getCanonicalPath() );
- }
- }
- catch ( Throwable e )
- {
- logger.warn( "Cannot trace indy storage usage. Reason: {}", e.getMessage() );
- }
-
- return Collections.unmodifiableMap( gauges );
-
- }
-
- private File getIndyStorageDir()
- {
- if ( storagePathProvider != null && storagePathProvider.getStoragePath() != null )
- {
- return storagePathProvider.getStoragePath();
- }
-
- // if indy config for storage path not defined, we use docker defined one.
- final String DEFAULT_STORAGE_DIR = "/var/lib/indy/storage";
- return new File( DEFAULT_STORAGE_DIR );
- }
-
-}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/util/NameUtils.java b/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/util/NameUtils.java
deleted file mode 100644
index 15db6ae113..0000000000
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/util/NameUtils.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.util;
-
-import org.apache.commons.lang3.ClassUtils;
-
-public class NameUtils
-{
- private static final int DEFAULT_LEN = 40;
-
- public static String getAbbreviatedName( Class cls )
- {
- return ClassUtils.getAbbreviatedName( cls, DEFAULT_LEN );
- }
-}
diff --git a/subsys/metrics/pom.xml b/subsys/metrics/pom.xml
index d9037171e9..5cc23716c8 100644
--- a/subsys/metrics/pom.xml
+++ b/subsys/metrics/pom.xml
@@ -18,21 +18,50 @@
-->
- indy-subsystems
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ indy-subsystems
+ 2.5.4.2-SNAPSHOT
4.0.0
indy-subsys-metrics
- Indy :: Subsystems :: Metrics
- pom
+
+
+ org.commonjava.util
+ o11yphant-metrics-core
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ org.commonjava.indy
+ indy-api
+
+
+
+
+
+
+ maven-assembly-plugin
+
+
+ confset
+
+ single
+
+ package
+
+
+ confset
+
+
+
+
+
+
+
-
- core
- reporter
- prometheus
-
-
+
\ No newline at end of file
diff --git a/subsys/metrics/prometheus/pom.xml b/subsys/metrics/prometheus/pom.xml
deleted file mode 100644
index 66fd59a8ae..0000000000
--- a/subsys/metrics/prometheus/pom.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
- indy-subsys-metrics
- org.commonjava.indy
- 2.5.0-SNAPSHOT
-
- 4.0.0
-
- indy-subsys-metrics-prometheus
-
-
-
- io.prometheus
- simpleclient_dropwizard
-
-
- io.prometheus
- simpleclient_servlet
-
-
- org.commonjava.indy
- indy-subsys-metrics-core
-
-
- org.commonjava.indy
- indy-subsys-jaxrs
-
-
- javax.enterprise
- cdi-api
- provided
-
-
- org.commonjava.indy
- indy-subsys-flatfile
-
-
- org.commonjava.util
- http-testserver
-
-
-
-
\ No newline at end of file
diff --git a/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/IndySampleBuilder.java b/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/IndySampleBuilder.java
deleted file mode 100644
index 98cd308185..0000000000
--- a/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/IndySampleBuilder.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.prometheus;
-
-import io.prometheus.client.Collector;
-import io.prometheus.client.dropwizard.samplebuilder.DefaultSampleBuilder;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class IndySampleBuilder
- extends DefaultSampleBuilder
-{
- private static final String NODE_NAME_LABEL = "node";
-
- private String nodeName;
-
- public IndySampleBuilder( String nodeName )
- {
- super();
- this.nodeName = nodeName;
- }
-
- @Override
- public Collector.MetricFamilySamples.Sample createSample( final String dropwizardName, final String nameSuffix,
- final List additionalLabelNames,
- final List additionalLabelValues,
- final double value )
- {
- List labelNames = new ArrayList( additionalLabelNames );
- labelNames.add( NODE_NAME_LABEL );
-
- List labelValues = new ArrayList( additionalLabelValues );
- labelValues.add( nodeName );
-
- return super.createSample( dropwizardName, nameSuffix, labelNames, labelValues, value );
- }
-}
diff --git a/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/PrometheusDeployment.java b/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/PrometheusDeployment.java
deleted file mode 100644
index 61b02133cb..0000000000
--- a/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/PrometheusDeployment.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.prometheus;
-
-import com.codahale.metrics.MetricRegistry;
-import io.prometheus.client.CollectorRegistry;
-import io.prometheus.client.dropwizard.DropwizardExports;
-import io.prometheus.client.exporter.MetricsServlet;
-import io.undertow.servlet.Servlets;
-import io.undertow.servlet.api.DeploymentInfo;
-import io.undertow.servlet.api.ServletInfo;
-import org.commonjava.indy.bind.jaxrs.IndyDeploymentProvider;
-import org.commonjava.indy.bind.jaxrs.metrics.IndyHealthCheckServletContextListener;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.ws.rs.core.Application;
-
-@ApplicationScoped
-public class PrometheusDeployment
- extends IndyDeploymentProvider
-{
- private static final String PROMETHEUS_REPORTER = "prometheus";
-
- private final Logger logger = LoggerFactory.getLogger( getClass() );
-
- @Inject
- private IndyMetricsConfig config;
-
- @Inject
- private MetricRegistry metricRegistry;
-
- @Override
- public DeploymentInfo getDeploymentInfo( String contextRoot, Application application )
- {
- if ( !config.isMetricsEnabled() || !config.getReporter().contains( PROMETHEUS_REPORTER ) )
- {
- return null;
- }
-
- CollectorRegistry.defaultRegistry.register( new DropwizardExports( metricRegistry, new IndySampleBuilder( config.getNodePrefix() ) ) );
-
- final ServletInfo servlet =
- Servlets.servlet( "prometheus-metrics", MetricsServlet.class ).addMapping( "/metrics" );
-
- final DeploymentInfo di = new DeploymentInfo().addListener(
- Servlets.listener( IndyHealthCheckServletContextListener.class ) )
- .setContextPath( contextRoot )
- .addServlet( servlet )
- .setDeploymentName( "Prometheus Metrics Deployment" )
- .setClassLoader( ClassLoader.getSystemClassLoader() );
-
- logger.info( "Returning deployment info for Prometheus metrics servlet" );
- return di;
- }
-}
diff --git a/subsys/metrics/reporter/pom.xml b/subsys/metrics/reporter/pom.xml
deleted file mode 100644
index 7c4a6133ae..0000000000
--- a/subsys/metrics/reporter/pom.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
- indy-subsys-metrics
- org.commonjava.indy
- 2.5.0-SNAPSHOT
-
- 4.0.0
-
- indy-subsys-metrics-reporter
-
-
-
- org.commonjava.indy
- indy-subsys-metrics-core
-
-
- io.dropwizard.metrics
- metrics-graphite
-
-
- io.dropwizard.metrics
- metrics-servlets
-
-
- javax.enterprise
- cdi-api
- provided
-
-
- io.github.hengyunabc
- zabbix-sender
-
-
- io.github.hengyunabc
- zabbix-api
-
-
- org.commonjava.indy
- indy-subsys-http
-
-
- org.commonjava.indy
- indy-subsys-flatfile
-
-
- org.commonjava.util
- http-testserver
-
-
- org.elasticsearch
- metrics-elasticsearch-reporter
-
-
-
-
-
-
- maven-assembly-plugin
-
-
- confset
-
- single
-
- package
-
-
- confset
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/subsys/metrics/reporter/src/main/conf/conf.d/elasticsearch.properties b/subsys/metrics/reporter/src/main/conf/conf.d/elasticsearch.properties
deleted file mode 100644
index 0a81578799..0000000000
--- a/subsys/metrics/reporter/src/main/conf/conf.d/elasticsearch.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-elasticsearch.server.url=http://10.66.136.85:9200/_bulk
-elasticsearch.index=logs-%date{yyyy-MM-dd}
-elasticsearch.type=tester
-elasticsearch.loggerName=indy-test
-elasticsearch.enable=false
diff --git a/subsys/metrics/reporter/src/main/conf/conf.d/metrics.conf b/subsys/metrics/reporter/src/main/conf/conf.d/metrics.conf
deleted file mode 100644
index 09c4a87af8..0000000000
--- a/subsys/metrics/reporter/src/main/conf/conf.d/metrics.conf
+++ /dev/null
@@ -1,119 +0,0 @@
-[metrics]
-enabled = false
-reporter.enabled = true
-
-# Specify node prefix (on cluster). This prefix will be prepended to all metric names. Default empty.
-#
-# node.prefix =
-
-# Enable kojiji metrics. Default false.
-#
-koji.enabled = true
-
-# Enable Infinispan metrics. Default false.
-#
-ispn.enabled = true
-
-# Specify ISPN cache gauges. This works only if ispn.enabled is true. Default All. Names are case sensitive.
-#
-#ispn.gauges = CurrentNumberOfEntries,CurrentNumberOfEntriesInMemory,\
-#TotalNumberOfEntries,Hits,Misses,Retrievals,Evictions
-
-# Enable pathDB metrics. Default true.
-#
-#pathdb.enabled = true
-
-# Specify pathDB operations. Default all.
-#
-#pathdb.operations = exists,getStorageFile,getFileSystemContaining
-
-# Enable Galley to measure artifact downloading time. Default false.
-#
-measure.transport = true
-
-# Specify a repository list for those to measure artifact downloading time. This works only if
-# measure.transport is true.
-#
-# Format: comma split item of "::"
-# The default ":" is "maven:remote" if ignored. You may use wildcard '*' so those would be measured
-# as a whole, e.g., koji-*
-#
-# Example: measure.repos = maven:remote:test,public,koji-*
-#
-#measure.transport.repos = central
-
-# List of reporters (comma-separated). At present, Indy supports reporters:
-# reporter = graphite,zabbix,elasticsearch,console
-#
-reporter = console
-
-############################################
-# Console reporter options
-############################################
-console.reporter.period = 30
-
-############################################
-# GraphiteDB reporter options
-############################################
-
-# This is the hostname of GraphiteDB.
-graphite.hostname = localhost
-# Port of GraphiteDB.
-graphite.port = 2003
-# Specific prefix for GraphiteDB Item
-graphite.reporter.prefix = local.one
-# Indy's metrics item have three type: simple,jvm,healthcheck
-# Period of simple item for reporting
-graphite.reporter.simple.period = 30
-# Period of jvm item for reporting
-graphite.reporter.jvm.period = 300
-# Period of healthcheck item for reporting
-graphite.reporter.healthcheck.period = 600
-
-############################################
-# Zabbix reporter options
-############################################
-
-#The Zabbix API is a web based API and is shipped as part of the web frontend
-# API URL used to access Zabbix from a web browser
-zabbix.api.url = example.com
-#Zabbix username for login Zabbix server(Zabbix API)
-zabbix.user = test
-#Zabbix password for login Zabbix server(Zabbix API)
-zabbix.pwd = test
-# Zabbix sender is a command line utility that may be used to send performance data to Zabbix server for processing.
-# Host of Zabbix server for Zabbix sender
-zabbix.sender.host = 192.168.1.1
-# Port of Zabbix server for Zabbix sender
-zabbix.sender.port = 10051
-# This is the hostname of the current Indy instance, it also is host name of Zabbix monitoring
-zabbix.indy.host = example.com
-# Specific prefix for Zabbix Item
-zabbix.reporter.prefix = local.one
-# Indy's metrics item have three type: simple,jvm,healthcheck.
-# Those type have different period of reporter
-# Period of simple item for reporting
-zabbix.reporter.simple.period = 30
-# Period of jvm item for reporting
-zabbix.reporter.jvm.period = 300
-# Period of healthcheck item for reporting
-zabbix.reporter.healthcheck.period = 600
-
-############################################
-# Elasticsearch reporter options
-############################################
-
-# Specific prefix for Elasticsearch
-elk.reporter.prefix = local.one
-# Indy's metrics item have three type: simple,jvm,healthcheck.
-# Those type have different period of reporter
-# Period of simple item for reporting
-elk.reporter.simple.period = 30
-# Period of jvm item for reporting
-elk.reporter.jvm.period = 300
-# Period of healthcheck item for reporting
-elk.reporter.healthcheck.period = 600
-#The index name to index in Elasticsearch
-elk.reporter.index = local.one.name
-#Configure an array of hosts to send data to.
-elk.reporter.hosts = localhost:9200
\ No newline at end of file
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/IndyMetricsManager.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/IndyMetricsManager.java
deleted file mode 100644
index b36c532075..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/IndyMetricsManager.java
+++ /dev/null
@@ -1,391 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics;
-
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
-import com.codahale.metrics.health.HealthCheck;
-import com.codahale.metrics.health.HealthCheckRegistry;
-import org.commonjava.cdi.util.weft.ThreadContext;
-import org.commonjava.indy.measure.annotation.MetricWrapper;
-import org.commonjava.indy.measure.annotation.MetricWrapperEnd;
-import org.commonjava.indy.measure.annotation.MetricWrapperNamed;
-import org.commonjava.indy.measure.annotation.MetricWrapperStart;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
-import org.commonjava.indy.metrics.healthcheck.IndyCompoundHealthCheck;
-import org.commonjava.indy.metrics.healthcheck.IndyHealthCheck;
-import org.commonjava.indy.metrics.reporter.ReporterIntializer;
-import org.commonjava.maven.galley.config.TransportMetricConfig;
-import org.commonjava.maven.galley.model.Location;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.annotation.PostConstruct;
-import javax.enterprise.context.ApplicationScoped;
-import javax.enterprise.inject.Instance;
-import javax.enterprise.inject.Produces;
-import javax.inject.Inject;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Supplier;
-
-import static com.codahale.metrics.MetricRegistry.name;
-import static org.apache.commons.lang.StringUtils.isNotBlank;
-import static org.commonjava.indy.IndyContentConstants.NANOS_PER_MILLISECOND;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.DEFAULT;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.EXCEPTION;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.SKIP_METRIC;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.TIMER;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getDefaultName;
-import static org.commonjava.indy.metrics.RequestContextHelper.CUMULATIVE_COUNTS;
-import static org.commonjava.indy.metrics.RequestContextHelper.CUMULATIVE_TIMINGS;
-import static org.commonjava.indy.metrics.RequestContextHelper.IS_METERED;
-import static org.commonjava.indy.metrics.jvm.IndyJVMInstrumentation.registerJvmMetric;
-import static org.commonjava.indy.model.core.StoreType.remote;
-import static org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
-
-/**
- * Created by xiabai on 2/27/17.
- */
-@ApplicationScoped
-public class IndyMetricsManager
-{
-
- public static final String METRIC_LOGGER_NAME = "org.commonjava.indy.metrics";
-
- private static final Logger logger = LoggerFactory.getLogger( IndyMetricsManager.class );
-
- @Inject
- private MetricRegistry metricRegistry;
-
- @Inject
- private HealthCheckRegistry healthCheckRegistry;
-
- @Inject
- private Instance indyHealthChecks;
-
- @Inject
- private Instance indyCompoundHealthChecks;
-
- @Inject
- ReporterIntializer reporter;
-
- @Inject
- private Instance metricSetProviderInstances;
-
- @Inject
- private IndyMetricsConfig config;
-
- private TransportMetricConfig transportMetricConfig;
-
- private Random random = new Random();
-
- @Produces
- public TransportMetricConfig getTransportMetricConfig()
- {
- return transportMetricConfig;
- }
-
- @PostConstruct
- public void init()
- {
- if ( !config.isMetricsEnabled() )
- {
- logger.info( "Indy metrics subsystem not enabled" );
- return;
- }
-
- logger.info( "Init metrics subsystem..." );
-
- registerJvmMetric( config.getNodePrefix(), metricRegistry );
-
- // Health checks
- indyHealthChecks.forEach( hc -> {
- logger.info( "Registering health check: {}", hc.getName() );
- healthCheckRegistry.register( hc.getName(), hc );
- } );
-
- indyCompoundHealthChecks.forEach( cc-> {
- Map healthChecks = cc.getHealthChecks();
- logger.info( "Registering {} health checks from set: {}", healthChecks.size(), cc.getClass().getSimpleName() );
- healthChecks.forEach( (name,check)->{
- logger.info( "Registering health check: {}", name );
- healthCheckRegistry.register( name, check );
- } );
- } );
-
- metricSetProviderInstances.forEach( ( provider ) -> provider.registerMetricSet( metricRegistry ) );
-
- if ( config.isMeasureTransport() )
- {
- setUpTransportMetricConfig();
- }
- }
-
- public void startReporter() throws Exception
- {
- if ( !config.isMetricsEnabled() )
- {
- return;
- }
- logger.info( "Start metrics reporters" );
- reporter.initReporter( metricRegistry );
- }
-
- private void setUpTransportMetricConfig()
- {
- logger.info( "Adding transport metrics to registry: {}", metricRegistry );
- final String measureRepos = config.getMeasureTransportRepos();
- final List list = new ArrayList<>();
- if ( isNotBlank( measureRepos ) )
- {
- String[] toks = measureRepos.split( "," );
- for ( String s : toks )
- {
- s = s.trim();
- if ( isNotBlank( s ) )
- {
- if ( s.indexOf( ":" ) < 0 )
- {
- s = MAVEN_PKG_KEY + ":" + remote.singularEndpointName() + ":" + s; // use default
- }
- list.add( s );
- }
- }
- }
- transportMetricConfig = new TransportMetricConfig()
- {
- @Override
- public boolean isEnabled()
- {
- return true;
- }
-
- @Override
- public String getNodePrefix()
- {
- return config.getNodePrefix();
- }
-
- @Override
- public String getMetricUniqueName( Location location )
- {
- String locationName = location.getName();
- for ( String s : list )
- {
- if ( s.equals( locationName ) )
- {
- return normalizeName( s );
- }
-
- if ( s.endsWith( "*" ) ) // handle wildcard
- {
- String prefix = s.substring( 0, s.length() - 1 );
- if ( locationName.startsWith( prefix ) )
- {
- return normalizeName( prefix );
- }
- }
- }
- return null;
- }
- };
- }
-
- private String normalizeName( String name )
- {
- return name.replaceAll( ":", "." );
- }
-
- public boolean isMetered( Supplier meteringOverride )
- {
- int meterRatio = config.getMeterRatio();
- if ( meterRatio <= 1 || random.nextInt() % meterRatio == 0 )
- {
- return true;
- }
- else if ( meteringOverride != null && Boolean.TRUE.equals( meteringOverride.get() ) )
- {
- return true;
- }
-
- return false;
- }
-
- @MetricWrapperStart
- public Timer.Context startTimer( @MetricWrapperNamed String name )
- {
- Timer.Context tctx = this.metricRegistry.timer( name ).time();
- ThreadContext ctx = ThreadContext.getContext( true );
- ctx.put( TIMER + name, tctx );
-
- return tctx;
- }
-
- @MetricWrapperEnd
- public long stopTimer( @MetricWrapperNamed String name )
- {
- ThreadContext ctx = ThreadContext.getContext( false );
- if ( ctx == null )
- {
- return 0;
- }
-
- Timer.Context tctx = (Timer.Context) ctx.get( TIMER + name );
- if ( tctx != null )
- {
- return tctx.stop();
- }
-
- return 0;
- }
-
- public Meter getMeter( String name )
- {
- return metricRegistry.meter( name );
- }
-
- public void accumulate( String name, final double elapsed )
- {
- ThreadContext ctx = ThreadContext.getContext( true );
- if ( ctx != null )
- {
- if ( !checkMetered( ctx ) )
- {
- return;
- }
-
- ctx.putIfAbsent( CUMULATIVE_TIMINGS, new ConcurrentHashMap<>() );
- Map timingMap = (Map) ctx.get( CUMULATIVE_TIMINGS );
-
- timingMap.merge( name, elapsed, ( existingVal, newVal ) -> existingVal + newVal );
-
- ctx.putIfAbsent( CUMULATIVE_COUNTS, new ConcurrentHashMap<>() );
- Map countMap =
- (Map) ctx.get( CUMULATIVE_COUNTS );
-
- countMap.merge( name, 1, ( existingVal, newVal ) -> existingVal + 1 );
- }
- }
-
- @MetricWrapper
- public T wrapWithStandardMetrics( final Supplier method, @MetricWrapperNamed final Supplier classifier )
- {
-// if ( logger.isDebugEnabled() )
-// {
-// Throwable t = new Throwable();
-// logger.info( "Wrapping with standard metrics at the following location:", t );
-// }
-
- String name = classifier.get();
- if ( !checkMetered() || SKIP_METRIC.equals( name ) )
- {
- return method.get();
- }
-
- String nodePrefix = config.getNodePrefix();
-
- String metricName = name( nodePrefix, name );
- String startName = name( metricName, "starts" );
-
- String timerName = name( metricName, TIMER );
- String errorName = name( name, EXCEPTION );
- String eClassName = null;
-
- Timer.Context timer = startTimer( timerName );
- logger.trace( "START: {} ({})", metricName, timer );
-
- long start = System.nanoTime();
- try
- {
- mark( Arrays.asList( startName ) );
-
- return method.get();
- }
- catch ( Throwable e )
- {
- eClassName = name( name, EXCEPTION, e.getClass().getSimpleName() );
- mark( Arrays.asList( errorName, eClassName ) );
-
- throw e;
- }
- finally
- {
- stopTimers( Collections.singletonMap( timerName, timer ) );
- mark( Arrays.asList( metricName ) );
-
- double elapsed = (System.nanoTime() - start) / NANOS_PER_MILLISECOND;
- accumulate( metricName, elapsed );
- }
- }
-
- public boolean checkMetered()
- {
- return checkMetered( null );
- }
-
- public boolean checkMetered( ThreadContext ctx )
- {
- if ( ctx == null )
- {
- ctx = ThreadContext.getContext( false );
- }
-
- return ( ctx == null || ((Boolean) ctx.getOrDefault( IS_METERED, Boolean.TRUE ) ) );
- }
-
- public void stopTimers( final Map timers )
- {
- if ( timers != null )
- {
- timers.forEach( ( name, timer ) -> stopTimer( name ) );
- }
- }
-
- public void mark( final Collection metricNames )
- {
- metricNames.forEach( metricName -> {
- getMeter( metricName ).mark();
- } );
- }
-
- public void addGauges( Class> className, String method, Map> gauges )
- {
- String defaultName = getDefaultName( className, method );
- gauges.forEach( ( k, v ) -> {
- String name = IndyMetricsConstants.getName( config.getNodePrefix(), DEFAULT, defaultName, k );
- metricRegistry.gauge( name, () -> v );
- } );
- }
-
- public MetricRegistry getMetricRegistry()
- {
- return metricRegistry;
- }
-
- public IndyMetricsConfig getConfig()
- {
- return config;
- }
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/MetricsConstants.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/MetricsConstants.java
deleted file mode 100644
index 7721783a6c..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/MetricsConstants.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics;
-
-public class MetricsConstants
-{
- public static final String METRICS_PHASE = "metrics-phase";
-
- public static final String PRELIMINARY_METRICS = "preliminary";
-
- public static final String FINAL_METRICS = "final";
-
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/conf/IndyMetricsConfig.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/conf/IndyMetricsConfig.java
deleted file mode 100644
index 7342dbba79..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/conf/IndyMetricsConfig.java
+++ /dev/null
@@ -1,575 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.conf;
-
-import org.commonjava.indy.conf.IndyConfigInfo;
-import org.commonjava.propulsor.config.annotation.ConfigName;
-import org.commonjava.propulsor.config.annotation.SectionName;
-
-import javax.enterprise.context.ApplicationScoped;
-import java.io.InputStream;
-
-import static org.commonjava.indy.metrics.conf.IndyMetricsConfig.SECTION;
-
-/**
- * Created by xiabai on 3/17/17.
- */
-@SectionName( SECTION )
-@ApplicationScoped
-public class IndyMetricsConfig
- implements IndyConfigInfo
-{
- public static final String SECTION = "metrics";
-
- public final static String INDY_METRICS_NODE_PREFIX = "node.prefix";
-
- private final static String INDY_METRICS_REPORTER = "reporter";
-
- private final static String INDY_METRICS_REPORTER_CONSOLE_PERIOD = "console.reporter.period";
-
- private final static String INDY_METRICS_REPORTER_GRPHITEREPORTER_HOSTNAME = "graphite.hostname";
-
- private final static String INDY_METRICS_REPORTER_GRPHITEREPORTER_PORT = "graphite.port";
-
- private final static String INDY_METRICS_REPORTER_GRPHITEREPORTER_PREFIX = "graphite.reporter.prefix";
-
- private final static String INDY_METRICS_REPORTER_GRPHITEREPORTER_SIMPLE_PERIOD = "graphite.reporter.simple.period";
-
- private final static String INDY_METRICS_REPORTER_GRPHITEREPORTER_JVM_PERIOD = "graphite.reporter.jvm.period";
-
- private final static String INDY_METRICS_REPORTER_GRPHITEREPORTER_HEALTHCHECK_PERIOD =
- "graphite.reporter.healthcheck.period";
-
- private final static String INDY_METRICS_ISENABLED = "enabled";
-
- private static final String INDY_METRICS_METER_RATIO = "meter.ratio";
-
- private final static String INDY_METRICS_ISPN_ENABLED = "ispn.enabled";
-
- private final static String INDY_METRICS_ISPN_GAUGES = "ispn.gauges";
-
- private final static String INDY_METRICS_REPORTER_ISENABLED = "reporter.enabled";
-
- private final static String INDY_METRICS_REPORTER_ZABBIXREPORTER_API_HOST_URL = "zabbix.api.url";
-
- private final static String INDY_METRICS_REPORTER_ZABBIXREPORTER_HOST_PORT = "zabbix.sender.port";
-
- private final static String INDY_METRICS_REPORTER_ZABBIXREPORTER_HOST = "zabbix.sender.host";
-
- private final static String INDY_METRICS_REPORTER_ZABBIXREPORTER_USER = "zabbix.user";
-
- private final static String INDY_METRICS_REPORTER_ZABBIXREPORTER_PWD = "zabbix.pwd";
-
- private final static String INDY_METRICS_REPORTER_ZABBIXREPORTER_LOCAL_HOSTNAME = "zabbix.indy.host";
-
- private final static String INDY_METRICS_REPORTER_ZABBIXREPORTER_PREFIX = "zabbix.reporter.prefix";
-
- private final static String INDY_METRICS_REPORTER_ZABBIXREPORTER_SIMPLE_PERIOD = "zabbix.reporter.simple.period";
-
- private final static String INDY_METRICS_REPORTER_ZABBIXREPORTER_JVM_PERIOD = "zabbix.reporter.jvm.period";
-
- private final static String INDY_METRICS_REPORTER_ZABBIXREPORTER_HEALTHCHECK_PERIOD =
- "zabbix.reporter.healthcheck.period";
-
- private final static String INDY_METRICS_REPORTER_ELKREPORTER_PREFIX = "elk.reporter.prefix";
-
- private final static String INDY_METRICS_REPORTER_ELKREPORTER_SIMPLE_PERIOD = "elk.reporter.simple.period";
-
- private final static String INDY_METRICS_REPORTER_ELKREPORTER_JVM_PERIOD = "elk.reporter.jvm.period";
-
- private final static String INDY_METRICS_REPORTER_ELKREPORTER_HEALTHCHECK_PERIOD = "elk.reporter.healthcheck.period";
-
- private final static String INDY_METRICS_REPORTER_ELKREPORTER_INDEX = "elk.reporter.index";
-
- private final static String INDY_METRICS_REPORTER_ELKREPORTER_HOSTS = "elk.reporter.hosts";
-
- private static final String INDY_METRICS_MEASURE_TRANSPORT = "measure.transport";
-
- private static final String INDY_METRICS_MEASURE_TRANSPORT_REPOS = "measure.transport.repos";
-
- private final static String INDY_METRICS_KOJI_ENABLED = "koji.enabled";
-
- private final static String INDY_METRICS_PATH_DB_ENABLED = "pathdb.enabled";
-
- private final static String INDY_METRICS_PATH_DB_OPERATIONS = "pathdb.operations";
-
- private static final int DEFAULT_METER_RATIO = 1;
-
- private boolean ispnMetricsEnabled;
-
- private boolean pathDBMetricsEnabled = true; // default
-
- private String pathDBMetricsOperations;
-
- private String ispnGauges;
-
- private boolean measureTransport;
-
- private String measureTransportRepos;
-
- private int consolePeriod = 30; // default
-
- private String elkPrefix;
-
- private int elkSimplePriod;
-
- private int elkJVMPriod;
-
- private int elkHealthCheckPriod;
-
- private String elkHosts;
-
- private String elkIndex;
-
- private String zabbixPrefix;
-
- private int zabbixSimplePriod;
-
- private int zabbixJVMPriod;
-
- private int zabbixHealthcheckPeriod;
-
- private String zabbixApiHostUrl;
-
- private String zabbixHost;
-
- private int zabbixPort;
-
- private String zabbixUser;
-
- private String zabbixPwd;
-
- private String zabbixLocalHostName;
-
- private String reporter;
-
- private String grphiterHostName;
-
- private int grphiterPort;
-
- private String grphiterPrefix;
-
- private int grphiterSimplePriod;
-
- private int grphiterJVMPriod;
-
- private int grphiterHealthcheckPeriod;
-
- private boolean metricsEnabled;
-
- private boolean reporterEnabled;
-
- private boolean kojiMetricEnabled;
-
- private String nodePrefix;
-
- private Integer meterRatio;
-
- public boolean isMeasureTransport()
- {
- return measureTransport;
- }
-
- @ConfigName( INDY_METRICS_NODE_PREFIX )
- public void setNodePrefix( String nodePrefix )
- {
- this.nodePrefix = nodePrefix;
- }
-
- public String getNodePrefix()
- {
- return nodePrefix;
- }
-
- @ConfigName( INDY_METRICS_MEASURE_TRANSPORT )
- public void setMeasureTransport( boolean measureTransport )
- {
- this.measureTransport = measureTransport;
- }
-
- public String getMeasureTransportRepos()
- {
- return measureTransportRepos;
- }
-
- @ConfigName( INDY_METRICS_MEASURE_TRANSPORT_REPOS )
- public void setMeasureTransportRepos( String measureTransportRepos )
- {
- this.measureTransportRepos = measureTransportRepos;
- }
-
- public int getConsolePeriod()
- {
- return consolePeriod;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_CONSOLE_PERIOD )
- public void setConsolePeriod( int consolePeriod )
- {
- this.consolePeriod = consolePeriod;
- }
-
- public String getElkPrefix()
- {
- return elkPrefix;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ELKREPORTER_PREFIX )
- public void setElkPrefix( String elkPrefix )
- {
- this.elkPrefix = elkPrefix;
- }
-
- public int getElkSimplePriod()
- {
- return elkSimplePriod;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ELKREPORTER_SIMPLE_PERIOD )
- public void setElkSimplePriod( int elkSimplePriod )
- {
- this.elkSimplePriod = elkSimplePriod;
- }
-
- public int getElkJVMPriod()
- {
- return elkJVMPriod;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ELKREPORTER_JVM_PERIOD )
- public void setElkJVMPriod( int elkJVMPriod )
- {
- this.elkJVMPriod = elkJVMPriod;
- }
-
- public int getElkHealthCheckPriod()
- {
- return elkHealthCheckPriod;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ELKREPORTER_HEALTHCHECK_PERIOD )
- public void setElkHealthCheckPriod( int elkHealthCheckPriod )
- {
- this.elkHealthCheckPriod = elkHealthCheckPriod;
- }
-
- public String getElkHosts()
- {
- return elkHosts;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ELKREPORTER_HOSTS )
- public void setElkHosts( String elkHosts )
- {
- this.elkHosts = elkHosts;
- }
-
- public String getElkIndex()
- {
- return elkIndex;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ELKREPORTER_INDEX )
- public void setElkIndex( String elkIndex )
- {
- this.elkIndex = elkIndex;
- }
-
- public String getZabbixPrefix()
- {
- return zabbixPrefix;
- }
- @ConfigName( INDY_METRICS_REPORTER_ZABBIXREPORTER_PREFIX )
- public void setZabbixPrefix( String zabbixPrefix )
- {
- this.zabbixPrefix = zabbixPrefix;
- }
-
- public int getZabbixSimplePriod()
- {
- return zabbixSimplePriod;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ZABBIXREPORTER_SIMPLE_PERIOD )
- public void setZabbixSimplePriod( int zabbixSimplePriod )
- {
- this.zabbixSimplePriod = zabbixSimplePriod;
- }
-
- public int getZabbixJVMPriod()
- {
- return zabbixJVMPriod;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ZABBIXREPORTER_JVM_PERIOD )
- public void setZabbixJVMPriod( int zabbixJVMPriod )
- {
- this.zabbixJVMPriod = zabbixJVMPriod;
- }
-
- public int getZabbixHealthcheckPeriod()
- {
- return zabbixHealthcheckPeriod;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ZABBIXREPORTER_HEALTHCHECK_PERIOD )
- public void setZabbixHealthcheckPeriod( int zabbixHealthcheckPeriod )
- {
- this.zabbixHealthcheckPeriod = zabbixHealthcheckPeriod;
- }
-
- public String getZabbixApiHostUrl()
- {
- return zabbixApiHostUrl;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ZABBIXREPORTER_API_HOST_URL )
- public void setZabbixApiHostUrl( String zabbixApiHostUrl )
- {
- this.zabbixApiHostUrl = zabbixApiHostUrl;
- }
-
- public String getZabbixHost()
- {
- return zabbixHost;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ZABBIXREPORTER_HOST )
- public void setZabbixHost( String zabbixHost )
- {
- this.zabbixHost = zabbixHost;
- }
-
- public int getZabbixPort()
- {
- return zabbixPort;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ZABBIXREPORTER_HOST_PORT )
- public void setZabbixPort( int zabbixPort )
- {
- this.zabbixPort = zabbixPort;
- }
-
- public String getZabbixUser()
- {
- return zabbixUser;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ZABBIXREPORTER_USER )
- public void setZabbixUser( String zabbixUser )
- {
- this.zabbixUser = zabbixUser;
- }
-
- public String getZabbixPwd()
- {
- return zabbixPwd;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ZABBIXREPORTER_PWD )
- public void setZabbixPwd( String zabbixPwd )
- {
- this.zabbixPwd = zabbixPwd;
- }
-
- public String getZabbixLocalHostName()
- {
- return zabbixLocalHostName;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ZABBIXREPORTER_LOCAL_HOSTNAME )
- public void setZabbixLocalHostName( String zabbixLocalHostName )
- {
- this.zabbixLocalHostName = zabbixLocalHostName;
- }
-
- public boolean isReporterEnabled()
- {
- return reporterEnabled;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_ISENABLED )
- public void setReporterEnabled( boolean reporterEnabled )
- {
- this.reporterEnabled = reporterEnabled;
- }
-
- public boolean isMetricsEnabled()
- {
- return metricsEnabled;
- }
-
- @ConfigName( INDY_METRICS_ISENABLED )
- public void setMetricsEnabled( boolean metricsEnabled )
- {
- this.metricsEnabled = metricsEnabled;
- }
-
- @ConfigName( INDY_METRICS_METER_RATIO )
- public void setMeterRatio( int meterRatio )
- {
- this.meterRatio = meterRatio;
- }
-
- public int getMeterRatio()
- {
- return meterRatio == null ? DEFAULT_METER_RATIO : meterRatio;
- }
-
- public String getReporter()
- {
- return reporter;
- }
-
- @ConfigName( INDY_METRICS_REPORTER )
- public void setReporter( String reporter )
- {
- this.reporter = reporter;
- }
-
- public String getGrphiterHostName()
- {
- return grphiterHostName;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_GRPHITEREPORTER_HOSTNAME )
- public void setGrphiterHostName( String grphiterHostName )
- {
- this.grphiterHostName = grphiterHostName;
- }
-
- public int getGrphiterPort()
- {
- return grphiterPort;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_GRPHITEREPORTER_PORT )
- public void setGrphiterPort( int grphiterPort )
- {
- this.grphiterPort = grphiterPort;
- }
-
- public String getGrphiterPrefix()
- {
- return grphiterPrefix;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_GRPHITEREPORTER_PREFIX )
- public void setGrphiterPrefix( String grphiterPrefix )
- {
- this.grphiterPrefix = grphiterPrefix;
- }
-
- public int getGrphiterSimplePriod()
- {
- return grphiterSimplePriod;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_GRPHITEREPORTER_SIMPLE_PERIOD )
- public void setGrphiterSimplePriod( int grphiterSimplePriod )
- {
- this.grphiterSimplePriod = grphiterSimplePriod;
- }
-
- public int getGrphiterJVMPriod()
- {
- return grphiterJVMPriod;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_GRPHITEREPORTER_JVM_PERIOD )
- public void setGrphiterJVMPriod( int grphiterJVMPriod )
- {
- this.grphiterJVMPriod = grphiterJVMPriod;
- }
-
- public int getGrphiterHealthcheckPeriod()
- {
- return grphiterHealthcheckPeriod;
- }
-
- @ConfigName( INDY_METRICS_REPORTER_GRPHITEREPORTER_HEALTHCHECK_PERIOD )
- public void setGrphiterHealthcheckPeriod( int grphiterHealthcheckPeriod )
- {
- this.grphiterHealthcheckPeriod = grphiterHealthcheckPeriod;
- }
-
- @ConfigName( INDY_METRICS_KOJI_ENABLED )
- public void setKojiMetricEnabled( boolean kojiMetricEnabled )
- {
- this.kojiMetricEnabled = kojiMetricEnabled;
- }
-
- public boolean isKojiMetricEnabled()
- {
- return kojiMetricEnabled;
- }
-
- public boolean isPathDBMetricsEnabled()
- {
- return pathDBMetricsEnabled;
- }
-
- @ConfigName( INDY_METRICS_PATH_DB_ENABLED )
- public void setPathDBMetricsEnabled( boolean pathDBMetricsEnabled )
- {
- this.pathDBMetricsEnabled = pathDBMetricsEnabled;
- }
-
- public String getPathDBMetricsOperations()
- {
- return pathDBMetricsOperations;
- }
-
- @ConfigName( INDY_METRICS_PATH_DB_OPERATIONS )
- public void setPathDBMetricsOperations( String pathDBMetricsOperations )
- {
- this.pathDBMetricsOperations = pathDBMetricsOperations;
- }
-
- @ConfigName( INDY_METRICS_ISPN_ENABLED )
- public void setIspnMetricsEnabled( boolean ispnMetricsEnabled )
- {
- this.ispnMetricsEnabled = ispnMetricsEnabled;
- }
-
- public boolean isIspnMetricsEnabled()
- {
- return ispnMetricsEnabled;
- }
-
- @ConfigName( INDY_METRICS_ISPN_GAUGES )
- public void setIspnGauges( String ispnGauges )
- {
- this.ispnGauges = ispnGauges;
- }
-
- public String getIspnGauges()
- {
- return ispnGauges;
- }
-
- public String getDefaultConfigFileName()
- {
- return "conf.d/metrics.conf";
- }
-
- public InputStream getDefaultConfig()
- {
- return Thread.currentThread().getContextClassLoader().getResourceAsStream( "default-metrics.conf" );
- }
-
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/jaxrs/interceptor/MetricsInterceptor.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/jaxrs/interceptor/MetricsInterceptor.java
deleted file mode 100644
index fda47a27f4..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/jaxrs/interceptor/MetricsInterceptor.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.jaxrs.interceptor;
-
-import com.codahale.metrics.Timer;
-import org.commonjava.indy.measure.annotation.Measure;
-import org.commonjava.indy.measure.annotation.MetricNamed;
-import org.commonjava.indy.metrics.IndyMetricsManager;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.inject.Inject;
-import javax.interceptor.AroundInvoke;
-import javax.interceptor.Interceptor;
-import javax.interceptor.InvocationContext;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import static com.codahale.metrics.MetricRegistry.name;
-import static org.commonjava.indy.IndyContentConstants.NANOS_PER_MILLISECOND;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.DEFAULT;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.EXCEPTION;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.METER;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.TIMER;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getDefaultName;
-import static org.commonjava.indy.metrics.IndyMetricsConstants.getName;
-
-@Interceptor
-@Measure
-public class MetricsInterceptor
-{
- private final Logger logger = LoggerFactory.getLogger( getClass() );
-
- @Inject
- private IndyMetricsManager metricsManager;
-
- @Inject
- private IndyMetricsConfig config;
-
- @AroundInvoke
- public Object operation( InvocationContext context ) throws Exception
- {
- if ( !config.isMetricsEnabled() || !metricsManager.checkMetered() )
- {
- return context.proceed();
- }
-
- Method method = context.getMethod();
- Measure measure = method.getAnnotation( Measure.class );
- if ( measure == null )
- {
- measure = method.getDeclaringClass().getAnnotation( Measure.class );
- }
-
- if ( measure == null )
- {
- return context.proceed();
- }
-
- String defaultName = getDefaultName( context.getMethod().getDeclaringClass(), context.getMethod().getName() );
- logger.trace( "Gathering metrics for: {} using context: {}", defaultName, context.getContextData() );
-
- Map timers = initTimers( measure, defaultName );
- List exceptionMeters = initMeters( measure, EXCEPTION, defaultName );
- List meters = initMeters( measure, METER, defaultName );
-
- List startMeters = meters.stream().map( name -> name( name, "starts" ) ).collect( Collectors.toList() );
-
- long start = System.nanoTime();
-
- try
- {
- metricsManager.mark( startMeters );
-
- return context.proceed();
- }
- catch ( Exception e )
- {
- metricsManager.mark( exceptionMeters );
-
- List eClassMeters = exceptionMeters.stream()
- .map( name -> name( name, e.getClass().getSimpleName() ) )
- .filter( name -> !exceptionMeters.contains( name ) )
- .collect( Collectors.toList() );
-
- metricsManager.mark( eClassMeters );
-
- throw e;
- }
- finally
- {
- metricsManager.stopTimers( timers );
- metricsManager.mark( meters );
-
- double elapsed = (System.nanoTime() - start) / NANOS_PER_MILLISECOND;
-
- metricsManager.accumulate( defaultName, elapsed );
- }
- }
-
- private List initMeters( final Measure measure, String classifier,
- final String defaultName )
- {
- List meters = new ArrayList<>();
-
- meters.add( getName( config.getNodePrefix(), DEFAULT, defaultName, classifier ) );
-
- logger.trace( "Got meter for {} with classifier: {}: {}", defaultName, classifier, meters );
-
- return meters;
- }
-
- private Map initTimers( final Measure measure, String defaultName )
- {
- Map timers = new HashMap<>();
-
- String name = getName( config.getNodePrefix(), DEFAULT, defaultName, TIMER );
- timers.put(name,
- metricsManager.startTimer( name ) );
-
- return timers;
- }
-
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/reporter/ReporterIntializer.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/reporter/ReporterIntializer.java
deleted file mode 100644
index 3732f7c56a..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/reporter/ReporterIntializer.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.reporter;
-
-import com.codahale.metrics.ConsoleReporter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.graphite.Graphite;
-import com.codahale.metrics.graphite.GraphiteReporter;
-import org.commonjava.indy.metrics.conf.IndyMetricsConfig;
-import org.commonjava.indy.metrics.zabbix.cache.ZabbixCacheStorage;
-import org.commonjava.indy.metrics.zabbix.reporter.IndyZabbixReporter;
-import org.commonjava.indy.metrics.zabbix.sender.IndyZabbixSender;
-import org.commonjava.indy.subsys.http.IndyHttpProvider;
-import org.elasticsearch.metrics.ElasticsearchReporter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Created by xiabai on 3/3/17.
- */
-@ApplicationScoped
-public class ReporterIntializer
-{
- private final static String FILTER_JVM = "jvm";
-
- public final static String INDY_METRICS_REPORTER_GRPHITEREPORTER = "graphite";
-
- public final static String INDY_METRICS_REPORTER_CONSOLEREPORTER = "console";
-
- public final static String INDY_METRICS_REPORTER_ZABBIXREPORTER = "zabbix";
-
- public final static String INDY_METRICS_REPORTER_ELKEPORTER = "elasticsearch";
-
- @Inject
- private IndyHttpProvider indyHttpProvider;
-
- @Inject
- private ZabbixCacheStorage cache;
-
- @Inject
- private IndyMetricsConfig config;
-
- public void initReporter( MetricRegistry metrics ) throws Exception
- {
-
- if ( !config.isReporterEnabled() )
- {
- initConsoleReporter( metrics, config );
- return;
- }
- if ( this.isExistReporter( INDY_METRICS_REPORTER_GRPHITEREPORTER ) )
- {
- initGraphiteReporterForSimpleMetric( metrics, config );
- initGraphiteReporterForJVMMetric( metrics, config );
- }
-
- if ( this.isExistReporter( INDY_METRICS_REPORTER_ZABBIXREPORTER ) )
- {
- this.initZabbixReporterForJVMMetric( metrics, config );
- this.initZabbixReporterForSimpleMetric( metrics, config );
- }
-
- if ( this.isExistReporter( INDY_METRICS_REPORTER_CONSOLEREPORTER ) )
- {
- initConsoleReporter( metrics, config );
- }
-
- if ( this.isExistReporter( INDY_METRICS_REPORTER_ELKEPORTER ) )
- {
- initELKReporterForSimpleMetric( metrics, config );
- initELKReporterForJVMMetric( metrics, config );
- }
- }
-
- private boolean isJvmMetric( String name )
- {
- return name.contains( FILTER_JVM );
- }
-
- private boolean isApplicationMetric( String name )
- {
- return !isJvmMetric( name );
- }
-
- private void initELKReporterForSimpleMetric( MetricRegistry metrics, IndyMetricsConfig config ) throws IOException
- {
- Logger logger = LoggerFactory.getLogger( getClass() );
- logger.info( "Setting up Elasticsearch reporter for Indy metrics" );
- ElasticsearchReporter reporter = ElasticsearchReporter.forRegistry( metrics )
- .hosts( config.getElkHosts().split( ";" ) )
- .index( config.getElkIndex() )
- .indexDateFormat( "YYYY-MM-dd" )
- .filter( ( name, metric ) -> isApplicationMetric( name ) )
- .build();
-
- reporter.start( config.getElkSimplePriod(), TimeUnit.SECONDS );
- }
-
- private void initELKReporterForJVMMetric( MetricRegistry metrics, IndyMetricsConfig config ) throws IOException
- {
- Logger logger = LoggerFactory.getLogger( getClass() );
- logger.info( "Setting up Elasticsearch reporter for JVM metrics" );
- ElasticsearchReporter reporter = ElasticsearchReporter.forRegistry( metrics )
- .hosts( config.getElkHosts().split( ";" ) )
- .index( config.getElkIndex() )
- .indexDateFormat( "YYYY-MM-dd" )
- .filter( ( name, metric ) -> isJvmMetric( name ) )
- .build();
-
- reporter.start( config.getElkJVMPriod(), TimeUnit.SECONDS );
- }
-
- private void initConsoleReporter( MetricRegistry metrics, IndyMetricsConfig config )
- {
- ConsoleReporter.forRegistry( metrics )
- .build()
- .start( config.getConsolePeriod(),
- TimeUnit.SECONDS );
- }
-
- private void initGraphiteReporterForSimpleMetric( MetricRegistry metrics, IndyMetricsConfig config )
- {
- final Graphite graphite =
- new Graphite( new InetSocketAddress( config.getGrphiterHostName(), config.getGrphiterPort() ) );
- final GraphiteReporter reporter = GraphiteReporter.forRegistry( metrics )
- .prefixedWith( config.getGrphiterPrefix() )
- .convertRatesTo( TimeUnit.SECONDS )
- .convertDurationsTo( TimeUnit.MILLISECONDS )
- .filter( ( name, metric ) -> isApplicationMetric( name ) )
- .build( graphite );
- reporter.start( config.getGrphiterSimplePriod(), TimeUnit.SECONDS );
- }
-
- private void initGraphiteReporterForJVMMetric( MetricRegistry metrics, IndyMetricsConfig config )
- {
- final Graphite graphite =
- new Graphite( new InetSocketAddress( config.getGrphiterHostName(), config.getGrphiterPort() ) );
- final GraphiteReporter reporter = GraphiteReporter.forRegistry( metrics )
- .prefixedWith( config.getGrphiterPrefix() )
- .convertRatesTo( TimeUnit.SECONDS )
- .convertDurationsTo( TimeUnit.MILLISECONDS )
- .filter( ( name, metric ) -> isJvmMetric( name ) )
- .build( graphite );
- reporter.start( config.getGrphiterJVMPriod(), TimeUnit.SECONDS );
- }
-
- private boolean isExistReporter( String reporter )
- {
- return config.getReporter().contains( reporter );
-
- }
-
- private void initZabbixReporterForSimpleMetric( MetricRegistry metrics, IndyMetricsConfig config )
- {
- IndyZabbixReporter reporter = initZabbixReporter( metrics, config )
- .filter( ( name, metric ) -> isApplicationMetric( name ) )
- .build( initZabbixSender() );
-
- reporter.start( config.getZabbixSimplePriod(), TimeUnit.SECONDS );
- }
-
- private void initZabbixReporterForJVMMetric( MetricRegistry metrics, IndyMetricsConfig config )
- {
- IndyZabbixReporter reporter = initZabbixReporter( metrics, config )
- .filter( ( name, metric ) -> isJvmMetric( name ) )
- .build( initZabbixSender() );
-
- reporter.start( config.getZabbixJVMPriod(), TimeUnit.SECONDS );
- }
-
- private IndyZabbixReporter.Builder initZabbixReporter( MetricRegistry metrics, IndyMetricsConfig config )
- {
- return IndyZabbixReporter.forRegistry( metrics )
- .prefix( config.getZabbixPrefix() )
- .convertRatesTo( TimeUnit.SECONDS )
- .convertDurationsTo( TimeUnit.MILLISECONDS )
- .hostName( config.getZabbixLocalHostName() );
- }
-
- private IndyZabbixSender initZabbixSender()
- {
- final IndyZabbixSender zabbixSender = IndyZabbixSender.create()
- .zabbixHost( config.getZabbixHost() )
- .zabbixPort( config.getZabbixPort() )
- .zabbixHostUrl( config.getZabbixApiHostUrl() )
- .zabbixUserName( config.getZabbixUser() )
- .zabbixUserPwd( config.getZabbixPwd() )
- .hostName( config.getZabbixLocalHostName() )
- .bCreateNotExistZabbixSender( true )
- .indyHttpProvider( indyHttpProvider )
- .metricsZabbixCache( cache )
- .build();
- return zabbixSender;
- }
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/IndyZabbixApi.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/IndyZabbixApi.java
deleted file mode 100644
index e39d17e197..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/IndyZabbixApi.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.api;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.commons.io.IOUtils;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-
-/**
- * Created by xiabai on 3/31/17.
- */
-public class IndyZabbixApi
- implements ZabbixApi
-{
- private static final Logger logger = LoggerFactory.getLogger( IndyZabbixApi.class );
-
- private CloseableHttpClient httpClient;
-
- private URI uri;
-
- private volatile String auth;
-
- public IndyZabbixApi( String url )
- {
- try
- {
- uri = new URI( url.trim() );
- }
- catch ( URISyntaxException e )
- {
- logger.error( "url invalid", e );
- }
- }
-
- public IndyZabbixApi( URI uri )
- {
- this.uri = uri;
- }
-
- public IndyZabbixApi( String url, CloseableHttpClient httpClient )
- {
- this( url );
- this.httpClient = httpClient;
- }
-
- public IndyZabbixApi( URI uri, CloseableHttpClient httpClient )
- {
- this( uri );
- this.httpClient = httpClient;
- }
-
- @Override
- public void init()
- {
- if ( httpClient == null )
- {
- httpClient = HttpClients.custom().build();
- }
- }
-
- @Override
- public void destroy()
- {
- IOUtils.closeQuietly( httpClient );
- }
-
- @Override
- public boolean login( String user, String password ) throws IOException
- {
- this.auth = null;
- Request request = RequestBuilder.newBuilder()
- .paramEntry( "user", user )
- .paramEntry( "password", password )
- .method( "user.login" )
- .build();
- JsonNode response = call( request );
- String auth = response.get( "result" ).asText();
- if ( auth != null && !auth.isEmpty() )
- {
- this.auth = auth;
- return true;
- }
- return false;
- }
-
- @Override
- public String apiVersion() throws IOException
- {
- Request request = RequestBuilder.newBuilder().method( "apiinfo.version" ).build();
- JsonNode response = call( request );
- return response.get( "result" ).asText();
- }
-
- /**
- *
- * @param name
- * @return hostid
- */
- public String getHost( String name ) throws IOException
- {
- ObjectMapper mapper = new ObjectMapper();
- ObjectNode jsonNode = mapper.createObjectNode();
- ArrayNode arrayNode = mapper.createArrayNode();
- arrayNode.add( name );
- jsonNode.put( "host", arrayNode );
- Request request = RequestBuilder.newBuilder().method( "host.get" ).paramEntry( "filter", jsonNode ).build();
- JsonNode response = call( request );
- if ( response.get( "result" ).isNull() || response.get( "result" ).get( 0 ) == null )
- {
- return null;
- }
- return response.get( "result" ).get( 0 ).get( "hostid" ).asText();
- }
-
- /**
- *
- * @param host
- * @param groupId
- * @param ip
- * @return hostid
- */
- public String hostCreate( String host, String groupId, String ip ) throws IOException
- {
- // host not exists, create it.
- ObjectMapper mapper = new ObjectMapper();
- ArrayNode groups = mapper.createArrayNode();
- ObjectNode group = mapper.createObjectNode();
- group.put( "groupid", groupId );
- groups.add( group );
-
- // "interfaces": [
- // {
- // "type": 1,
- // "main": 1,
- // "useip": 1,
- // "ip": "192.168.3.1",
- // "dns": "",
- // "port": "10050"
- // }
- // ],
-
- ObjectNode interface1 = mapper.createObjectNode();
- // JSONObject interface1 = new JSONObject();
- interface1.put( "type", 1 );
- interface1.put( "main", 1 );
- interface1.put( "useip", 1 );
- interface1.put( "ip", ip );
- interface1.put( "dns", "" );
- interface1.put( "port", "10050" );
-
- Request request = RequestBuilder.newBuilder()
- .method( "host.create" )
- .paramEntry( "host", host )
- .paramEntry( "groups", groups )
- .paramEntry( "interfaces", new Object[] { interface1 } )
- .build();
- JsonNode response = call( request );
- return response.get( "result" ).get( "hostids" ).get( 0 ).asText();
- }
-
- /**
- *
- * @param name
- * @return groupId
- */
- public String getHostgroup( String name ) throws IOException
- {
- ObjectMapper mapper = new ObjectMapper();
- ObjectNode jsonNode = mapper.createObjectNode();
- ArrayNode arrayNode = mapper.createArrayNode();
- arrayNode.add( name );
- jsonNode.put( "name", arrayNode );
- Request request =
- RequestBuilder.newBuilder().method( "hostgroup.get" ).paramEntry( "filter", jsonNode ).build();
- JsonNode response = call( request );
- if ( response.get( "result" ).isNull() || response.get( "result" ).get( 0 ) == null )
- {
- return null;
- }
- return response.get( "result" ).get( 0 ).get( "groupid" ).asText();
- }
-
- /**
- *
- * @param name
- * @return groupId
- */
- public String hostgroupCreate( String name ) throws IOException
- {
- Request request = RequestBuilder.newBuilder().method( "hostgroup.create" ).paramEntry( "name", name ).build();
- JsonNode response = call( request );
- return response.get( "result" ).get( "groupids" ).get( 0 ).toString();
- }
-
- @Override
- public JsonNode call( Request request ) throws IOException
- {
- if ( request.getAuth() == null )
- {
- request.setAuth( this.auth );
- }
- ObjectMapper mapper = new ObjectMapper();
- HttpUriRequest httpRequest = org.apache.http.client.methods.RequestBuilder.post()
- .setUri( uri )
- .addHeader( "Content-Type",
- "application/json" )
- .setEntity( new StringEntity(
- mapper.writeValueAsString(
- request ),
- ContentType.APPLICATION_JSON ) )
- .build();
- CloseableHttpResponse response = httpClient.execute( httpRequest );
- String result = EntityUtils.toString( response.getEntity() );
- logger.info( result );
- return mapper.readTree( result );
- }
-
- public String createItem( String host, String item, String hostid, int valueType ) throws IOException
- {
- // create item
- int type = 2; // trapper
- int value_type = valueType; // float
- int delay = 30;
- Request request = RequestBuilder.newBuilder()
- .method( "item.create" )
- .paramEntry( "name", item )
- .paramEntry( "key_", item )
- .paramEntry( "hostid", hostid )
- .paramEntry( "type", type )
- .paramEntry( "value_type", value_type )
- .paramEntry( "delay", delay )
- .build();
-
- JsonNode response = call( request );
- return response.get( "result" ).findValues( "itemids" ).get( 0 ).asText();
- }
-
- public String getItem( String host, String item, String hostid ) throws IOException
- {
- ObjectMapper mapper = new ObjectMapper();
-
- ArrayNode groups = mapper.createArrayNode();
- ObjectNode search = mapper.createObjectNode();
- search.put( "key_", item );
- Request getRequest = RequestBuilder.newBuilder()
- .method( "item.get" )
- .paramEntry( "hostids", hostid )
- .paramEntry( "search", search )
- .build();
- JsonNode response = call( getRequest );
- if ( response.get( "result" ).isNull() || response.get( "result" ).get( 0 ) == null )
- {
- return null;
- }
- return response.get( "result" ).get( 0 ).get( "itemid" ).asText();
- }
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/Request.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/Request.java
deleted file mode 100644
index 568b55358a..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/Request.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.api;
-
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class Request {
- private String jsonrpc = "2.0";
-
- private Map params = new HashMap<>();
-
- private String method;
-
- private String auth;
-
- private Integer id;
-
- public void putParam(String key, Object value) {
- params.put(key, value);
- }
-
- public Object removeParam(String key) {
- return params.remove(key);
- }
-
- public String getJsonrpc() {
- return jsonrpc;
- }
-
- public void setJsonrpc(String jsonrpc) {
- this.jsonrpc = jsonrpc;
- }
-
- public Map getParams() {
- return params;
- }
-
- public void setParams(Map params) {
- this.params = params;
- }
-
- public String getMethod() {
- return method;
- }
-
- public void setMethod(String method) {
- this.method = method;
- }
-
- public String getAuth() {
- return auth;
- }
-
- public void setAuth(String auth) {
- this.auth = auth;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- @Override
- public String toString() {
- ObjectMapper mapper = new ObjectMapper();
-
- try
- {
- return mapper.writeValueAsString( this );
- }
- catch ( JsonProcessingException e )
- {
- e.printStackTrace();
- throw new RuntimeException( e );
- }
- }
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/RequestBuilder.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/RequestBuilder.java
deleted file mode 100644
index af39c5448c..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/RequestBuilder.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.api;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-public class RequestBuilder {
- private static final AtomicInteger nextId = new AtomicInteger(1);
-
- private Request request = new Request();
-
- private RequestBuilder(){
-
- }
-
- static public RequestBuilder newBuilder(){
- return new RequestBuilder();
- }
-
- public Request build(){
- if(request.getId() == null){
- request.setId(nextId.getAndIncrement());
- }
- return request;
- }
-
- public RequestBuilder version( String version){
- request.setJsonrpc(version);
- return this;
- }
-
- public RequestBuilder paramEntry( String key, Object value){
- request.putParam(key, value);
- return this;
- }
-
- /**
- * Do not necessary to call this method.If don not set id, ZabbixApi will auto set request auth..
- * @param auth
- * @return
- */
- public RequestBuilder auth( String auth){
- request.setAuth(auth);
- return this;
- }
-
- public RequestBuilder method( String method){
- request.setMethod(method);
- return this;
- }
-
- /**
- * Do not necessary to call this method.If don not set id, RequestBuilder will auto generate.
- * @param id
- * @return
- */
- public RequestBuilder id( Integer id){
- request.setId(id);
- return this;
- }
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/ZabbixApi.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/ZabbixApi.java
deleted file mode 100644
index 8bf6eccacf..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/api/ZabbixApi.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.api;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-import java.io.IOException;
-
-public interface ZabbixApi
-{
-
- void init();
-
- void destroy();
-
- String apiVersion() throws IOException;
-
- JsonNode call( Request request ) throws IOException;
-
- boolean login( String user, String password ) throws IOException;
-
- String hostCreate( String host, String groupId, String ip ) throws IOException;
-
- String hostgroupCreate( String name ) throws IOException;
-
- String createItem( String host, String item, String hostid, int valueType ) throws IOException;
-
- String getItem( String host, String item, String hostCache ) throws IOException;
-
- String getHost( String name ) throws IOException;
-
- String getHostgroup( String name ) throws IOException;
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/cache/ZabbixCacheStorage.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/cache/ZabbixCacheStorage.java
deleted file mode 100644
index fa761b97df..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/cache/ZabbixCacheStorage.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.cache;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.commonjava.indy.action.IndyLifecycleException;
-import org.commonjava.indy.action.StartupAction;
-import org.commonjava.indy.subsys.datafile.DataFile;
-import org.commonjava.indy.subsys.datafile.DataFileManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Created by xiabai on 5/8/17.
- */
-
-@ApplicationScoped
-public class ZabbixCacheStorage
- implements StartupAction
-{
- private static final Logger logger = LoggerFactory.getLogger( ZabbixCacheStorage.class );
-
- private final static String ZABBIX_ID = "zabbix";
-
- private final static String ZABBIX_HOSTGROUP = "hostGroupCache.json";
-
- private final static String ZABBIX_HOST = "hostCache.json";
-
- private final static String ZABBIX_ITEM = "itemCache.json";
-
- private DataFile hostGroupCacheDataFile = null;
-
- private DataFile hostCacheDataFile = null;
-
- private DataFile itemCacheDataFile = null;
-
- // name, hostGroupId
- private ConcurrentHashMap hostGroupCache = new ConcurrentHashMap();
-
- // name, hostId
- private ConcurrentHashMap hostCache = new ConcurrentHashMap();
-
- // name, itemId
- private ConcurrentHashMap itemCache = new ConcurrentHashMap();
-
- @Inject
- private DataFileManager dataFileManager;
-
- @Override
- public int getStartupPriority()
- {
- return 30;
- }
-
- @Override
- public String getId()
- {
- return ZABBIX_ID;
- }
-
- @Override
- public void start() throws IndyLifecycleException
- {
- this.reLoadHostGroup();
- this.reLoadHost();
- this.reLoadItem();
- }
-
- private void reLoadHostGroup()
- {
- hostGroupCacheDataFile = dataFileManager.getDataFile( ZABBIX_ID + "/" + ZABBIX_HOSTGROUP );
-
- ObjectMapper mapper = new ObjectMapper();
- if ( hostGroupCacheDataFile.exists() )
- {
- try
- {
- HashMap m = new HashMap( );
- m.put( "test","123" );
- mapper.writeValueAsString( m );
- String hostGroups = hostGroupCacheDataFile.readString();
- hostGroupCache = mapper.readValue( hostGroups, ConcurrentHashMap.class );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- logger.error( "read hostGroup cache from data file have a error:" + e );
- }
- }
- }
-
- private void reLoadHost()
- {
- hostCacheDataFile = dataFileManager.getDataFile( ZABBIX_ID + "/" + ZABBIX_HOST );
-
- ObjectMapper mapper = new ObjectMapper();
- if ( hostCacheDataFile.exists() )
- {
- try
- {
- String hosts = hostCacheDataFile.readString();
- hostCache = mapper.readValue( hosts, ConcurrentHashMap.class );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- logger.error( "read hosts cache from data file have a error:" + e );
- }
- }
- }
-
- private void reLoadItem()
- {
- itemCacheDataFile = dataFileManager.getDataFile( ZABBIX_ID + "/" + ZABBIX_ITEM );
- ObjectMapper mapper = new ObjectMapper();
-
- if ( itemCacheDataFile.exists() )
- {
- try
- {
- String items = itemCacheDataFile.readString();
- itemCache = mapper.readValue( items, ConcurrentHashMap.class );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- logger.error( "read items cache from data file have a error:" + e );
- }
- }
- }
-
- public void putHostGroup( String name, String id ) throws IOException
- {
- ObjectMapper mapper = new ObjectMapper();
- hostGroupCache.put( name, id );
- hostGroupCacheDataFile.writeString( mapper.writeValueAsString( hostGroupCache ), "UTF-8", null );
- }
-
- public String getHostGroup( String name )
- {
- return hostGroupCache.get( name );
- }
-
- public void putHost( String name, String id ) throws IOException
- {
- ObjectMapper mapper = new ObjectMapper();
- hostCache.put( name, id );
- hostCacheDataFile.writeString( mapper.writeValueAsString( hostCache ), "UTF-8", null );
- }
-
- public String getHost( String name )
- {
- return hostCache.get( name );
- }
-
- public void putItem( String name, String id ) throws IOException
- {
- ObjectMapper mapper = new ObjectMapper();
- itemCache.put( name, id );
- itemCacheDataFile.writeString( mapper.writeValueAsString( itemCache ), "UTF-8", null );
- }
-
- public String getItem( String name )
- {
- return itemCache.get( name );
- }
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/reporter/HostUtil.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/reporter/HostUtil.java
deleted file mode 100644
index 424b0e0c33..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/reporter/HostUtil.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.reporter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.net.SocketException;
-import java.net.UnknownHostException;
-import java.util.Enumeration;
-
-/**
- * http://stackoverflow.com/questions/7348711/recommended-way-to-get-hostname-in
- * -java
- *
- */
-public class HostUtil
-{
- private static final Logger logger = LoggerFactory.getLogger( HostUtil.class);
-
- public static void main(String[] args) {
- System.err.println(getHostName());
- System.err.println(getHostAddress());
- System.err.println(getNotLoopbackAddress());
- }
-
- public static String getHostName() {
- try {
- String hostName = InetAddress.getLocalHost().getHostName();
- if (hostName != null && !hostName.isEmpty()) {
- return hostName;
- }
- } catch (UnknownHostException e) {
- logger.error("get hostName error!", e);
- }
-
- String host = System.getenv("COMPUTERNAME");
- if (host != null)
- return host;
- host = System.getenv("HOSTNAME");
- if (host != null)
- return host;
-
- return null;
- }
-
- public static String getNotLoopbackAddress() {
- String hostName = null;
- Enumeration interfaces;
- try {
- interfaces = NetworkInterface.getNetworkInterfaces();
- while (interfaces.hasMoreElements()) {
- NetworkInterface nic = interfaces.nextElement();
- Enumeration addresses = nic.getInetAddresses();
- while (hostName == null && addresses.hasMoreElements()) {
- InetAddress address = addresses.nextElement();
- if (!address.isLoopbackAddress()) {
- hostName = address.getHostName();
- }
- }
- }
- } catch (SocketException e) {
- logger.error("getNotLoopbackAddress error!", e);
- }
- return hostName;
- }
-
- public static String getHostAddress() {
- try {
- return InetAddress.getLocalHost().getHostAddress();
- } catch (UnknownHostException e) {
- logger.error("get hostAddress error!", e);
- }
-
- return null;
- }
-
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/reporter/IndyZabbixReporter.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/reporter/IndyZabbixReporter.java
deleted file mode 100644
index 4c1e5ddf58..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/reporter/IndyZabbixReporter.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.reporter;
-
-import com.codahale.metrics.Counter;
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.Histogram;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.Metered;
-import com.codahale.metrics.MetricFilter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.ScheduledReporter;
-import com.codahale.metrics.Snapshot;
-import com.codahale.metrics.Timer;
-import org.commonjava.indy.metrics.exception.IndyMetricsException;
-import org.commonjava.indy.metrics.zabbix.sender.DataObject;
-import org.commonjava.indy.metrics.zabbix.sender.IndyZabbixSender;
-import org.commonjava.indy.metrics.zabbix.sender.SenderResult;
-import org.commonjava.indy.subsys.http.IndyHttpException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Created by xiabai on 3/29/17.
- */
-public class IndyZabbixReporter
- extends ScheduledReporter
-{
- private static final Logger logger = LoggerFactory.getLogger( IndyZabbixReporter.class );
-
- private final IndyZabbixSender indyZabbixSender;
-
- private final String hostName;
-
- private final String prefix;
-
- private final String suffix;
-
- public static Builder forRegistry( MetricRegistry registry )
- {
- return new Builder( registry );
- }
-
- public static class Builder
- {
-
- private final MetricRegistry registry;
-
- private String name = "zabbix-reporter";
-
- private TimeUnit rateUnit;
-
- private TimeUnit durationUnit;
-
- private MetricFilter filter;
-
- private String hostName;
-
- private String prefix = "";
-
- private String suffix = "";
-
- private String zabbixHostName;
-
- private IndyZabbixSender indyZabbixSender;
-
- public Builder( MetricRegistry registry )
- {
- this.registry = registry;
-
- this.rateUnit = TimeUnit.SECONDS;
- this.durationUnit = TimeUnit.MILLISECONDS;
- this.filter = MetricFilter.ALL;
-
- }
-
- /**
- * Convert rates to the given time unit.
- *
- * @param rateUnit
- * a unit of time
- * @return {@code this}
- */
- public Builder convertRatesTo( TimeUnit rateUnit )
- {
- this.rateUnit = rateUnit;
- return this;
- }
-
- /**
- * Convert durations to the given time unit.
- *
- * @param durationUnit
- * a unit of time
- * @return {@code this}
- */
- public Builder convertDurationsTo( TimeUnit durationUnit )
- {
- this.durationUnit = durationUnit;
- return this;
- }
-
- /**
- * Only report metrics which match the given filter.
- *
- * @param filter
- * a {@link MetricFilter}
- * @return {@code this}
- */
- public Builder filter( MetricFilter filter )
- {
- this.filter = filter;
- return this;
- }
-
- /**
- * default register name is "zabbix-reporter".
- *
- * @param name
- * @return
- */
- public Builder name( String name )
- {
- this.name = name;
- return this;
- }
-
- public Builder hostName( String hostName )
- {
- this.hostName = hostName;
- return this;
- }
-
- public Builder prefix( String prefix )
- {
- this.prefix = prefix + ".";
- return this;
- }
-
- public Builder suffix( String suffix )
- {
- this.suffix = suffix;
- return this;
- }
-
- public Builder zabbixHostName( String zabbixHostName )
- {
- this.zabbixHostName = zabbixHostName;
- return this;
- }
-
- public Builder zabbixSender( IndyZabbixSender indyZabbixSender )
- {
- this.indyZabbixSender = indyZabbixSender;
- return this;
- }
-
- /**
- * Builds a {@link IndyZabbixReporter} with the given properties.
- *
- * @return a {@link IndyZabbixReporter}
- */
- public IndyZabbixReporter build( IndyZabbixSender zabbixSender )
- {
- if ( hostName == null )
- {
- hostName = HostUtil.getHostName();
- logger.info( name + " detect hostName: " + hostName );
- }
- return new IndyZabbixReporter( registry, name, rateUnit, durationUnit, filter, zabbixSender, hostName,
- prefix, suffix );
- }
- }
-
- private IndyZabbixReporter( MetricRegistry registry, String name, TimeUnit rateUnit, TimeUnit durationUnit,
- MetricFilter filter, IndyZabbixSender indyZabbixSender, String hostName, String prefix,
- String suffix )
- {
- super( registry, name, filter, rateUnit, durationUnit );
- this.indyZabbixSender = indyZabbixSender;
- this.hostName = hostName;
- this.prefix = prefix;
- this.suffix = suffix;
- }
-
- private DataObject toDataObject( String key, String keySuffix, Object value, long clock )
- {
- return DataObject.builder()
- .host( hostName )
- .key( prefix + key + keySuffix + suffix )
- .clock( clock )
- .value( String.valueOf( value ) )
- .build();
- }
-
- /**
- * for histograms.
- *
- * @param key
- * @param snapshot
- * @param dataObjectList
- */
- private void addSnapshotDataObject( String key, Snapshot snapshot, long clock, List dataObjectList )
- {
- dataObjectList.add( toDataObject( key, ".min", snapshot.getMin(), clock ) );
- dataObjectList.add( toDataObject( key, ".max", snapshot.getMax(), clock ) );
- dataObjectList.add( toDataObject( key, ".mean", snapshot.getMean(), clock ) );
- dataObjectList.add( toDataObject( key, ".stddev", snapshot.getStdDev(), clock ) );
- dataObjectList.add( toDataObject( key, ".median", snapshot.getMedian(), clock ) );
- dataObjectList.add( toDataObject( key, ".75th", snapshot.get75thPercentile(), clock ) );
- dataObjectList.add( toDataObject( key, ".95th", snapshot.get95thPercentile(), clock ) );
- dataObjectList.add( toDataObject( key, ".98th", snapshot.get98thPercentile(), clock ) );
- dataObjectList.add( toDataObject( key, ".99th", snapshot.get99thPercentile(), clock ) );
- dataObjectList.add( toDataObject( key, ".99.9th", snapshot.get999thPercentile(), clock ) );
- }
-
- /**
- * for timer.
- *
- * @param key
- * @param snapshot
- * @param dataObjectList
- */
- private void addSnapshotDataObjectWithConvertDuration( String key, Snapshot snapshot, long clock,
- List dataObjectList )
- {
- dataObjectList.add( toDataObject( key, ".min", convertDuration( snapshot.getMin() ), clock ) );
- dataObjectList.add( toDataObject( key, ".max", convertDuration( snapshot.getMax() ), clock ) );
- dataObjectList.add( toDataObject( key, ".mean", convertDuration( snapshot.getMean() ), clock ) );
- dataObjectList.add( toDataObject( key, ".stddev", convertDuration( snapshot.getStdDev() ), clock ) );
- dataObjectList.add( toDataObject( key, ".median", convertDuration( snapshot.getMedian() ), clock ) );
- dataObjectList.add( toDataObject( key, ".75th", convertDuration( snapshot.get75thPercentile() ), clock ) );
- dataObjectList.add( toDataObject( key, ".95th", convertDuration( snapshot.get95thPercentile() ), clock ) );
- dataObjectList.add( toDataObject( key, ".98th", convertDuration( snapshot.get98thPercentile() ), clock ) );
- dataObjectList.add( toDataObject( key, ".99th", convertDuration( snapshot.get99thPercentile() ), clock ) );
- dataObjectList.add( toDataObject( key, ".99.9th", convertDuration( snapshot.get999thPercentile() ), clock ) );
- }
-
- private void addMeterDataObject( String key, Metered meter, long clock, List dataObjectList )
- {
- dataObjectList.add( toDataObject( key, ".count", meter.getCount(), clock ) );
- dataObjectList.add( toDataObject( key, ".meanRate", convertRate( meter.getMeanRate() ), clock ) );
- dataObjectList.add( toDataObject( key, ".1-minuteRate", convertRate( meter.getOneMinuteRate() ), clock ) );
- dataObjectList.add( toDataObject( key, ".5-minuteRate", convertRate( meter.getFiveMinuteRate() ), clock ) );
- dataObjectList.add( toDataObject( key, ".15-minuteRate", convertRate( meter.getFifteenMinuteRate() ), clock ) );
- }
-
- @SuppressWarnings( "rawtypes" )
- @Override
- public void report( SortedMap gauges, SortedMap counters,
- SortedMap histograms, SortedMap meters,
- SortedMap timers )
- {
- final long clock = System.currentTimeMillis() / 1000;
- List dataObjectList = new LinkedList();
- for ( Map.Entry entry : gauges.entrySet() )
- {
- DataObject dataObject =
- toDataObject( entry.getKey(), "", String.valueOf( entry.getValue().getValue() ), clock );
- dataObjectList.add( dataObject );
- }
-
- for ( Map.Entry entry : counters.entrySet() )
- {
- DataObject dataObject =
- toDataObject( entry.getKey(), "", String.valueOf( entry.getValue().getCount() ), clock );
- dataObjectList.add( dataObject );
- }
-
- for ( Map.Entry entry : histograms.entrySet() )
- {
- Histogram histogram = entry.getValue();
- Snapshot snapshot = histogram.getSnapshot();
- addSnapshotDataObject( entry.getKey(), snapshot, clock, dataObjectList );
- }
-
- for ( Map.Entry entry : meters.entrySet() )
- {
- Meter meter = entry.getValue();
- addMeterDataObject( entry.getKey(), meter, clock, dataObjectList );
- }
-
- for ( Map.Entry entry : timers.entrySet() )
- {
- Timer timer = entry.getValue();
- addMeterDataObject( entry.getKey(), timer, clock, dataObjectList );
- addSnapshotDataObjectWithConvertDuration( entry.getKey(), timer.getSnapshot(), clock, dataObjectList );
- }
-
- try
- {
- SenderResult senderResult = indyZabbixSender.send( dataObjectList, clock );
- if ( !senderResult.success() )
- {
- logger.warn( "report metrics to zabbix not success!" + senderResult );
- }
- else if ( logger.isDebugEnabled() )
- {
- logger.info( "report metrics to zabbix success. " + senderResult );
- }
- }
- catch ( IOException e )
- {
- logger.error( "report metrics to zabbix error! " + e );
- e.printStackTrace();
- }
- catch ( IndyMetricsException e )
- {
- logger.error( "Indy metrics config error " + e );
- e.printStackTrace();
- }
- catch ( IndyHttpException e )
- {
- logger.error( "Indy http client error " + e );
- e.printStackTrace();
- }
- }
-
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/DataObject.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/DataObject.java
deleted file mode 100644
index 91bf6418a8..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/DataObject.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.sender;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-public class DataObject {
- long clock;
- String host;
- String key;
- String value;
-
- public DataObject() {
-
- }
-
- public DataObject(long clock, String host, String key, String value) {
- this.clock = clock;
- this.host = host;
- this.key = key;
- this.value = value;
- }
-
- static public Builder builder() {
- return new Builder();
- }
-
- public static class Builder {
- Long clock;
- String host;
- String key;
- String value;
-
- Builder() {
-
- }
-
- public Builder clock(long clock) {
- this.clock = clock;
- return this;
- }
-
- public Builder host(String host) {
- this.host = host;
- return this;
- }
-
- public Builder key(String key) {
- this.key = key;
- return this;
- }
-
- public Builder value(String value) {
- this.value = value;
- return this;
- }
-
- public DataObject build() {
- if (clock == null) {
- clock = System.currentTimeMillis() / 1000;
- }
- return new DataObject( clock, host, key, value);
- }
- }
-
- public long getClock() {
- return clock;
- }
-
- public void setClock(long clock) {
- this.clock = clock;
- }
-
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public String getKey() {
- return key;
- }
-
- public void setKey(String key) {
- this.key = key;
- }
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- ObjectMapper mapper = new ObjectMapper();
-
- try
- {
- return mapper.writeValueAsString( this );
- }
- catch ( JsonProcessingException e )
- {
- e.printStackTrace();
- throw new RuntimeException( e );
- }
- }
- public static void main(String[] args)
- {
- DataObject d = new DataObject();
- d.setClock( 10 );
- d.setHost( "a" );
- d.setKey( "b" );
- d.setValue("100" );
- System.out.println( d.toString() );
- }
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/IndyZabbixSender.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/IndyZabbixSender.java
deleted file mode 100644
index 92a3c3f9b3..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/IndyZabbixSender.java
+++ /dev/null
@@ -1,601 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.sender;
-
-import org.commonjava.indy.IndyException;
-import org.commonjava.indy.metrics.exception.IndyMetricsException;
-import org.commonjava.indy.metrics.zabbix.api.IndyZabbixApi;
-import org.commonjava.indy.metrics.zabbix.api.ZabbixApi;
-import org.commonjava.indy.metrics.zabbix.cache.ZabbixCacheStorage;
-import org.commonjava.indy.subsys.http.IndyHttpException;
-import org.commonjava.indy.subsys.http.IndyHttpProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Collections;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Created by xiabai on 4/1/17.
- */
-public class IndyZabbixSender
-{
- private static final Logger logger = LoggerFactory.getLogger( IndyZabbixSender.class );
-
- private ZabbixSender sender;
-
- private boolean bCreateNotExistHostGroup = true;
-
- private boolean bCreateNotExistHost = true;
-
- private boolean bCreateNotExistItem = true;
-
- private boolean bCreateNotExistZabbixApi = true;
-
- private ZabbixApi zabbixApi;
-
- private String zabbixHostUrl;
-
- private String hostGroup = "NOS";//// default host group
-
- private String group = "NOS";
-
- private long clock = 0l;
-
- private String hostName;
-
- private String ip;
-
- private String zabbixUserName;
-
- private String zabbixUserPwd;
-
- private ZabbixCacheStorage zabbixCacheStorage;
-
- private IndyHttpProvider indyHttpProvider;
-
- private static final String regEx = "^-?[0-9]+$";
-
- private static final Pattern pat = Pattern.compile( regEx );
-
- public static Builder create()
- {
- return new Builder();
- }
-
- public static class Builder
- {
- boolean bCreateNotExistHostGroup = true;
-
- boolean bCreateNotExistHost = true;
-
- boolean bCreateNotExistItem = true;
-
- boolean bCreateNotExistZabbixSender = true;
-
- ZabbixApi zabbixApi;
-
- String zabbixHostUrl;
-
- String hostGroup = "NOS";//// default host group
-
- String group = "NOS";
-
- long clock = 0l;
-
- String hostName;
-
- String ip;
-
- String zabbixUserName;
-
- String zabbixUserPwd;
-
- String zabbixHost;
-
- int zabbixPort;
-
- ZabbixCacheStorage zabbixCacheStorage;
-
- IndyHttpProvider indyHttpProvider;
-
- public Builder metricsZabbixCache( ZabbixCacheStorage zabbixCacheStorage )
- {
- this.zabbixCacheStorage = zabbixCacheStorage;
- return this;
- }
-
- public Builder indyHttpProvider( IndyHttpProvider indyHttpProvider )
- {
- this.indyHttpProvider = indyHttpProvider;
- return this;
- }
-
- public Builder zabbixHost( String zabbixHost )
- {
- this.zabbixHost = zabbixHost;
- return this;
- }
-
- public Builder hostName( String hostName )
- {
- this.hostName = hostName;
- return this;
- }
-
- public Builder zabbixPort( int zabbixPort )
- {
- this.zabbixPort = zabbixPort;
- return this;
- }
-
- public Builder bCreateNotExistHostGroup( boolean bCreateNotExistHostGroup )
- {
- this.bCreateNotExistHostGroup = bCreateNotExistHostGroup;
- return this;
- }
-
- public Builder bCreateNotExistHost( boolean bCreateNotExistHost )
- {
- this.bCreateNotExistHost = bCreateNotExistHost;
- return this;
- }
-
- public Builder bCreateNotExistItem( boolean bCreateNotExistItem )
- {
- this.bCreateNotExistItem = bCreateNotExistItem;
- return this;
- }
-
- public Builder bCreateNotExistZabbixSender( boolean bCreateNotExistZabbixSender )
- {
- this.bCreateNotExistZabbixSender = bCreateNotExistZabbixSender;
- return this;
- }
-
- public Builder zabbixApi( ZabbixApi zabbixApi )
- {
- this.zabbixApi = zabbixApi;
- return this;
- }
-
- public Builder zabbixHostUrl( String zabbixHostUrl )
- {
- this.zabbixHostUrl = zabbixHostUrl;
- return this;
- }
-
- public Builder hostGroup( String hostGroup )
- {
- this.hostGroup = hostGroup;
- return this;
- }
-
- public Builder group( String group )
- {
- this.group = group;
- return this;
- }
-
- public Builder ip( String ip )
- {
- this.ip = ip;
- return this;
- }
-
- public Builder zabbixUserName( String zabbixUserName )
- {
- this.zabbixUserName = zabbixUserName;
- return this;
- }
-
- public Builder clock( long clock )
- {
- this.clock = clock;
- return this;
- }
-
- public Builder zabbixUserPwd( String zabbixUserPwd )
- {
- this.zabbixUserPwd = zabbixUserPwd;
- return this;
- }
-
- public IndyZabbixSender build()
- {
- return new IndyZabbixSender( this.bCreateNotExistHostGroup, this.bCreateNotExistHost,
- this.bCreateNotExistItem, this.bCreateNotExistZabbixSender, this.zabbixApi,
- this.zabbixHostUrl, this.hostGroup, this.group, this.clock, this.hostName,
- this.ip, this.zabbixUserName, this.zabbixUserPwd, this.zabbixHost,
- this.zabbixPort, this.indyHttpProvider, this.zabbixCacheStorage );
- }
-
- }
-
- public IndyZabbixSender( boolean bCreateNotExistHostGroup, boolean bCreateNotExistHost, boolean bCreateNotExistItem,
- boolean bCreateNotExistZabbixApi, ZabbixApi zabbixApi, String zabbixHostUrl,
- String hostGroup, String group, long clock, String hostName, String ip,
- String zabbixUserName, String zabbixUserPwd, String zabbixHost, int zabbixPort,
- IndyHttpProvider indyHttpProvider, ZabbixCacheStorage zabbixCacheStorage )
- {
-
- this.bCreateNotExistHostGroup = bCreateNotExistHostGroup;
- this.bCreateNotExistHost = bCreateNotExistHost;
- this.bCreateNotExistItem = bCreateNotExistItem;
- this.bCreateNotExistZabbixApi = bCreateNotExistZabbixApi;
- this.zabbixApi = zabbixApi;
- this.zabbixHostUrl = zabbixHostUrl;
- this.hostGroup = hostGroup;
- this.group = group;
- this.clock = clock;
- this.hostName = hostName;
- this.ip = ip;
- this.zabbixUserName = zabbixUserName;
- this.zabbixUserPwd = zabbixUserPwd;
- this.indyHttpProvider = indyHttpProvider;
- this.zabbixCacheStorage = zabbixCacheStorage;
- this.sender = new ZabbixSender( zabbixHost, zabbixPort );
- }
-
- String checkHostGroup( String hostGroup ) throws IOException, IndyHttpException, IndyMetricsException
- {
- if ( zabbixCacheStorage.getHostGroup( hostGroup ) == null )
- {
- try
- {
- this.zabbixApiInit();
- String groupid = zabbixApi.getHostgroup( hostGroup );
- if ( groupid == null )
- {
- groupid = zabbixApi.hostgroupCreate( hostGroup );
- zabbixCacheStorage.putHostGroup( hostGroup, groupid );
- }
- zabbixCacheStorage.putHostGroup( hostGroup, groupid );
- return groupid;
- }
- finally
- {
- this.destroy();
- }
- }
- return null;
- }
-
- String checkHost( String host, String ip ) throws IOException, IndyHttpException, IndyMetricsException
- {
- try
- {
- if ( zabbixCacheStorage.getHost( host ) == null )
- {
- this.zabbixApiInit();
- String hostid = zabbixApi.getHost( host );
- if ( hostid != null )
- {
- zabbixCacheStorage.putHost( host, hostid );
-
- }
- else
- {// host not exists, create it.
-
- hostid = zabbixApi.hostCreate( host, zabbixCacheStorage.getHostGroup( hostGroup ), ip );
- zabbixCacheStorage.putHost( host, hostid );
- }
- return hostid;
- }
- }
- finally
- {
- this.destroy();
- }
- return null;
- }
-
- private String itemCacheKey( String host, String item )
- {
- return host + ":" + item;
- }
-
- String checkItem( String host, String item, int valueType ) throws IOException, IndyHttpException, IndyMetricsException
- {
-
- try
- {
- if ( zabbixCacheStorage.getItem( itemCacheKey( host, item ) ) == null )
- {
- this.zabbixApiInit();
-
- String itemid = zabbixApi.getItem( host, item, zabbixCacheStorage.getHost( host ) );
- if ( itemid == null )
- {
- itemid = zabbixApi.createItem( host, item, zabbixCacheStorage.getHost( host ), valueType );
- zabbixCacheStorage.putItem( itemCacheKey( host, item ), itemid );
- }
- else
- {
- // put into metricsZabbixCache
- zabbixCacheStorage.putItem( itemCacheKey( host, item ), itemid );
- }
- return itemid;
- }
- }
- finally
- {
- this.destroy();
- }
-
- return null;
- }
-
- public SenderResult send( DataObject dataObject ) throws IOException, IndyException
- {
- return this.send( dataObject, System.currentTimeMillis() / 1000L );
- }
-
- public SenderResult send( DataObject dataObject, long clock ) throws IOException, IndyException
- {
- return this.send( Collections.singletonList( dataObject ), clock );
- }
-
- public SenderResult send( List dataObjectList ) throws IOException, IndyException
- {
- return this.send( dataObjectList, System.currentTimeMillis() / 1000L );
- }
-
- /**
- *
- * @param dataObjectList
- * @param clock
- * TimeUnit is SECONDS.
- * @return
- * @throws IOException
- */
- public SenderResult send( List dataObjectList, long clock )
- throws IOException, IndyHttpException, IndyMetricsException
- {
- if ( bCreateNotExistHostGroup )
- {
- try
- {
- checkHostGroup( hostGroup );
- }
- catch ( IndyHttpException e )
- {
- logger.error( "Check HostGroup of Zabbix is error:" + e.getMessage() );
- throw e;
- }
- }
- if ( bCreateNotExistHost )
- {
- try
- {
- checkHost( hostName, ip );
- }
- catch ( IndyHttpException e )
- {
- logger.error( "Check Host of Zabbix is error:" + e.getMessage() );
- throw e;
- }
- }
-
- if ( bCreateNotExistItem )
- {
- for ( DataObject object : dataObjectList )
- {
- String key = object.getKey();
- int vauleType = 0;
- Matcher mat = pat.matcher( object.getValue() );
- if ( !mat.find() )
- {
- vauleType = 4;
- }
- try
- {
- checkItem( hostName, key, vauleType );
- }
- catch ( IndyHttpException e )
- {
- logger.error( "Check Item of Zabbix is error:" + e.getMessage() );
- throw e;
- }
- }
- }
-
- try
- {
- SenderResult senderResult = sender.send( dataObjectList, clock );
- if ( !senderResult.success() )
- {
- logger.error( "send data to zabbix server error! senderResult:" + senderResult );
- }
- return senderResult;
- }
- catch ( IOException e )
- {
- logger.error( "send data to zabbix server error!", e );
- throw e;
- }
- }
-
- public void destroy()
- {
- if ( bCreateNotExistZabbixApi )
- {
- return;
- }
- if ( zabbixApi != null )
- zabbixApi.destroy();
- }
-
- private void zabbixApiInit() throws IndyMetricsException, IOException, IndyHttpException
- {
- if ( !bCreateNotExistZabbixApi )
- {
- return;
- }
- if ( this.zabbixHostUrl == null || "".equals( this.zabbixHostUrl ) )
- {
- throw new IndyMetricsException( "can not find Zabbix's Host" );
- }
-
- zabbixApi = new IndyZabbixApi( this.zabbixHostUrl, indyHttpProvider.createClient( new URL( zabbixHostUrl ).getHost() ) );
-
- zabbixApi.init();
-
- if ( this.zabbixUserName == null || "".equals( this.zabbixUserName ) || this.zabbixUserPwd == null || "".equals(
- this.zabbixUserPwd ) )
- {
- throw new IndyMetricsException( "can not find Zabbix's username or password" );
- }
- boolean login = zabbixApi.login( this.zabbixUserName, this.zabbixUserPwd );
-
- logger.info( "User:" + this.zabbixUserName + " login is " + login );
- }
-
- public ZabbixApi getZabbixApi()
- {
- return zabbixApi;
- }
-
- public void setZabbixApi( ZabbixApi zabbixApi )
- {
- this.zabbixApi = zabbixApi;
- }
-
- public boolean isbCreateNotExistHost()
- {
- return bCreateNotExistHost;
- }
-
- public void setbCreateNotExistHost( boolean bCreateNotExistHost )
- {
- this.bCreateNotExistHost = bCreateNotExistHost;
- }
-
- public String getHostGroup()
- {
- return hostGroup;
- }
-
- public void setHostGroup( String hostGroup )
- {
- this.hostGroup = hostGroup;
- }
-
- public boolean isbCreateNotExistItem()
- {
- return bCreateNotExistItem;
- }
-
- public void setbCreateNotExistItem( boolean bCreateNotExistItem )
- {
- this.bCreateNotExistItem = bCreateNotExistItem;
- }
-
- public String getGroup()
- {
- return group;
- }
-
- public void setGroup( String group )
- {
- this.group = group;
- }
-
- public long getClock()
- {
- return clock;
- }
-
- public void setClock( long clock )
- {
- this.clock = clock;
- }
-
- public String getHostName()
- {
- return hostName;
- }
-
- public void setHostName( String hostName )
- {
- this.hostName = hostName;
- }
-
- public String getIp()
- {
- return ip;
- }
-
- public void setIp( String ip )
- {
- this.ip = ip;
- }
-
- public boolean isbCreateNotExistHostGroup()
- {
- return bCreateNotExistHostGroup;
- }
-
- public void setbCreateNotExistHostGroup( boolean bCreateNotExistHostGroup )
- {
- this.bCreateNotExistHostGroup = bCreateNotExistHostGroup;
- }
-
- public String getZabbixHostUrl()
- {
- return zabbixHostUrl;
- }
-
- public void setZabbixHostUrl( String zabbixHostUrl )
- {
- this.zabbixHostUrl = zabbixHostUrl;
- }
-
- public String getZabbixUserName()
- {
- return zabbixUserName;
- }
-
- public void setZabbixUserName( String zabbixUserName )
- {
- this.zabbixUserName = zabbixUserName;
- }
-
- public String getZabbixUserPwd()
- {
- return zabbixUserPwd;
- }
-
- public void setZabbixUserPwd( String zabbixUserPwd )
- {
- this.zabbixUserPwd = zabbixUserPwd;
- }
-
- public boolean isbCreateNotExistZabbixApi()
- {
- return bCreateNotExistZabbixApi;
- }
-
- public void setbCreateNotExistZabbixApi( boolean bCreateNotExistZabbixApi )
- {
- this.bCreateNotExistZabbixApi = bCreateNotExistZabbixApi;
- }
-
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/SenderRequest.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/SenderRequest.java
deleted file mode 100644
index 05fe738519..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/SenderRequest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.sender;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-/**
- *
- */
-public class SenderRequest
-{
- static final byte header[] = { 'Z', 'B', 'X', 'D', '\1' };
-
- private static final Logger logger = LoggerFactory.getLogger( SenderRequest.class );
-
- /**
- * TimeUnit is SECONDS.
- */
- long clock;
-
- List data;
-
- String request = "sender data";
-
- public byte[] toBytes() throws JsonProcessingException
- {
- // https://www.zabbix.org/wiki/Docs/protocols/zabbix_sender/2.0
- // https://www.zabbix.org/wiki/Docs/protocols/zabbix_sender/1.8/java_example
-
- ObjectMapper mapper = new ObjectMapper();
- byte[] jsonBytes = mapper.writeValueAsBytes( this );
-
- byte[] result = new byte[header.length + 4 + 4 + jsonBytes.length];
-
- System.arraycopy( header, 0, result, 0, header.length );
-
- result[header.length] = (byte) ( jsonBytes.length & 0xFF );
- result[header.length + 1] = (byte) ( ( jsonBytes.length >> 8 ) & 0x00FF );
- result[header.length + 2] = (byte) ( ( jsonBytes.length >> 16 ) & 0x0000FF );
- result[header.length + 3] = (byte) ( ( jsonBytes.length >> 24 ) & 0x000000FF );
-
- System.arraycopy( jsonBytes, 0, result, header.length + 4 + 4, jsonBytes.length );
- return result;
- }
-
- public String getRequest()
- {
- return request;
- }
-
- public void setRequest( String request )
- {
- this.request = request;
- }
-
- /**
- * TimeUnit is SECONDS.
- *
- * @return
- */
- public long getClock()
- {
- return clock;
- }
-
- /**
- * TimeUnit is SECONDS.
- *
- * @param clock
- */
- public void setClock( long clock )
- {
- this.clock = clock;
- }
-
- public List getData()
- {
- return data;
- }
-
- public void setData( List data )
- {
- this.data = data;
- }
-
- @Override
- public String toString()
- {
- try
- {
- ObjectMapper mapper = new ObjectMapper();
- return mapper.writeValueAsString( this );
-
- }
- catch ( JsonProcessingException e )
- {
- logger.error( e.getMessage() );
- }
- return super.toString();
- }
-}
-
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/SenderResult.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/SenderResult.java
deleted file mode 100644
index 2648aeaa50..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/SenderResult.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.sender;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-/**
- *
- */
-public class SenderResult {
- int processed;
- int failed;
- int total;
-
- float spentSeconds;
-
- /**
- * sometimes zabbix server will return "[]".
- */
- boolean bReturnEmptyArray = false;
-
- /**
- * if all sended data are processed, will return true, else return false.
- *
- * @return
- */
- public boolean success() {
- return !bReturnEmptyArray && processed == total;
- }
-
- public int getProcessed() {
- return processed;
- }
-
- public void setProcessed(int processed) {
- this.processed = processed;
- }
-
- public int getFailed() {
- return failed;
- }
-
- public void setFailed(int failed) {
- this.failed = failed;
- }
-
- public int getTotal() {
- return total;
- }
-
- public void setTotal(int total) {
- this.total = total;
- }
-
- public float getSpentSeconds() {
- return spentSeconds;
- }
-
- public void setSpentSeconds(float spentSeconds) {
- this.spentSeconds = spentSeconds;
- }
-
- public void setbReturnEmptyArray(boolean bReturnEmptyArray) {
- this.bReturnEmptyArray = bReturnEmptyArray;
- }
-
- @Override
- public String toString() {
- ObjectMapper mapper = new ObjectMapper();
-
- try
- {
- return mapper.writeValueAsString( this );
- }
- catch ( JsonProcessingException e )
- {
- e.printStackTrace();
- throw new RuntimeException( e );
- }
- }
-}
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/ZabbixSender.java b/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/ZabbixSender.java
deleted file mode 100644
index e404e203b5..0000000000
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/zabbix/sender/ZabbixSender.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.sender;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.nio.charset.Charset;
-import java.util.Collections;
-import java.util.List;
-import java.util.regex.Pattern;
-
-/**
- * Created by xiabai on 4/7/17.
- * Copy from
- */
-public class ZabbixSender
-{
- private static final Pattern PATTERN = Pattern.compile( "[^0-9\\.]+");
- private static final Logger logger = LoggerFactory.getLogger( ZabbixSender.class );
- String host;
- int port;
- int connectTimeout = 3 * 1000;
- int socketTimeout = 3 * 1000;
-
- public ZabbixSender(String host, int port) {
- this.host = host;
- this.port = port;
- }
-
- public ZabbixSender(String host, int port, int connectTimeout, int socketTimeout) {
- this(host, port);
- this.connectTimeout = connectTimeout;
- this.socketTimeout = socketTimeout;
- }
-
- public SenderResult send(DataObject dataObject) throws IOException
- {
- return send(dataObject, System.currentTimeMillis() / 1000);
- }
-
- /**
- *
- * @param dataObject
- * @param clock
- * TimeUnit is SECONDS.
- * @return
- * @throws IOException
- */
- public SenderResult send(DataObject dataObject, long clock) throws IOException {
- return send( Collections.singletonList( dataObject), clock);
- }
-
- public SenderResult send(List dataObjectList) throws IOException {
- return send(dataObjectList, System.currentTimeMillis() / 1000);
- }
-
- /**
- *
- * @param dataObjectList
- * @param clock
- * TimeUnit is SECONDS.
- * @return
- * @throws IOException
- */
- public SenderResult send(List dataObjectList, long clock) throws IOException {
- //TODO Need refacing the method using XNIO
- SenderResult senderResult = new SenderResult();
-
- Socket socket = null;
- InputStream inputStream = null;
- OutputStream outputStream = null;
- try {
- socket = new Socket();
-
- socket.setSoTimeout(socketTimeout);
- socket.connect( new InetSocketAddress( host, port), connectTimeout);
-
- inputStream = socket.getInputStream();
- outputStream = socket.getOutputStream();
-
- SenderRequest senderRequest = new SenderRequest();
- senderRequest.setData(dataObjectList);
- senderRequest.setClock(clock);
-
- outputStream.write(senderRequest.toBytes());
-
- outputStream.flush();
-
- // normal responseData.length < 100
- byte[] responseData = new byte[512];
-
- int readCount = 0;
-
- while (true) {
- int read = inputStream.read(responseData, readCount, responseData.length - readCount);
- if (read <= 0) {
- break;
- }
- readCount += read;
- }
-
- if (readCount < 13) {
- // seems zabbix server return "[]"?
- senderResult.setbReturnEmptyArray(true);
- }
-
- // header('ZBXD\1') + len + 0
- // 5 + 4 + 4
- String jsonString = new String( responseData, 13, readCount - 13, Charset.forName( "UTF-8"));
- logger.info( "jsonString : " +jsonString );
- ObjectMapper mapper = new ObjectMapper();
- JsonNode json = mapper.readTree( jsonString );
-
-// JSONObject json = JSON.parseObject(jsonString);
- String info = json.get("info").asText();
- // example info: processed: 1; failed: 0; total: 1; seconds spent:
- // 0.000053
- // after split: [, 1, 0, 1, 0.000053]
- String[] split = PATTERN.split(info);
- senderResult.setProcessed(Integer.parseInt(split[1]));
- senderResult.setFailed(Integer.parseInt(split[2]));
- senderResult.setTotal(Integer.parseInt(split[3]));
- senderResult.setSpentSeconds(Float.parseFloat(split[4]));
-
- } finally {
- if (socket != null) {
- socket.close();
- }
- if (inputStream != null) {
- inputStream.close();
- }
- if (outputStream != null) {
- outputStream.close();
- }
- }
-
- return senderResult;
- }
-
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public int getPort() {
- return port;
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public int getConnectTimeout() {
- return connectTimeout;
- }
-
- public void setConnectTimeout(int connectTimeout) {
- this.connectTimeout = connectTimeout;
- }
-
- public int getSocketTimeout() {
- return socketTimeout;
- }
-
- public void setSocketTimeout(int socketTimeout) {
- this.socketTimeout = socketTimeout;
- }
-
-}
diff --git a/subsys/metrics/reporter/src/main/resources/META-INF/beans.xml b/subsys/metrics/reporter/src/main/resources/META-INF/beans.xml
deleted file mode 100644
index 25aab64176..0000000000
--- a/subsys/metrics/reporter/src/main/resources/META-INF/beans.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/Capitalizer.java b/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/Capitalizer.java
deleted file mode 100644
index fe59356b0c..0000000000
--- a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/Capitalizer.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.socket;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.commonjava.indy.metrics.zabbix.sender.SenderRequest;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.net.Socket;
-import java.util.Arrays;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Created by xiabai on 5/9/17.
- */
-public class Capitalizer
- implements Runnable
-{
- private final Logger logger = LoggerFactory.getLogger( getClass() );
-
- private Socket socket;
-
- private int clientNumber;
-
- private Expectation expect;
-
- private ConcurrentHashMap expections;
-
- public Capitalizer( Socket socket, int clientNumber, ConcurrentHashMap expections )
- {
- this.socket = socket;
- this.clientNumber = clientNumber;
- this.expections = expections;
- logger.info( "New connection with client# " + clientNumber + " at " + socket );
- }
-
- /**
- */
- public void run()
- {
- BufferedInputStream in = null;
- BufferedOutputStream out = null;
- try
- {
-
- in = new BufferedInputStream( socket.getInputStream() );
- ObjectMapper mapper = new ObjectMapper();
- byte[] responseData = new byte[1024];
- int readCount = 0;
- int read = in.read( responseData, readCount, responseData.length - readCount );
- // }
- byte[] responseDataTmp = Arrays.copyOfRange( responseData, 13, responseData.length );
- SenderRequest senderRequest = mapper.readValue( responseDataTmp, SenderRequest.class );
- out = new BufferedOutputStream( socket.getOutputStream() );
- ZabbixResult zr = new ZabbixResult( expections.get( senderRequest.getRequest() ).getSenderResult() );
- out.write( getResult( mapper.writeValueAsBytes( zr ) ) );
- out.flush();
- logger.info( senderRequest.toString() );
-
- }
- catch ( IOException e )
- {
- logger.info( "Error handling client# " + clientNumber + ": " + e );
- }
- finally
- {
- try
- {
- if ( in != null )
- {
- in.close();
- }
- if ( out != null )
- {
- out.close();
- }
- if ( socket != null )
- {
- socket.close();
- }
- }
- catch ( IOException e )
- {
- logger.info( "Couldn't close a socket, what's going on?" );
- }
- logger.info( "Connection with client# " + clientNumber + " closed" );
- }
- }
-
- private byte[] getResult( byte[] responseData )
- {
- byte header[] = { 'Z', 'B', 'X', 'D', '\1' };
-
- byte[] info = new byte[header.length + 4 + 4 + responseData.length];
-
- System.arraycopy( header, 0, info, 0, header.length );
-
- info[header.length] = (byte) ( responseData.length & 0xFF );
- info[header.length + 1] = (byte) ( ( responseData.length >> 8 ) & 0x00FF );
- info[header.length + 2] = (byte) ( ( responseData.length >> 16 ) & 0x0000FF );
- info[header.length + 3] = (byte) ( ( responseData.length >> 24 ) & 0x000000FF );
-
- System.arraycopy( responseData, 0, info, header.length + 4 + 4, responseData.length );
- return info;
- }
-}
diff --git a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/Expectation.java b/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/Expectation.java
deleted file mode 100644
index 96a20ce908..0000000000
--- a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/Expectation.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.socket;
-
-import org.commonjava.indy.metrics.zabbix.sender.SenderResult;
-
-/**
- * Created by xiabai on 5/9/17.
- */
-public class Expectation
-{
- private final String method;
-
- private final byte[] requestBody;
-
- private final SenderResult senderResult;
-
- public Expectation( String method, byte[] requestBody, SenderResult senderResult )
- {
- this.method = method;
- this.requestBody = requestBody;
- this.senderResult = senderResult;
- }
-
- public String getMethod()
- {
- return method;
- }
-
- public byte[] getRequestBody()
- {
- return requestBody;
- }
-
- public SenderResult getSenderResult()
- {
- return senderResult;
- }
-}
diff --git a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/ZabbixResult.java b/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/ZabbixResult.java
deleted file mode 100644
index 0d9c79cfae..0000000000
--- a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/ZabbixResult.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.socket;
-
-import org.commonjava.indy.metrics.zabbix.sender.SenderResult;
-
-/**
- * Created by xiabai on 5/12/17.
- */
-public class ZabbixResult
-{
- private String info;
-
- private SenderResult result;
-
- public ZabbixResult( SenderResult senderResult )
- {
- this.result = senderResult;
- }
-
- public String getInfo()
- {
- return toString();
- }
-
- public void setInfo( String info )
- {
- this.info = info;
- }
-
- @Override
- public String toString()
- {
- return "," + result.getProcessed() + "," + result.getFailed() + "," + result.getTotal() + ","
- + result.getSpentSeconds();
- }
-}
diff --git a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/ZabbixSocketServer.java b/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/ZabbixSocketServer.java
deleted file mode 100644
index 5f1b821499..0000000000
--- a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/socket/ZabbixSocketServer.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.socket;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static org.commonjava.test.http.util.PortFinder.findPortFor;
-
-/**
- * Created by xiabai on 5/9/17.
- */
-public class ZabbixSocketServer
- implements Runnable
-{
- private ConcurrentHashMap expections = new ConcurrentHashMap();
-
- private int port;
-
- public boolean isStartFlag()
- {
- return startFlag;
- }
-
- public void setStartFlag( boolean startFlag )
- {
- this.startFlag = startFlag;
- }
-
- private boolean startFlag = true;
-
- public Expectation getExpection( String method )
- {
- return expections.get( method );
- }
-
- public void setExpection( String method, Expectation expectation )
- {
- expections.put( method, expectation );
- }
-
- public int getPort()
- {
- return port;
- }
-
- public void run()
- {
- ServerSocket listener = null;
- try
- {
- int clientNumber = 0;
- listener = new ServerSocket( findPortFor( 16, p -> p ) );
-
- this.port = listener.getLocalPort();
-
- synchronized ( this )
- {
- notifyAll();
- }
-
- while ( startFlag )
- {
-
- new Thread( new Capitalizer( listener.accept(), clientNumber++, expections ) ).start();
- }
- }
- catch ( IOException e )
- {
- throw new RuntimeException( e );
- }
- finally
- {
- try
- {
- listener.close();
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- }
- }
- }
-
-}
\ No newline at end of file
diff --git a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/zabbix/api/ZabbixAPITest.java b/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/zabbix/api/ZabbixAPITest.java
deleted file mode 100644
index 81baf31205..0000000000
--- a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/zabbix/api/ZabbixAPITest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.api;
-
-import org.commonjava.test.http.expect.ExpectationServer;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import java.io.IOException;
-
-/**
- * Created by xiabai on 5/12/17.
- */
-public class ZabbixAPITest
-{
- private final static String PATHPARTS = "/api_jsonrpc.php";
-
- @Rule
- public ExpectationServer server = new ExpectationServer();
-
- String url = "";
-
- @Before
- public void start() throws Exception
- {
- server.expect( "POST", server.formatUrl( PATHPARTS ), new ZabbxiAPIHandler() );
- server.start();
- }
-
- @After
- public void down() throws Exception
- {
-// server.stop();
- }
-
- @Test
- public void gethostid() throws IOException
- {
- IndyZabbixApi api = new IndyZabbixApi( server.formatUrl( PATHPARTS ) );
- api.init();
- org.junit.Assert.assertEquals( "123", api.getHost( "test" ) );
- api.destroy();
- }
-
- @Test
- public void getitemid() throws IOException
- {
- IndyZabbixApi api = new IndyZabbixApi( server.formatUrl( PATHPARTS ) );
- api.init();
- org.junit.Assert.assertEquals( "456", api.getItem( "test","test-item","123" ) );
- api.destroy();
- }
-}
diff --git a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/zabbix/api/ZabbxiAPIHandler.java b/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/zabbix/api/ZabbxiAPIHandler.java
deleted file mode 100644
index 077afa0740..0000000000
--- a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/zabbix/api/ZabbxiAPIHandler.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.api;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.commons.io.IOUtils;
-import org.commonjava.test.http.expect.ExpectationHandler;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Created by xiabai on 5/12/17.
- */
-public class ZabbxiAPIHandler
- implements ExpectationHandler
-{
- @Override
- public void handle( HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse )
- throws ServletException, IOException
- {
- String json = IOUtils.toString( httpServletRequest.getInputStream() );
- ObjectMapper mapper = new ObjectMapper();
- Request request = mapper.readValue( json, Request.class );
- String result = "";
- if ( request.getMethod().equals( "host.get" ) )
- {
- result = getHostids();
- }
- if ( request.getMethod().equals( "item.get" ) )
- {
- result = getItem();
- }
- httpServletResponse.setCharacterEncoding( "UTF-8" );
- httpServletResponse.setContentType( "application/json; charset=utf-8" );
- httpServletResponse.setStatus( 200 );
- OutputStream out = httpServletResponse.getOutputStream();
- IOUtils.write( result, out );
-
- }
-
- private String getHostids() throws JsonProcessingException
- {
- Map map = new HashMap();
- map.put( "jsonrpc", "2.0" );
- Map[] result = new HashMap[1];
- Map host = new HashMap();
- host.put( "hostid", "123" );
- result[0] = host;
- map.put( "result", result );
- ObjectMapper mapper = new ObjectMapper();
- return mapper.writeValueAsString( map );
- }
-
- private String getItem() throws JsonProcessingException
- {
- Map map = new HashMap();
- map.put( "jsonrpc", "2.0" );
- Map[] result = new HashMap[1];
- Map host = new HashMap();
- host.put( "itemid", "456" );
- result[0] = host;
- map.put( "result", result );
- ObjectMapper mapper = new ObjectMapper();
- return mapper.writeValueAsString( map );
- }
-}
diff --git a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/zabbix/sender/ZabbixSenderTest.java b/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/zabbix/sender/ZabbixSenderTest.java
deleted file mode 100644
index 4c1f7bf0bd..0000000000
--- a/subsys/metrics/reporter/src/test/java/org/commonjava/indy/metrics/zabbix/sender/ZabbixSenderTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.commonjava.indy.metrics.zabbix.sender;
-
-import org.commonjava.indy.metrics.socket.Expectation;
-import org.commonjava.indy.metrics.socket.ZabbixSocketServer;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-
-import static org.junit.Assert.fail;
-
-/**
- * Created by xiabai on 5/9/17.
- */
-public class ZabbixSenderTest
-{
- private ZabbixSocketServer socketServer;
-
- private DataObject dataObject;
-
- @Before
- public void socketStart() throws Exception
- {
- socketServer = new ZabbixSocketServer();
- dataObject = new DataObject();
- dataObject.setClock( 1000 );
- dataObject.setHost( "test" );
- dataObject.setKey( "test-item" );
- dataObject.setValue( "123" );
- SenderRequest sr = new SenderRequest();
- sr.setRequest( "dataSend" );
- sr.setData( new ArrayList<>( Collections.singletonList( dataObject ) ) );
- SenderResult senderResult = new SenderResult();
- senderResult.setFailed( 0 );
- senderResult.setProcessed( 1 );
- senderResult.setTotal( 1 );
- senderResult.setSpentSeconds( 1l );
- System.out.print( sr.toString() );
- Expectation expectation = new Expectation( "sender data", sr.toBytes(), senderResult );
- socketServer.setExpection( "sender data", expectation );
- Thread t = new Thread( socketServer );
- t.start();
-
- synchronized ( socketServer )
- {
- socketServer.wait();
- }
- }
-
- @After
- public void shutDown() throws Exception
- {
- socketServer.setStartFlag( false );
- }
-
- @Test
- public void dataSend() throws Exception
- {
-
- ZabbixSender sender = new ZabbixSender( "localhost", socketServer.getPort() );
- try
- {
-
- SenderResult result = sender.send( dataObject );
- org.junit.Assert.assertEquals( result.getProcessed(), result.getTotal() );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- fail( "Error trying to send/receive data" );
- }
- }
-}
diff --git a/subsys/metrics/core/src/main/conf/conf.d/elasticsearch.properties b/subsys/metrics/src/main/conf/conf.d/elasticsearch.properties
similarity index 100%
rename from subsys/metrics/core/src/main/conf/conf.d/elasticsearch.properties
rename to subsys/metrics/src/main/conf/conf.d/elasticsearch.properties
diff --git a/subsys/metrics/core/src/main/conf/conf.d/metrics.conf b/subsys/metrics/src/main/conf/conf.d/metrics.conf
similarity index 68%
rename from subsys/metrics/core/src/main/conf/conf.d/metrics.conf
rename to subsys/metrics/src/main/conf/conf.d/metrics.conf
index 09c4a87af8..befce628d3 100644
--- a/subsys/metrics/core/src/main/conf/conf.d/metrics.conf
+++ b/subsys/metrics/src/main/conf/conf.d/metrics.conf
@@ -1,6 +1,5 @@
[metrics]
enabled = false
-reporter.enabled = true
# Specify node prefix (on cluster). This prefix will be prepended to all metric names. Default empty.
#
@@ -43,7 +42,7 @@ measure.transport = true
#measure.transport.repos = central
# List of reporters (comma-separated). At present, Indy supports reporters:
-# reporter = graphite,zabbix,elasticsearch,console
+# reporter = graphite,elasticsearch,console
#
reporter = console
@@ -70,35 +69,6 @@ graphite.reporter.jvm.period = 300
# Period of healthcheck item for reporting
graphite.reporter.healthcheck.period = 600
-############################################
-# Zabbix reporter options
-############################################
-
-#The Zabbix API is a web based API and is shipped as part of the web frontend
-# API URL used to access Zabbix from a web browser
-zabbix.api.url = example.com
-#Zabbix username for login Zabbix server(Zabbix API)
-zabbix.user = test
-#Zabbix password for login Zabbix server(Zabbix API)
-zabbix.pwd = test
-# Zabbix sender is a command line utility that may be used to send performance data to Zabbix server for processing.
-# Host of Zabbix server for Zabbix sender
-zabbix.sender.host = 192.168.1.1
-# Port of Zabbix server for Zabbix sender
-zabbix.sender.port = 10051
-# This is the hostname of the current Indy instance, it also is host name of Zabbix monitoring
-zabbix.indy.host = example.com
-# Specific prefix for Zabbix Item
-zabbix.reporter.prefix = local.one
-# Indy's metrics item have three type: simple,jvm,healthcheck.
-# Those type have different period of reporter
-# Period of simple item for reporting
-zabbix.reporter.simple.period = 30
-# Period of jvm item for reporting
-zabbix.reporter.jvm.period = 300
-# Period of healthcheck item for reporting
-zabbix.reporter.healthcheck.period = 600
-
############################################
# Elasticsearch reporter options
############################################
diff --git a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/jaxrs/producer/IndyMetricProducer.java b/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyMetricsStartupAction.java
similarity index 55%
rename from subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/jaxrs/producer/IndyMetricProducer.java
rename to subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyMetricsStartupAction.java
index f1a016ecb2..23582845f4 100644
--- a/subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/jaxrs/producer/IndyMetricProducer.java
+++ b/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyMetricsStartupAction.java
@@ -13,58 +13,31 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.commonjava.indy.metrics.jaxrs.producer;
+package org.commonjava.indy.subsys.metrics;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.health.HealthCheckRegistry;
import org.commonjava.indy.action.IndyLifecycleException;
import org.commonjava.indy.action.StartupAction;
-import org.commonjava.indy.metrics.IndyMetricsManager;
+import org.commonjava.o11yphant.metrics.reporter.ReporterInitializer;
import javax.enterprise.context.ApplicationScoped;
-import javax.enterprise.inject.Produces;
import javax.inject.Inject;
-/**
- * Created by xiabai on 2/27/17.
- */
-public class IndyMetricProducer implements StartupAction
+@ApplicationScoped
+public class IndyMetricsStartupAction implements StartupAction
{
-
- private static final String METRIC_ID = "metric";
-
- @ApplicationScoped
- @Produces
- public MetricRegistry getMetricRegistry()
- {
- return new MetricRegistry();
- }
-
- @ApplicationScoped
- @Produces
- public HealthCheckRegistry getHealthCheckRegistry() {
- return new HealthCheckRegistry();
- }
-
- @Override
- public String getId()
- {
- return METRIC_ID;
- }
-
@Inject
- private IndyMetricsManager indyMetricsManager;
+ private ReporterInitializer reporterInitializer;
@Override
public void start() throws IndyLifecycleException
{
try
{
- indyMetricsManager.startReporter();
+ reporterInitializer.init();
}
catch ( Exception e )
{
- throw new IndyLifecycleException( "Failed while attempting to start Metric reporters.", e );
+ throw new IndyLifecycleException( "Failed to setup metrics!", e );
}
}
@@ -73,4 +46,10 @@ public int getStartupPriority()
{
return 10;
}
+
+ @Override
+ public String getId()
+ {
+ return "Indy metrics initialization";
+ }
}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/TrafficClassifier.java b/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyTrafficClassifier.java
similarity index 75%
rename from subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/TrafficClassifier.java
rename to subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyTrafficClassifier.java
index 30682f09f1..b381d85e48 100644
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/TrafficClassifier.java
+++ b/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyTrafficClassifier.java
@@ -13,10 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.commonjava.indy.metrics;
+package org.commonjava.indy.subsys.metrics;
-import org.commonjava.cdi.util.weft.ThreadContext;
import org.commonjava.indy.IndyRequestConstants;
+import org.commonjava.o11yphant.metrics.TrafficClassifier;
import org.commonjava.indy.model.core.HostedRepository;
import org.commonjava.indy.model.core.RemoteRepository;
import org.commonjava.indy.model.core.StoreType;
@@ -33,65 +33,51 @@
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import static java.util.Arrays.asList;
-import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
import static org.apache.commons.lang3.StringUtils.join;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_CONTENT;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_CONTENT_LISTING;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_CONTENT_MAVEN;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_CONTENT_NPM;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_MAVEN_DOWNLOAD;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_MAVEN_UPLOAD;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_METADATA;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_METADATA_MAVEN;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_METADATA_NPM;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_NPM_DOWNLOAD;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_NPM_UPLOAD;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_PROMOTION;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_REPO_MGMT;
-import static org.commonjava.indy.metrics.TrafficClassifierConstants.FN_TRACKING_RECORD;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_CONTENT;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_CONTENT_LISTING;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_CONTENT_MAVEN;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_CONTENT_NPM;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_MAVEN_DOWNLOAD;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_MAVEN_UPLOAD;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_METADATA;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_METADATA_MAVEN;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_METADATA_NPM;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_NPM_DOWNLOAD;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_NPM_UPLOAD;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_PROMOTION;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_REPO_MGMT;
+import static org.commonjava.indy.subsys.metrics.IndyTrafficClassifierConstants.FN_TRACKING_RECORD;
import static org.commonjava.indy.pkg.PackageTypeConstants.PKG_TYPE_MAVEN;
import static org.commonjava.indy.pkg.PackageTypeConstants.PKG_TYPE_NPM;
@ApplicationScoped
-public class TrafficClassifier
+public class IndyTrafficClassifier
+ extends TrafficClassifier
{
- private static final String CACHED_FUNCTIONS = "cached-functions";
-
- private static final Set MODIFY_METHODS = new HashSet<>( asList( "POST", "PUT", "DELETE" ) );
-
private static final Set FOLO_RECORD_ENDPOINTS = new HashSet<>( asList( "record", "report" ) );
private static final Set DEPRECATED_CONTENT_ENDPOINTS =
- new HashSet<>( asList( "group", "hosted", "remote" ) );
-
+ new HashSet<>( asList( "group", "hosted", "remote" ) );
private SpecialPathManager specialPathManager;
@Inject
- public TrafficClassifier( SpecialPathManager specialPathManager )
+ public IndyTrafficClassifier( SpecialPathManager specialPathManager )
{
this.specialPathManager = specialPathManager;
}
- public List classifyFunctions( String restPath, String method )
+ protected List calculateCachedFunctionClassifiers( String restPath, String method )
{
- ThreadContext ctx = ThreadContext.getContext( false );
- if ( ctx != null )
- {
- List cached = (List) ctx.get( CACHED_FUNCTIONS );
- if ( cached != null )
- {
- return cached;
- }
- }
-
List result = new ArrayList<>();
- String[] pathParts = restPath.split("/" );
+ String[] pathParts = restPath.split( "/" );
if ( pathParts.length >= 2 )
{
String[] classifierParts = new String[pathParts.length - 1];
@@ -105,7 +91,7 @@ public List classifyFunctions( String restPath, String method )
result = singletonList( FN_PROMOTION );
}
else if ( "admin".equals( classifierParts[0] ) && "stores".equals( classifierParts[1] )
- && classifierParts.length > 2 )
+ && classifierParts.length > 2 )
{
if ( MODIFY_METHODS.contains( method ) )
{
@@ -118,14 +104,15 @@ else if ( "browse".equals( classifierParts[0] ) )
// this is a browse / list request
result = singletonList( FN_CONTENT_LISTING );
}
- else if ( ( "content".equals( classifierParts[0] ) && classifierParts.length >= 4 && ( restPath.endsWith( "/" )
- || restPath.endsWith( IndyRequestConstants.LISTING_HTML_FILE ) ) ) )
+ else if ( ( "content".equals( classifierParts[0] ) && classifierParts.length >= 4 && (
+ restPath.endsWith( "/" ) || restPath.endsWith(
+ IndyRequestConstants.LISTING_HTML_FILE ) ) ) )
{
// this is an old version of the browse / list request
result = singletonList( FN_CONTENT_LISTING );
}
else if ( ( DEPRECATED_CONTENT_ENDPOINTS.contains( classifierParts[0] ) && ( restPath.endsWith( "/" )
- || restPath.endsWith( IndyRequestConstants.LISTING_HTML_FILE ) ) ) )
+ || restPath.endsWith( IndyRequestConstants.LISTING_HTML_FILE ) ) ) )
{
// this is an old, OLD version of the browse / list request
result = singletonList( FN_CONTENT_LISTING );
@@ -178,8 +165,6 @@ else if ( DEPRECATED_CONTENT_ENDPOINTS.contains( classifierParts[0] ) && classif
}
}
}
-
- ctx.put( CACHED_FUNCTIONS, result );
return result;
}
@@ -232,7 +217,8 @@ private boolean isValidContent( final String packageType, final String storeType
return PackageTypeConstants.isValidPackageType( packageType ) && StoreType.get( storeType ) != null;
}
- private boolean isMetadata( final String packageType, final String storeType, final String storeName, final String[] pathParts, final int realPathStartIdx )
+ private boolean isMetadata( final String packageType, final String storeType, final String storeName,
+ final String[] pathParts, final int realPathStartIdx )
{
Location location = getLightweightLocation( packageType, storeType, storeName );
@@ -252,7 +238,8 @@ private Location getLightweightLocation( final String packageType, final String
switch ( st )
{
case remote:
- return new RepositoryLocation( new RemoteRepository( packageType, storeName, "http://used.to.classify.requests.only/" ) );
+ return new RepositoryLocation( new RemoteRepository( packageType, storeName,
+ "http://used.to.classify.requests.only/" ) );
case hosted:
return new CacheOnlyLocation( new HostedRepository( packageType, storeName ) );
default:
@@ -260,14 +247,4 @@ private Location getLightweightLocation( final String packageType, final String
}
}
- public List getCachedFunctionClassifiers()
- {
- ThreadContext ctx = ThreadContext.getContext( false );
- if ( ctx != null )
- {
- return (List) ctx.get( CACHED_FUNCTIONS );
- }
-
- return null;
- }
}
diff --git a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/TrafficClassifierConstants.java b/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyTrafficClassifierConstants.java
similarity index 75%
rename from subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/TrafficClassifierConstants.java
rename to subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyTrafficClassifierConstants.java
index f91cb65a54..5b7cc00635 100644
--- a/subsys/metrics/core/src/main/java/org/commonjava/indy/metrics/TrafficClassifierConstants.java
+++ b/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyTrafficClassifierConstants.java
@@ -13,9 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.commonjava.indy.metrics;
+package org.commonjava.indy.subsys.metrics;
-public final class TrafficClassifierConstants
+public final class IndyTrafficClassifierConstants
{
public static final String FN_CONTENT = "content";
@@ -47,12 +47,12 @@ public final class TrafficClassifierConstants
public static final String FN_NPM_DOWNLOAD = "npm.download";
- public static final String[] FUNCTIONS = {
- FN_CONTENT, FN_CONTENT_MAVEN, FN_CONTENT_NPM, FN_CONTENT_GENERIC,
- FN_METADATA, FN_METADATA_MAVEN, FN_METADATA_NPM,
- FN_PROMOTION, FN_TRACKING_RECORD, FN_CONTENT_LISTING, FN_REPO_MGMT,
- FN_MAVEN_UPLOAD, FN_MAVEN_DOWNLOAD, FN_NPM_UPLOAD, FN_NPM_DOWNLOAD
- };
+ public static final String[] FUNCTIONS =
+ { FN_CONTENT, FN_CONTENT_MAVEN, FN_CONTENT_NPM, FN_CONTENT_GENERIC, FN_METADATA, FN_METADATA_MAVEN,
+ FN_METADATA_NPM, FN_PROMOTION, FN_TRACKING_RECORD, FN_CONTENT_LISTING, FN_REPO_MGMT,
+ FN_MAVEN_UPLOAD, FN_MAVEN_DOWNLOAD, FN_NPM_UPLOAD, FN_NPM_DOWNLOAD };
- private TrafficClassifierConstants(){}
+ private IndyTrafficClassifierConstants()
+ {
+ }
}
diff --git a/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyTransportMetricConfigProducer.java b/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyTransportMetricConfigProducer.java
new file mode 100644
index 0000000000..330a29a1f2
--- /dev/null
+++ b/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/IndyTransportMetricConfigProducer.java
@@ -0,0 +1,120 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.subsys.metrics;
+
+import org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig;
+import org.commonjava.maven.galley.config.TransportMetricConfig;
+import org.commonjava.maven.galley.model.Location;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
+import static org.commonjava.indy.model.core.StoreType.remote;
+import static org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
+
+@ApplicationScoped
+public class IndyTransportMetricConfigProducer
+{
+ private final Logger logger = LoggerFactory.getLogger( getClass() );
+
+ @Inject
+ private IndyMetricsConfig config;
+
+ private TransportMetricConfig transportMetricConfig;
+
+ @Produces
+ public TransportMetricConfig getTransportMetricConfig()
+ {
+ if ( config.isMeasureTransport() )
+ {
+ setUpTransportMetricConfig();
+ }
+
+ return transportMetricConfig;
+ }
+
+ private void setUpTransportMetricConfig()
+ {
+ logger.info( "Adding transport metrics to registry" );
+ final String measureRepos = config.getMeasureTransportRepos();
+ final List list = new ArrayList<>();
+ if ( isNotBlank( measureRepos ) )
+ {
+ String[] toks = measureRepos.split( "," );
+ for ( String s : toks )
+ {
+ s = s.trim();
+ if ( isNotBlank( s ) )
+ {
+ if ( s.indexOf( ":" ) < 0 )
+ {
+ s = MAVEN_PKG_KEY + ":" + remote.singularEndpointName() + ":" + s; // use default
+ }
+ list.add( s );
+ }
+ }
+ }
+ transportMetricConfig = new TransportMetricConfig()
+ {
+ @Override
+ public boolean isEnabled()
+ {
+ return true;
+ }
+
+ @Override
+ public String getNodePrefix()
+ {
+ return config.getNodePrefix();
+ }
+
+ @Override
+ public String getMetricUniqueName( Location location )
+ {
+ String locationName = location.getName();
+ for ( String s : list )
+ {
+ if ( s.equals( locationName ) )
+ {
+ return normalizeName( s );
+ }
+
+ if ( s.endsWith( "*" ) ) // handle wildcard
+ {
+ String prefix = s.substring( 0, s.length() - 1 );
+ if ( locationName.startsWith( prefix ) )
+ {
+ return normalizeName( prefix );
+ }
+ }
+ }
+ return null;
+ }
+ };
+ }
+
+ private String normalizeName( String name )
+ {
+ return name.replaceAll( ":", "." );
+ }
+
+}
diff --git a/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/conf/IndyMetricsConfig.java b/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/conf/IndyMetricsConfig.java
new file mode 100644
index 0000000000..72eab3d48e
--- /dev/null
+++ b/subsys/metrics/src/main/java/org/commonjava/indy/subsys/metrics/conf/IndyMetricsConfig.java
@@ -0,0 +1,424 @@
+/**
+ * Copyright (C) 2011-2020 Red Hat, Inc. (https://github.com/Commonjava/indy)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.commonjava.indy.subsys.metrics.conf;
+
+import org.commonjava.indy.conf.IndyConfigInfo;
+import org.commonjava.o11yphant.metrics.conf.ConsoleConfig;
+import org.commonjava.o11yphant.metrics.conf.ELKConfig;
+import org.commonjava.o11yphant.metrics.conf.GraphiteConfig;
+import org.commonjava.o11yphant.metrics.conf.MetricsConfig;
+import org.commonjava.o11yphant.metrics.conf.PrometheusConfig;
+import org.commonjava.propulsor.config.annotation.ConfigName;
+import org.commonjava.propulsor.config.annotation.SectionName;
+
+import javax.enterprise.context.ApplicationScoped;
+import java.io.InputStream;
+import java.util.Arrays;
+
+import static org.commonjava.indy.subsys.metrics.conf.IndyMetricsConfig.SECTION;
+
+@SectionName( SECTION )
+@ApplicationScoped
+public class IndyMetricsConfig
+ implements IndyConfigInfo, MetricsConfig
+{
+ public static final String SECTION = "metrics";
+
+ public final static String NODE_PREFIX = "node.prefix";
+
+ private final static String REPORTER = "reporter";
+
+ private final static String REPORTER_CONSOLE_PERIOD = "console.reporter.period";
+
+ private final static String GRAPHITE_HOSTNAME = "graphite.hostname";
+
+ private final static String GRAPHITE_PORT = "graphite.port";
+
+ private final static String GRAPHITE_REPORTER_PREFIX = "graphite.reporter.prefix";
+
+ private final static String GRAPHITE_REPORTER_SIMPLE_PERIOD = "graphite.reporter.simple.period";
+
+ private final static String GRAPHITE_REPORTER_JVM_PERIOD = "graphite.reporter.jvm.period";
+
+ private final static String GRAPHITE_REPORTER_HEALTHCHECK_PERIOD = "graphite.reporter.healthcheck.period";
+
+ private final static String ENABLED = "enabled";
+
+ private static final String METER_RATIO = "meter.ratio";
+
+ private final static String ISPN_ENABLED = "ispn.enabled";
+
+ private final static String ISPN_GAUGES = "ispn.gauges";
+
+ private final static String ELK_REPORTER_PREFIX = "elk.reporter.prefix";
+
+ private final static String ELK_REPORTER_SIMPLE_PERIOD = "elk.reporter.simple.period";
+
+ private final static String ELK_REPORTER_JVM_PERIOD = "elk.reporter.jvm.period";
+
+ private final static String ELK_REPORTER_HEALTHCHECK_PERIOD = "elk.reporter.healthcheck.period";
+
+ private final static String ELK_REPORTER_INDEX = "elk.reporter.index";
+
+ private final static String ELK_REPORTER_HOSTS = "elk.reporter.hosts";
+
+ private static final String MEASURE_TRANSPORT = "measure.transport";
+
+ private static final String MEASURE_TRANSPORT_REPOS = "measure.transport.repos";
+
+ private final static String KOJI_ENABLED = "koji.enabled";
+
+ private final static String PATH_DB_ENABLED = "pathdb.enabled";
+
+ private final static String PATH_DB_OPERATIONS = "pathdb.operations";
+
+ private final static String PROMETHEUS_EXPRESSED_METRICS = "prometheus.expressed.metrics";
+
+ private static final String PROMETHEUS_NODE_LABEL = "prometheus.node.label";
+
+ private static final int DEFAULT_METER_RATIO = 1;
+
+ private boolean ispnMetricsEnabled;
+
+ private boolean pathDBMetricsEnabled = true; // default
+
+ private String pathDBMetricsOperations;
+
+ private String ispnGauges;
+
+ private boolean measureTransport;
+
+ private String measureTransportRepos;
+
+ private int consolePeriod = 30; // default
+
+ private String elkPrefix;
+
+ private int elkSimplePeriod;
+
+ private int elkJVMPeriod;
+
+ private int elkHealthCheckPeriod;
+
+ private String elkHosts;
+
+ private String elkIndex;
+
+ private String reporter;
+
+ private String graphiteHostName;
+
+ private int graphitePort;
+
+ private String graphitePrefix;
+
+ private int graphiteSimplePeriod;
+
+ private int graphiteJVMPeriod;
+
+ private int graphiteHealthcheckPeriod;
+
+ private boolean metricsEnabled;
+
+ private boolean kojiMetricEnabled;
+
+ private String nodePrefix;
+
+ private Integer meterRatio;
+
+ private String prometheusExpressedMetrics;
+
+ private String prometheusNodeLabel;
+
+ public boolean isMeasureTransport()
+ {
+ return measureTransport;
+ }
+
+ @ConfigName( NODE_PREFIX )
+ public void setNodePrefix( String nodePrefix )
+ {
+ this.nodePrefix = nodePrefix;
+ }
+
+ public String getNodePrefix()
+ {
+ return nodePrefix;
+ }
+
+ @ConfigName( MEASURE_TRANSPORT )
+ public void setMeasureTransport( boolean measureTransport )
+ {
+ this.measureTransport = measureTransport;
+ }
+
+ public String getMeasureTransportRepos()
+ {
+ return measureTransportRepos;
+ }
+
+ @ConfigName( MEASURE_TRANSPORT_REPOS )
+ public void setMeasureTransportRepos( String measureTransportRepos )
+ {
+ this.measureTransportRepos = measureTransportRepos;
+ }
+
+ @ConfigName( REPORTER_CONSOLE_PERIOD )
+ public void setConsolePeriod( int consolePeriod )
+ {
+ this.consolePeriod = consolePeriod;
+ }
+
+ @ConfigName( ELK_REPORTER_PREFIX )
+ public void setElkPrefix( String elkPrefix )
+ {
+ this.elkPrefix = elkPrefix;
+ }
+
+ @ConfigName( ELK_REPORTER_SIMPLE_PERIOD )
+ public void setElkSimplePeriod( int elkSimplePeriod )
+ {
+ this.elkSimplePeriod = elkSimplePeriod;
+ }
+
+ @ConfigName( ELK_REPORTER_JVM_PERIOD )
+ public void setElkJVMPeriod( int elkJVMPeriod )
+ {
+ this.elkJVMPeriod = elkJVMPeriod;
+ }
+
+ @ConfigName( ELK_REPORTER_HEALTHCHECK_PERIOD )
+ public void setElkHealthCheckPeriod( int elkHealthCheckPeriod )
+ {
+ this.elkHealthCheckPeriod = elkHealthCheckPeriod;
+ }
+
+ @ConfigName( ELK_REPORTER_HOSTS )
+ public void setElkHosts( String elkHosts )
+ {
+ this.elkHosts = elkHosts;
+ }
+
+ @ConfigName( ELK_REPORTER_INDEX )
+ public void setElkIndex( String elkIndex )
+ {
+ this.elkIndex = elkIndex;
+ }
+
+ public boolean isEnabled()
+ {
+ return metricsEnabled;
+ }
+
+ @ConfigName( ENABLED )
+ public void setEnabled( boolean metricsEnabled )
+ {
+ this.metricsEnabled = metricsEnabled;
+ }
+
+ @ConfigName( METER_RATIO )
+ public void setMeterRatio( int meterRatio )
+ {
+ this.meterRatio = meterRatio;
+ }
+
+ @Override
+ public int getMeterRatio()
+ {
+ return meterRatio == null ? DEFAULT_METER_RATIO : meterRatio;
+ }
+
+ @Override
+ public String getReporter()
+ {
+ return reporter;
+ }
+
+ @ConfigName( REPORTER )
+ public void setReporter( String reporter )
+ {
+ this.reporter = reporter;
+ }
+
+ @ConfigName( GRAPHITE_HOSTNAME )
+ public void setGraphiteHostName( String graphiteHostName )
+ {
+ this.graphiteHostName = graphiteHostName;
+ }
+
+ @ConfigName( GRAPHITE_PORT )
+ public void setGraphitePort( int graphitePort )
+ {
+ this.graphitePort = graphitePort;
+ }
+
+ @ConfigName( GRAPHITE_REPORTER_PREFIX )
+ public void setGraphitePrefix( String graphitePrefix )
+ {
+ this.graphitePrefix = graphitePrefix;
+ }
+
+ @ConfigName( GRAPHITE_REPORTER_SIMPLE_PERIOD )
+ public void setGraphiteSimplePeriod( int graphiteSimplePeriod )
+ {
+ this.graphiteSimplePeriod = graphiteSimplePeriod;
+ }
+
+ @ConfigName( GRAPHITE_REPORTER_JVM_PERIOD )
+ public void setGraphiteJVMPeriod( int graphiteJVMPeriod )
+ {
+ this.graphiteJVMPeriod = graphiteJVMPeriod;
+ }
+
+ @ConfigName( GRAPHITE_REPORTER_HEALTHCHECK_PERIOD )
+ public void setGraphiteHealthcheckPeriod( int graphiteHealthcheckPeriod )
+ {
+ this.graphiteHealthcheckPeriod = graphiteHealthcheckPeriod;
+ }
+
+ @ConfigName( KOJI_ENABLED )
+ public void setKojiMetricEnabled( boolean kojiMetricEnabled )
+ {
+ this.kojiMetricEnabled = kojiMetricEnabled;
+ }
+
+ public boolean isKojiMetricEnabled()
+ {
+ return kojiMetricEnabled;
+ }
+
+ public boolean isPathDBMetricsEnabled()
+ {
+ return pathDBMetricsEnabled;
+ }
+
+ @ConfigName( PATH_DB_ENABLED )
+ public void setPathDBMetricsEnabled( boolean pathDBMetricsEnabled )
+ {
+ this.pathDBMetricsEnabled = pathDBMetricsEnabled;
+ }
+
+ public String getPathDBMetricsOperations()
+ {
+ return pathDBMetricsOperations;
+ }
+
+ @ConfigName( PATH_DB_OPERATIONS )
+ public void setPathDBMetricsOperations( String pathDBMetricsOperations )
+ {
+ this.pathDBMetricsOperations = pathDBMetricsOperations;
+ }
+
+ @ConfigName( ISPN_ENABLED )
+ public void setIspnMetricsEnabled( boolean ispnMetricsEnabled )
+ {
+ this.ispnMetricsEnabled = ispnMetricsEnabled;
+ }
+
+ public boolean isIspnMetricsEnabled()
+ {
+ return ispnMetricsEnabled;
+ }
+
+ @ConfigName( ISPN_GAUGES )
+ public void setIspnGauges( String ispnGauges )
+ {
+ this.ispnGauges = ispnGauges;
+ }
+
+ public String getIspnGauges()
+ {
+ return ispnGauges;
+ }
+
+ @Override
+ public ConsoleConfig getConsoleConfig()
+ {
+ ConsoleConfig ret = new ConsoleConfig();
+ ret.setConsolePeriodInSeconds( consolePeriod );
+ return ret;
+ }
+
+ @Override
+ public GraphiteConfig getGraphiteConfig()
+ {
+ GraphiteConfig ret = new GraphiteConfig();
+ ret.setGraphiteHostName( graphiteHostName );
+ ret.setGraphitePort( graphitePort );
+ ret.setGraphitePeriodInSeconds( graphiteSimplePeriod );
+ ret.setGraphitePrefix( graphitePrefix );
+ ret.setGraphiteJVMPeriodInSeconds( graphiteJVMPeriod );
+ ret.setGraphiteHealthcheckPeriodInSeconds( graphiteHealthcheckPeriod );
+ return ret;
+ }
+
+ @Override
+ public ELKConfig getELKConfig()
+ {
+ ELKConfig ret = new ELKConfig();
+ ret.setElkHosts( elkHosts );
+ ret.setElkIndex( elkIndex );
+ ret.setElkPeriodInSeconds( elkSimplePeriod );
+ ret.setElkJVMPeriodInSeconds( elkJVMPeriod );
+ ret.setElkPrefix( elkPrefix );
+ ret.setElkHealthCheckPeriodInSeconds( elkHealthCheckPeriod );
+ return ret;
+ }
+
+ public PrometheusConfig getPrometheusConfig()
+ {
+ PrometheusConfig ret = new PrometheusConfig();
+ ret.setNodeLabel( prometheusNodeLabel );
+ if ( prometheusExpressedMetrics != null )
+ {
+ ret.setExpressedMetrics( Arrays.asList( prometheusExpressedMetrics.split( "\\s*,\\s*" ) ) );
+ }
+
+ return ret;
+ }
+
+ public String getDefaultConfigFileName()
+ {
+ return "conf.d/metrics.conf";
+ }
+
+ public InputStream getDefaultConfig()
+ {
+ return Thread.currentThread().getContextClassLoader().getResourceAsStream( "default-metrics.conf" );
+ }
+
+ public String getPrometheusExpressedMetrics()
+ {
+ return prometheusExpressedMetrics;
+ }
+
+ @ConfigName( PROMETHEUS_EXPRESSED_METRICS )
+ public void setPrometheusExpressedMetrics( String prometheusExpressedMetrics )
+ {
+ this.prometheusExpressedMetrics = prometheusExpressedMetrics;
+ }
+
+ public String getPrometheusNodeLabel()
+ {
+ return prometheusNodeLabel;
+ }
+
+ @ConfigName( PROMETHEUS_NODE_LABEL )
+ public void setPrometheusNodeLabel( String prometheusNodeLabel )
+ {
+ this.prometheusNodeLabel = prometheusNodeLabel;
+ }
+}
diff --git a/subsys/metrics/core/src/main/resources/META-INF/beans.xml b/subsys/metrics/src/main/resources/META-INF/beans.xml
similarity index 76%
rename from subsys/metrics/core/src/main/resources/META-INF/beans.xml
rename to subsys/metrics/src/main/resources/META-INF/beans.xml
index 0d565f116b..4c97b74b34 100644
--- a/subsys/metrics/core/src/main/resources/META-INF/beans.xml
+++ b/subsys/metrics/src/main/resources/META-INF/beans.xml
@@ -2,6 +2,6 @@
- org.commonjava.indy.metrics.jaxrs.interceptor.MetricsInterceptor
+ org.commonjava.o11yphant.metrics.interceptor.DefaultMetricsInterceptor
\ No newline at end of file
diff --git a/subsys/metrics/reporter/src/main/resources/default-metrics.conf b/subsys/metrics/src/main/resources/default-metrics.conf
similarity index 68%
rename from subsys/metrics/reporter/src/main/resources/default-metrics.conf
rename to subsys/metrics/src/main/resources/default-metrics.conf
index 57c12f43fa..befce628d3 100644
--- a/subsys/metrics/reporter/src/main/resources/default-metrics.conf
+++ b/subsys/metrics/src/main/resources/default-metrics.conf
@@ -1,6 +1,5 @@
[metrics]
enabled = false
-reporter.enabled = true
# Specify node prefix (on cluster). This prefix will be prepended to all metric names. Default empty.
#
@@ -43,7 +42,7 @@ measure.transport = true
#measure.transport.repos = central
# List of reporters (comma-separated). At present, Indy supports reporters:
-# reporter = graphite,zabbix,elasticsearch,console
+# reporter = graphite,elasticsearch,console
#
reporter = console
@@ -70,35 +69,6 @@ graphite.reporter.jvm.period = 300
# Period of healthcheck item for reporting
graphite.reporter.healthcheck.period = 600
-############################################
-# Zabbix reporter options
-############################################
-
-#The Zabbix API is a web based API and is shipped as part of the web frontend
-# API URL used to access Zabbix from a web browser
-zabbix.api.url = example.com
-#Zabbix username for login Zabbix server(Zabbix API)
-zabbix.user = test
-#Zabbix password for login Zabbix server(Zabbix API)
-zabbix.pwd = test
-# Zabbix sender is a command line utility that may be used to send performance data to Zabbix server for processing.
-# Host of Zabbix server for Zabbix sender
-zabbix.sender.host = 192.168.1.1
-# Port of Zabbix server for Zabbix sender
-zabbix.sender.port = 10051
-# This is the hostname of the current Indy instance, it also is host name of Zabbix monitoring
-zabbix.indy.host = example.com
-# Specific prefix for Zabbix Item
-zabbix.reporter.prefix = local.one
-# Indy's metrics item have three type: simple,jvm,healthcheck
-# Those type have different period of reporter
-# Period of simple item for reporting
-zabbix.reporter.simple.period = 30
-# Period of jvm item for reporting
-zabbix.reporter.jvm.period = 300
-# Period of healthcheck item for reporting
-zabbix.reporter.healthcheck.period = 600
-
############################################
# Elasticsearch reporter options
############################################
diff --git a/subsys/pom.xml b/subsys/pom.xml
index 041822a437..b7f1be86fa 100644
--- a/subsys/pom.xml
+++ b/subsys/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-subsystems
diff --git a/subsys/prefetch/pom.xml b/subsys/prefetch/pom.xml
index 26f7fc53b8..0ccf73d93b 100644
--- a/subsys/prefetch/pom.xml
+++ b/subsys/prefetch/pom.xml
@@ -20,7 +20,7 @@
indy-subsystems
org.commonjava.indy
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
4.0.0
diff --git a/subsys/prefetch/src/main/java/org/commonjava/indy/subsys/prefetch/PrefetchFrontier.java b/subsys/prefetch/src/main/java/org/commonjava/indy/subsys/prefetch/PrefetchFrontier.java
index 3b5ce57ef2..a00f15bb1c 100644
--- a/subsys/prefetch/src/main/java/org/commonjava/indy/subsys/prefetch/PrefetchFrontier.java
+++ b/subsys/prefetch/src/main/java/org/commonjava/indy/subsys/prefetch/PrefetchFrontier.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.subsys.prefetch;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.cdi.util.weft.Locker;
import org.commonjava.indy.audit.ChangeSummary;
import org.commonjava.indy.content.StoreResource;
diff --git a/subsys/prefetch/src/main/java/org/commonjava/indy/subsys/prefetch/PrefetchRepoComparator.java b/subsys/prefetch/src/main/java/org/commonjava/indy/subsys/prefetch/PrefetchRepoComparator.java
index 118b0b920a..7d28c2037b 100644
--- a/subsys/prefetch/src/main/java/org/commonjava/indy/subsys/prefetch/PrefetchRepoComparator.java
+++ b/subsys/prefetch/src/main/java/org/commonjava/indy/subsys/prefetch/PrefetchRepoComparator.java
@@ -15,7 +15,7 @@
*/
package org.commonjava.indy.subsys.prefetch;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.commonjava.indy.model.core.RemoteRepository;
import java.time.ZoneId;
diff --git a/test/db/pom.xml b/test/db/pom.xml
index 284f76dc42..f9b1fb35c0 100644
--- a/test/db/pom.xml
+++ b/test/db/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-test
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-test-db
diff --git a/test/docker/gogs-test-appliance/pom.xml b/test/docker/gogs-test-appliance/pom.xml
index 4f053d1763..0c4afc934a 100644
--- a/test/docker/gogs-test-appliance/pom.xml
+++ b/test/docker/gogs-test-appliance/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy.docker
indy-test-docker-appliances
- 2.3.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-docker-gogs-test-appliance
diff --git a/test/docker/keycloak-test-appliance/pom.xml b/test/docker/keycloak-test-appliance/pom.xml
index 3f7aadd45a..75bf0ca929 100644
--- a/test/docker/keycloak-test-appliance/pom.xml
+++ b/test/docker/keycloak-test-appliance/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy.docker
indy-test-docker-appliances
- 2.3.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-docker-keycloak-test-appliance
diff --git a/test/docker/pom.xml b/test/docker/pom.xml
index 0d0b3ead92..aa21d0ea1d 100644
--- a/test/docker/pom.xml
+++ b/test/docker/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-test
- 2.3.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy.docker
diff --git a/test/fixtures-core/pom.xml b/test/fixtures-core/pom.xml
index 05b3a46114..b51869abbf 100644
--- a/test/fixtures-core/pom.xml
+++ b/test/fixtures-core/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-test
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-test-fixtures-core
diff --git a/test/pom.xml b/test/pom.xml
index 5584dbb28b..ab106b93ca 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-test
diff --git a/test/providers-core/pom.xml b/test/providers-core/pom.xml
index 7bc2122956..8fa37f489c 100644
--- a/test/providers-core/pom.xml
+++ b/test/providers-core/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-test
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-test-providers-core
diff --git a/test/utils/pom.xml b/test/utils/pom.xml
index a7689acc55..ada181c34d 100644
--- a/test/utils/pom.xml
+++ b/test/utils/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-test
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-test-utils
diff --git a/toolchains.xml b/toolchains.xml
new file mode 100644
index 0000000000..95d201ca9b
--- /dev/null
+++ b/toolchains.xml
@@ -0,0 +1,40 @@
+
+
+
+
+ jdk
+
+ 1.8
+ OpenJDK
+
+
+ /usr/lib/jvm/java-1.8.0-openjdk
+
+
+
+ jdk
+
+ 11
+ OpenJDK
+
+
+ /usr/lib/jvm/java-11-openjdk
+
+
+
diff --git a/tools/assemblies/pom.xml b/tools/assemblies/pom.xml
index 77630871ac..dd8b929d2f 100644
--- a/tools/assemblies/pom.xml
+++ b/tools/assemblies/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy.tools
indy-tools
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
indy-assemblies
diff --git a/tools/pom.xml b/tools/pom.xml
index f96cae1d75..1304bfdc87 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.2-SNAPSHOT
org.commonjava.indy.tools
diff --git a/uis/layover/app/favicon.ico b/uis/layover/app/favicon.ico
new file mode 100644
index 0000000000..4aae4b1399
Binary files /dev/null and b/uis/layover/app/favicon.ico differ
diff --git a/uis/layover/pom.xml b/uis/layover/pom.xml
index baad9464fa..67f4fb1f6b 100644
--- a/uis/layover/pom.xml
+++ b/uis/layover/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy.ui
indy-uis
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
indy-ui-layover
diff --git a/uis/pom.xml b/uis/pom.xml
index a1a3f11af7..599b653ab5 100644
--- a/uis/pom.xml
+++ b/uis/pom.xml
@@ -21,7 +21,7 @@
org.commonjava.indy
indy-parent
- 2.5.0-SNAPSHOT
+ 2.5.4.1-SNAPSHOT
org.commonjava.indy.ui