avoid locks when registering services, upgrading gh action to java 11.0.6 and disabling some spifly logs implicitly
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 9d59ab7..6b24a10 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -31,7 +31,7 @@
runs-on: ubuntu-latest
strategy:
matrix:
- java: [ '11.0.4' ]
+ java: [ '11.0.6' ]
steps:
- name: Clone
uses: actions/checkout@v1
@@ -62,7 +62,7 @@
- name: Set up JDK
uses: actions/setup-java@v1
with:
- java-version: '11.0.4'
+ java-version: '11.0.6'
- name: Build
run: mvn install -DskipTests ossindex:audit
- name: Remove Snapshots Before Caching
diff --git a/winegrower-core/src/main/java/org/apache/winegrower/Ripener.java b/winegrower-core/src/main/java/org/apache/winegrower/Ripener.java
index 708497f..fdbeb38 100644
--- a/winegrower-core/src/main/java/org/apache/winegrower/Ripener.java
+++ b/winegrower-core/src/main/java/org/apache/winegrower/Ripener.java
@@ -61,6 +61,7 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Predicate;
+import java.util.logging.Level;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
@@ -93,6 +94,14 @@
void close();
class Configuration {
+ static {
+ // not the most elegant way but logs are clearly misleading today
+ if ("ERROR".equals(System.setProperty("org.slf4j.simpleLogger.log.org.apache.aries.spifly",
+ System.getProperty("org.slf4j.simpleLogger.log.org.apache.aries.spifly", "ERROR")))) {
+ java.util.logging.Logger.getLogger("org.apache.aries.spifly").setLevel(Level.SEVERE);
+ }
+ }
+
private static final Collection<String> DEFAULT_EXCLUSIONS = asList(
"slf4j-",
"xbean-",
diff --git a/winegrower-core/src/main/java/org/apache/winegrower/service/OSGiServices.java b/winegrower-core/src/main/java/org/apache/winegrower/service/OSGiServices.java
index 3d1ad0b..e86c3b3 100644
--- a/winegrower-core/src/main/java/org/apache/winegrower/service/OSGiServices.java
+++ b/winegrower-core/src/main/java/org/apache/winegrower/service/OSGiServices.java
@@ -145,7 +145,7 @@
serviceListeners.removeIf(d -> d.listener == listener);
}
- public synchronized ServiceRegistration<?> registerService(final String[] classes, final Object service,
+ public ServiceRegistration<?> registerService(final String[] classes, final Object service,
final Dictionary<String, ?> properties,
final Bundle from) {
final Hashtable<String, Object> serviceProperties = new Hashtable<String, Object>() {
@@ -312,7 +312,11 @@
}
private List<ServiceListenerDefinition> getListeners(final ServiceRegistration<?> reg) {
- return serviceListeners.stream()
+ final List<ServiceListenerDefinition> copy;
+ synchronized (serviceListeners) {
+ copy = new ArrayList<>(serviceListeners);
+ }
+ return copy.stream()
.filter(it -> it.filter == null || it.filter.match(reg.getReference()))
.collect(toList());
}