You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by tj...@apache.org on 2020/08/19 22:20:26 UTC
[felix-dev] branch master updated: FELIX-6321 - keep existing
LogManager on config update
This is an automated email from the ASF dual-hosted git repository.
tjwatson pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git
The following commit(s) were added to refs/heads/master by this push:
new 3e7972b FELIX-6321 - keep existing LogManager on config update
3e7972b is described below
commit 3e7972b20b16bb069d71797add4e8196b048d1ac
Author: Thomas Watson <tj...@us.ibm.com>
AuthorDate: Wed Aug 19 17:15:04 2020 -0500
FELIX-6321 - keep existing LogManager on config update
Replacing the existing LogManager with a new one on
configuration updates causes the existing loggers for
each component to stop working properly. This is a quick
fix to avoid creating a new LogManager on config updates
of SCR. If dynamic updates is needed for the ds.log.extension
property then more work is needed. For now this is a
one time setting only configured through context properties
---
scr/src/main/java/org/apache/felix/scr/impl/Activator.java | 14 ++++++++------
.../apache/felix/scr/impl/config/ScrConfigurationImpl.java | 2 +-
.../org/apache/felix/scr/impl/logger/ExtLogManager.java | 2 +-
.../java/org/apache/felix/scr/impl/logger/LogManager.java | 1 -
.../org/apache/felix/scr/impl/logger/ScrLogManager.java | 7 +++++--
.../java/org/apache/felix/scr/impl/logger/LoggerTest.java | 12 ++++++++++--
6 files changed, 25 insertions(+), 13 deletions(-)
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/Activator.java b/scr/src/main/java/org/apache/felix/scr/impl/Activator.java
index f3ab7cb..a419f43 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/Activator.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/Activator.java
@@ -652,14 +652,16 @@ public class Activator extends AbstractExtender
}
}
- public void resetLogger()
+ public void setLogger()
{
- // reset existing logger
- ScrLogger existingLogger = logger;
- if (existingLogger != null)
+ // TODO we only set the logger once
+ // If the need arises to be able to dynamically set the logger type
+ // then more work is needed to do that switch
+ // for now we only can configure ds.log.extension with context properties
+ if (logger == null)
{
- existingLogger.close();
+ logger = ScrLogManager.scr(m_context, m_configuration);
}
- logger = ScrLogManager.scr(m_context, m_configuration);
+
}
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfigurationImpl.java b/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfigurationImpl.java
index 064312e..6d6fd20 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfigurationImpl.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfigurationImpl.java
@@ -222,7 +222,7 @@ public class ScrConfigurationImpl implements ScrConfiguration
oldGlobalExtender = this.globalExtender;
this.globalExtender = newGlobalExtender;
}
- activator.resetLogger();
+ activator.setLogger();
if ( newGlobalExtender != oldGlobalExtender )
{
activator.restart( newGlobalExtender );
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/logger/ExtLogManager.java b/scr/src/main/java/org/apache/felix/scr/impl/logger/ExtLogManager.java
index 9c26355..1752987 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/logger/ExtLogManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/logger/ExtLogManager.java
@@ -52,7 +52,7 @@ class ExtLogManager extends ScrLogManager {
@Override
public BundleLogger bundle(Bundle bundle) {
- return getLogger(this.bundle, SCR_LOGGER_PREFIX.concat(bundle.getSymbolicName()), ScrLoggerFacade.class);
+ return getLogger(bundle, SCR_LOGGER_PREFIX.concat(bundle.getSymbolicName()), ScrLoggerFacade.class);
}
@Override
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/logger/LogManager.java b/scr/src/main/java/org/apache/felix/scr/impl/logger/LogManager.java
index 1bfda88..47c8d03 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/logger/LogManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/logger/LogManager.java
@@ -160,7 +160,6 @@ class LogManager extends ServiceTracker<LoggerFactory, LoggerFactory> implements
LogDomain(Bundle bundle) {
this.bundle = bundle;
- open();
}
private void reset() {
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/logger/ScrLogManager.java b/scr/src/main/java/org/apache/felix/scr/impl/logger/ScrLogManager.java
index 6a1c18d..d25dd92 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/logger/ScrLogManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/logger/ScrLogManager.java
@@ -52,10 +52,13 @@ public class ScrLogManager extends LogManager {
*/
public static ScrLogger scr(BundleContext context, ScrConfiguration config) {
+ ScrLogManager manager;
if (config.isLogExtension())
- return new ExtLogManager(context, config).scr();
+ manager = new ExtLogManager(context, config);
else
- return new ScrLogManager(context, config).scr();
+ manager = new ScrLogManager(context, config);
+ manager.open();
+ return manager.scr();
}
ScrLogManager(BundleContext context, ScrConfiguration config) {
diff --git a/scr/src/test/java/org/apache/felix/scr/impl/logger/LoggerTest.java b/scr/src/test/java/org/apache/felix/scr/impl/logger/LoggerTest.java
index 527b812..cfafd1b 100644
--- a/scr/src/test/java/org/apache/felix/scr/impl/logger/LoggerTest.java
+++ b/scr/src/test/java/org/apache/felix/scr/impl/logger/LoggerTest.java
@@ -118,6 +118,7 @@ public class LoggerTest {
ScrConfiguration config = mock(ScrConfiguration.class);
when(config.getLogLevel()).thenReturn(Level.DEBUG);
ExtLogManager elm = new ExtLogManager(scr.getBundleContext(), config);
+ elm.open();
ComponentLogger clog = elm.component(component, "i.c", "c");
@@ -131,6 +132,7 @@ public class LoggerTest {
ScrConfiguration config = mock(ScrConfiguration.class);
when(config.getLogLevel()).thenReturn(Level.DEBUG);
ExtLogManager elm = new ExtLogManager(scr.getBundleContext(), config);
+ elm.open();
try (Buf out = new Buf(System.out);
Buf err = new Buf(System.err);) {
try {
@@ -191,7 +193,7 @@ public class LoggerTest {
bundle.log(Level.ERROR, "Ext", null);
assertThat(l.entries).hasSize(1);
LogEntry le = l.entries.get(0);
- assertThat(le.bundle).isEqualTo(scr);
+ assertThat(le.bundle).isEqualTo(component);
}
@Test
@@ -263,6 +265,7 @@ public class LoggerTest {
l.register();
ScrLogManager lm = new ExtLogManager(scr.getBundleContext(), config);
+ lm.open();
{
l.entries.clear();
@@ -282,7 +285,7 @@ public class LoggerTest {
assertThat(l.entries).hasSize(1);
LogEntry le = l.entries.get(0);
assertThat(le.format).isEqualTo("Bundle");
- assertThat(le.bundle).isEqualTo(scr);
+ assertThat(le.bundle).isEqualTo(component);
assertThat(le.loggername).isEqualTo(ExtLogManager.SCR_LOGGER_PREFIX + "component");
}
@@ -318,6 +321,7 @@ public class LoggerTest {
l.register();
ScrLogManager lm = new ScrLogManager(scr.getBundleContext(), config);
+ lm.open();
{
l.entries.clear();
@@ -363,6 +367,7 @@ public class LoggerTest {
public void testLifeCycle() {
LogManager lm = new LogManager(scr.getBundleContext());
+ lm.open();
LoggerFacade facade = lm.getLogger(scr, "lifecycle", LoggerFacade.class);
assertThat(facade.logger).isNull();
@@ -398,6 +403,7 @@ public class LoggerTest {
public void testPrioritiesLogService() {
LogManager lm = new LogManager(scr.getBundleContext());
+ lm.open();
LoggerFacade facade = lm.getLogger(scr, "lifecycle", LoggerFacade.class);
assertThat(facade.logger).isNull();
@@ -430,6 +436,7 @@ public class LoggerTest {
l.register();
ScrLogManager lm = new ScrLogManager(scr.getBundleContext(), config);
+ lm.open();
lm.component(component, "implementation.class", "component");
assertThat(lm.lock.domains).hasSize(1);
@@ -457,6 +464,7 @@ public class LoggerTest {
l.register();
ScrLogManager lm = new ScrLogManager(scr.getBundleContext(), config);
+ lm.open();
ScrLogger facade = lm.scr();
assert LogLevel.values().length == Level.values().length;