openhab / openhab-distro

The binary distribution of openHAB
https://www.openhab.org/
Eclipse Public License 2.0
1.3k stars 394 forks source link

CM Configuration Updater Exceptions after changing logging #636

Closed itn3rd77 closed 1 year ago

itn3rd77 commented 6 years ago

Hi,

I want to bring the following exceptions to your attention which I would consider a bug or maybe better a misbehavior.

Ok here is what I have done and observed. I wanted to change the logging for the audit.log, events.log and openhab.log from SizeBasedTriggeringPolicy to TimeBasedTriggeringPolicy. I have stopped openHAB and replaced the file userdata/etc/org.ops4j.pax.logging.cfg with my modified file (see attached file: org.ops4j.pax.logging.cfg.new.txt). After replacing the original file with the modified file I startet openHAB and did get a bunch of exceptions (see attached file: openhab.log):

2018-01-25 11:23:10,823 CM Configuration Updater (Update: pid=org.ops4j.pax.logging) ERROR Unable to inject fields into builder class for plugin type class org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender, element RollingRandomAccessFile. java.lang.IllegalStateException: Pattern does not contain a date
    at org.apache.logging.log4j.core.appender.rolling.PatternProcessor.getNextTime(PatternProcessor.java:129)
    at org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy.initialize(TimeBasedTriggeringPolicy.java:60)
    at org.apache.logging.log4j.core.appender.rolling.CompositeTriggeringPolicy.initialize(CompositeTriggeringPolicy.java:53)
    at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.setTriggeringPolicy(RollingFileManager.java:302)
    at org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.updateData(RollingRandomAccessFileManager.java:261)
    at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:119)
    at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
    at org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.getRollingRandomAccessFileManager(RollingRandomAccessFileManager.java:87)
    at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender$Builder.build(RollingRandomAccessFileAppender.java:116)
    at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender$Builder.build(RollingRandomAccessFileAppender.java:52)
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244)
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:261)
    at org.ops4j.pax.logging.log4j2.internal.PaxLoggingServiceImpl.doUpdate(PaxLoggingServiceImpl.java:213)
    at org.ops4j.pax.logging.log4j2.internal.PaxLoggingServiceImpl.updated(PaxLoggingServiceImpl.java:158)
    at org.ops4j.pax.logging.log4j2.internal.PaxLoggingServiceImpl$1ManagedPaxLoggingService.updated(PaxLoggingServiceImpl.java:426)
    at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189)
    at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152)
    at org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85)
    at org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1792)
    at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:141)
    at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:109)
    at java.lang.Thread.run(Thread.java:748)

After restarting openHAB once again openHAB comes up fine without any exception. I suspect the old config saved at userdata/config/org/ops4j/pax/logging.config (see attached file: config_org_ops4j_pax_logging.config.txt) to be responsible for the exceptions and something get mixed up. But that's just a guess. After restarting openHAB the file userdata/config/org/ops4j/pax/logging.config is updated with the new values from userdata/etc/org.ops4j.pax.logging.cfg

I haven't tested if this is true for other files as well besides logging.

Attachments

  1. org.ops4j.pax.logging.cfg.new.txt
  2. openhab.log
  3. config_org_ops4j_pax_logging.config.txt
kaikreuzer commented 6 years ago

I would claim that this is not at all specific to openHAB, but most likely exists in plain Karaf as well. Would be great if you could verify this assumption - if it is correct, a bug should be opened for Karaf.

itn3rd77 commented 6 years ago

I must admit that I have no clue what to do - 0,000 knowledge with Karaf ...

wborn commented 6 years ago

Could you retest this with a recent 2.4.0-SNAPSHOT build (# 1362 or newer) @itn3rd77? Karaf has been upgraded from 4.1.5 to 4.2.1 so many bugs were fixed. See also the Karaf Release Notes.