[JIRA] (JENKINS-51004) slave.jar -loggingConfig argument not working as documented

1 view
Skip to first unread message

pjdarton@gmail.com (JIRA)

unread,
Apr 25, 2018, 11:51:04 AM4/25/18
to jenkinsc...@googlegroups.com
pjdarton created an issue
 
Jenkins / Bug JENKINS-51004
slave.jar -loggingConfig argument not working as documented
Issue Type: Bug Bug
Assignee: Jeff Thompson
Attachments: jenkins-slave.logging.properties
Components: remoting
Created: 2018-04-25 15:50
Environment: slave.jar version 3.14
Slaves connecting via JNLP, launched from a script.
Custom logging.properties file provided.
(also, my slaves were on Windows, but this might be platform-agnostic)
Labels: diagnostics
Priority: Minor Minor
Reporter: pjdarton

While trying to track down mysterious slave disconnects, I needed more logging than slave.jar provided by default so, after discovering the documentation I created a file "jenkins-slave.logging.properties" containing all the java.util.logging properties that I wanted set (logging more finely, and to both the console and logfiles).
I then invoked the slave.jar with the argument -loggingConfig jenkins-slave.logging.properties.
However, the console output from slave.jar was unaffected.
What I expected was that the logging would be configured according to my properties file, (but it wasn't).

I investigated and discovered that if, instead, I provide a JVM argument of -Djava.util.logging.config.file=jenkins-slave.logging.properties then that worked perfectly.

I also found that, if I did both then org.jenkinsci.remoting.engine.WorkDirManager's setupLogging method logged a FINE message of "Reading Logging configuration from file: jenkins-slave.logging.properties", implying that the -loggingConfig argument is being passed through correctly.

i.e. the CLI argument parsing is working, and the configuration is getting as far as WorkDirManager, but whatever is being done with it doesn't have the desired/expected effect.

What I would expect is that passing in a -loggingConfig argument would be (nearly) functionally identical to using -Djava.util.logging.config.file. While I would expect that anything logged before "Reading Logging configuration from file: jenkins-slave.logging.properties" would be logged with the default logging configuration (as mentioned in the docs), I would expect all subsequent logging to use the specified configuration not the default, and that's what doesn't seem to be happening.

Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v7.3.0#73011-sha1:3c73d0e)
Atlassian logo

pjdarton@gmail.com (JIRA)

unread,
Apr 25, 2018, 11:52:02 AM4/25/18
to jenkinsc...@googlegroups.com
pjdarton updated an issue
Change By: pjdarton
While trying to track down mysterious slave disconnects, I needed more logging than slave.jar provided by default so, after discovering [the documentation|https://github.com/jenkinsci/remoting/blob/remoting-3.14/docs/logging.md] I created a file " [ {{jenkins-slave.logging.properties}} |https://issues.jenkins-ci.org/secure/attachment/42314/jenkins-slave.logging.properties] " containing all the java.util.logging properties that I wanted set (logging more finely, and to both the console and logfiles).

I then invoked the slave.jar with the argument {{-loggingConfig jenkins-slave.logging.properties}}.
However, the console output from slave.jar was unaffected.
What I expected was that the logging would be configured according to my properties file, (but it wasn't).

I investigated and discovered that if, instead, I provide a JVM argument of {{-Djava.util.logging.config.file=jenkins-slave.logging.properties}} then that worked perfectly.

I also found that, if I did *both* then {{org.jenkinsci.remoting.engine.WorkDirManager}}'s [setupLogging method|https://github.com/jenkinsci/remoting/blob/remoting-3.14/src/main/java/org/jenkinsci/remoting/engine/WorkDirManager.java#L275] logged a {{FINE}} message of "{{Reading Logging configuration from file: jenkins-slave.logging.properties}}", implying that the {{-loggingConfig}} argument is being passed through correctly.

i.e. the CLI argument parsing is working, and the configuration is getting as far as {{WorkDirManager}}, but whatever is being done with it doesn't have the desired/expected effect.

What I would expect is that passing in a {{-loggingConfig}} argument would be (nearly) functionally identical to using {{-Djava.util.logging.config.file}}.  While I would expect that anything logged before "{{Reading Logging configuration from file: jenkins-slave.logging.properties}}" would be logged with the default logging configuration (as mentioned in the docs), I would expect all subsequent logging to use the specified configuration not the default, and that's what doesn't seem to be happening.

pjdarton@gmail.com (JIRA)

unread,
Apr 25, 2018, 11:58:02 AM4/25/18
to jenkinsc...@googlegroups.com
pjdarton updated an issue
TL;DR: -loggingConfig doesn't work; Workaround is to use -Djava.util.logging.config.file.

Long version: 
While trying to track down mysterious slave disconnects, I needed more logging than slave.jar provided by default so, after discovering [the documentation|https://github.com/jenkinsci/remoting/blob/remoting-3.14/docs/logging.md] I created a file "[ {{ ^ jenkins-slave.logging.properties }}|https://issues.jenkins-ci.org/secure/attachment/42314/jenkins-slave.logging.properties ]" containing all the java.util.logging properties that I wanted set (logging more finely, and to both the console and logfiles).

I then invoked the slave.jar with the argument {{-loggingConfig jenkins-slave.logging.properties}}.
However, the console output from slave.jar was unaffected.
What I expected was that the logging would be configured according to my properties file, (but it wasn't).

I investigated and discovered that if, instead, I provide a JVM argument of {{-Djava.util.logging.config.file=jenkins-slave.logging.properties}} then that worked perfectly.

I also found that, if I did *both* then {{org.jenkinsci.remoting.engine.WorkDirManager}}'s [setupLogging method|https://github.com/jenkinsci/remoting/blob/remoting-3.14/src/main/java/org/jenkinsci/remoting/engine/WorkDirManager.java#L275] logged a {{FINE}} message of "{{Reading Logging configuration from file: jenkins-slave.logging.properties}}", implying that the {{-loggingConfig}} argument is being passed through correctly.

i.e. the CLI argument parsing is working, and the configuration is getting as far as {{WorkDirManager}}, but whatever is being done with it doesn't have the desired/expected effect.

What I would expect is that passing in a {{-loggingConfig}} argument would be (nearly) functionally identical to using {{-Djava.util.logging.config.file}}.  While I would expect that anything logged before "{{Reading Logging configuration from file: jenkins-slave.logging.properties}}" would be logged with the default logging configuration (as mentioned in the docs), I would expect all subsequent logging to use the specified configuration not the default, and that's what doesn't seem to be happening.

jthompson@cloudbees.com (JIRA)

unread,
Oct 24, 2018, 6:48:01 PM10/24/18
to jenkinsc...@googlegroups.com
Jeff Thompson commented on Bug JENKINS-51004
 
Re: slave.jar -loggingConfig argument not working as documented

Thanks for the clear issue report.

However, I haven't been able to reproduce the issue. I have Remoting 3.23 in this instance and it seems to work fine with the "-loggingConfig" parameter. My agent is also on Windows.

 

This message was sent by Atlassian Jira (v7.11.2#711002-sha1:fdc329d)

jthompson@cloudbees.com (JIRA)

unread,
Nov 5, 2018, 5:20:02 PM11/5/18
to jenkinsc...@googlegroups.com
Jeff Thompson closed an issue as Cannot Reproduce
 
Change By: Jeff Thompson
Status: Open Closed
Resolution: Cannot Reproduce

williambrode@gmail.com (JIRA)

unread,
Feb 26, 2019, 8:02:02 PM2/26/19
to jenkinsc...@googlegroups.com
William Brode commented on Bug JENKINS-51004
 
Re: slave.jar -loggingConfig argument not working as documented

Jeff Thompson, how did you test this?  I just cloned the repo and tried to debug and found that -loggingConfig just doesn't work at all.  The tests work because they bypass the Launcher (wherein the problem resides).  So I'm wondering if you were just trying to reproduce using the maven tests?  In any case I'll fork the repo and do a pull request with what I think is the fix.

williambrode@gmail.com (JIRA)

unread,
Feb 26, 2019, 8:02:03 PM2/26/19
to jenkinsc...@googlegroups.com
William Brode assigned an issue to William Brode
 
Change By: William Brode
Assignee: Jeff Thompson William Brode

williambrode@gmail.com (JIRA)

unread,
Feb 26, 2019, 8:02:03 PM2/26/19
to jenkinsc...@googlegroups.com
William Brode reopened an issue
Change By: William Brode
Resolution: Cannot Reproduce
Status: Closed Reopened

jthompson@cloudbees.com (JIRA)

unread,
Feb 27, 2019, 11:20:02 AM2/27/19
to jenkinsc...@googlegroups.com
Jeff Thompson commented on Bug JENKINS-51004
 
Re: slave.jar -loggingConfig argument not working as documented

I tested it with a Jenkins instance running on Mac and an agent on Windows. I tried to follow the documentation and the defect report, though I don't recall the details now. Things seemed to work the way I expected.

If you could file a PR that would be great.

pjdarton@gmail.com (JIRA)

unread,
Feb 27, 2019, 11:43:02 AM2/27/19
to jenkinsc...@googlegroups.com
pjdarton commented on Bug JENKINS-51004

FYI, since I originally logged this bug, I uploaded the script that I use to run slave.jar onto the Jenkins wiki (as an example JNLP launcher script for use with the vSphere plugin, as folks kept getting stuck on this bit).
This script shows how I was invoking slave.jar, which should help with reproducing the bug (if the bug is still present in the current version of the code).

You can find it by going to the vSphere Cloud Plugin wiki page and looking for JenkinsSlaveStartup.cmd. That has a line (485) saying

@SET _cmdLine=%JAVA_HOME%bin\java -Djava.util.logging.config.file=jenkins-slave.logging.properties %SLAVE_JVM_ARGS% -jar slave.jar -jnlpUrl %SLAVE_JNLP_URL% %SLAVE_PARAMS%

where SLAVE_JVM_ARGS are typically "-Xms256M -Xmx4096M -Dhudson.remoting.RemoteClassLoader.force=com.sun.jna.Native", the SLAVE_JNLP_URL is what you'd expect and SLAVE_PARAMS typically contains "{{-secret }}...." and little else.
...and the next but-one line runs %_cmdLine% to invoke .../bin/java ... -jar slave.jar ...

williambrode@gmail.com (JIRA)

unread,
Mar 6, 2019, 6:21:02 PM3/6/19
to jenkinsc...@googlegroups.com

williambrode@gmail.com (JIRA)

unread,
Mar 6, 2019, 6:21:02 PM3/6/19
to jenkinsc...@googlegroups.com
William Brode started work on Bug JENKINS-51004
 
Change By: William Brode
Status: Reopened In Progress

pjdarton@gmail.com (JIRA)

unread,
Mar 7, 2019, 4:46:02 AM3/7/19
to jenkinsc...@googlegroups.com
pjdarton commented on Bug JENKINS-51004

Thanks for investigating and getting to the bottom of this

jthompson@cloudbees.com (JIRA)

unread,
Apr 30, 2019, 4:19:02 PM4/30/19
to jenkinsc...@googlegroups.com
Jeff Thompson resolved as Fixed
 
Change By: Jeff Thompson
Status: In Progress Resolved
Resolution: Fixed
Released As: Remoting 3.30

o.v.nenashev@gmail.com (JIRA)

unread,
May 6, 2019, 11:18:02 AM5/6/19
to jenkinsc...@googlegroups.com
Oleg Nenashev updated an issue
Change By: Oleg Nenashev
Released As: Remoting 3.30 , Jenkins 2.176

o.v.nenashev@gmail.com (JIRA)

unread,
May 6, 2019, 11:18:03 AM5/6/19
to jenkinsc...@googlegroups.com
Oleg Nenashev updated an issue
Change By: Oleg Nenashev
Labels: diagnostics lts-candidate

ogondza@gmail.com (JIRA)

unread,
May 23, 2019, 3:32:02 AM5/23/19
to jenkinsc...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages