<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> 
        <base href="https://jira.qos.ch"> 
        <title>Message Title</title> 
    </head> 
    <body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429"> 
        <table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5"> <!-- header here --> 
            <tbody>
                <tr> 
                    <td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px"> 
                        <table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                            <tbody>
                              <tr> 
                              <td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="cid:jira-generated-image-avatar-81ab58d5-a504-4944-bffa-393a3581d027" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td> 
                              <td id="header-text-container" valign="middle" style="padding: 0; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="prunge" id="email_prunge" href="https://jira.qos.ch/secure/ViewProfile.jspa?name=prunge" style="color:#0052cc;; color: #3b73af; text-decoration: none">Peter Runge</a> <strong>commented</strong> on <a href="https://jira.qos.ch/browse/LOGBACK-1716" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-bec2c529-13f6-4964-8437-7cc43b8fe3fd" height="16" width="16" border="0" align="absmiddle" alt="Bug"> LOGBACK-1716</a> </td> 
                              </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
                <tr> 
                    <td id="email-content-container" style="padding: 0; border-collapse: collapse; padding: 0 20px"> 
                        <table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-spacing: 0; border-collapse: separate"> 
                            <tbody>
                              <tr> <!-- there needs to be content in the cell for it to render in some clients --> 
                              <td class="email-content-rounded-top mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff"> </td> 
                              </tr> 
                              <tr> 
                              <td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> 
                              <table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                              <tbody>
                              <tr> 
                              <td style="vertical-align: top;; padding: 0; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://jira.qos.ch/browse/LOGBACK-1716" style="color: #3b73af; text-decoration: none">Re: ServerSocketAppender doesn't work with 1.3.0+</a> </span> </td> 
                              </tr> 
                              </tbody>
                              </table> </td> 
                              </tr> 
                              <tr> 
                              <td id="text-paragraph-pattern-top" class="email-content-main mobile-expand  comment-top-pattern" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; border-bottom: none; padding-bottom: 0" bgcolor="#ffffff"> 
                              <table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px"> 
                              <tbody>
                              <tr> 
                              <td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <p style="margin: 10px 0 0; margin-top: 0">I have encountered this as well after upgrading from Spring Boot 2 to Spring Boot 3 (which upgraded logback from version 1.2.11 to 1.4.5) in one of my projects and done some analysis.  I'll share it here.</p> <p style="margin: 10px 0 0">I was using ServerSocketAppender in a configuration like this on the server:</p> 
                              <div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px 3px 3px 3px; border-radius: 3px 3px 3px 3px; margin: 9px 0">
                              <div class="codeContent panelContent" style="padding: 9px 12px"> 
                              <pre class="code-xml" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
...
<span class="code-tag" style="color: #000091"><appender name=<span class="code-quote" style="color: #009100">"LOGNET"</span> class=<span class="code-quote" style="color: #009100">"ch.qos.logback.classic.net.server.ServerSocketAppender"</span>></span>
    <span class="code-tag" style="color: #000091"><port></span>4560<span class="code-tag" style="color: #000091"></port></span>
<span class="code-tag" style="color: #000091"></appender></span>
...
</pre> 
                              </div>
                              </div> <p style="margin: 10px 0 0">With Logback 1.2.11 everything worked fine - the server started up and our client could connect and receive log messages without problems.  With Logback 1.4.5, the client would never receive any log messages, and would block when initializing the ObjectInputStream - so no bytes were being sent across the socket, not even the serialization stream headers which would have been sent under the old version when the ObjectOutputStream would have been constructed on the server. </p> <p style="margin: 10px 0 0"> Debugging the server and appender showed that under 1.4.5, connections were being accepted (in ServerSocketListener.acceptClient() from ConcurrentServerRunner.run()) but the executor that was supposed to run the RemoteReceiverStreamClient was never running it despite being asked to.  Looks like in 1.4.5, the executor (a ScheduledThreadPoolExecutor) has a pool size of 1 while in 1.2.11 it had a pool size of 10.  This executor is also being used for the thing that accepts connections from the ServerSocket, so there's no more room to actually do anything with the client connections themselves.</p> <p style="margin: 10px 0 0">The executor is being created/configured from Context.getScheduledExecutorService() which, in the default implementation of ContextBase goes to <a href="https://github.com/qos-ch/logback/blob/d378e8b6f881826b8e06dda1cf78e70f0b2d8b07/logback-core/src/main/java/ch/qos/logback/core/util/ExecutorServiceUtil.java#L61" class="external-link" target="_blank" rel="nofollow noopener" style="color: #3b73af; text-decoration: none">ExecutorServiceUtil.newScheduledExecutorService()</a> which gets the pool size from <a href="https://github.com/qos-ch/logback/blob/d378e8b6f881826b8e06dda1cf78e70f0b2d8b07/logback-core/src/main/java/ch/qos/logback/core/CoreConstants.java#L36" class="external-link" target="_blank" rel="nofollow noopener" style="color: #3b73af; text-decoration: none">CoreConstants.SCHEDULED_EXECUTOR_POOL_SIZE</a> which is currently set to 1, but used to be set to 8. I believe this is the root cause of ServerSocketAppender no longer working. The commit <a href="https://github.com/qos-ch/logback/commit/fc7c9a440f560260c450cfe57e5f1a42b643a6a5" class="external-link" target="_blank" rel="nofollow noopener" style="color: #3b73af; text-decoration: none">reduce core poll size to 1, disable cetrtain ServerSocket tests</a> was the change. </p> <p style="margin: 10px 0 0">It also looks like ServerSocketAppenderBaseFunctionalTest was disabled/ignored which now blocks indefinitely because of this bug and runs again if the pool size is changed back. </p> <p style="margin: 10px 0 0">To work around the issue in my own project, I subclassed ServerSocketAppender and overrode setContext(), substituting my own wrapper implementation of Context that delegated to the original with the exception of getScheduledExecutorService() where I created my own executor service with a larger pool size. It was an ugly hack but did the job.</p> 
                              <hr> <p style="margin: 10px 0 0">I'm not sure the reason of reducing the pool size and as to whether reverting that change to make ServerSocketAppender work again is an option or the best idea. Ideally it would be great to have a configuration option on ServerSocketAppender to specify the maximum number of connections, though that would mean each ServerSocketAppender would have to manage its own executor service instead of using the one from the context.</p> <p style="margin: 10px 0 0"><a href="https://github.com/causalnet/logback/commit/0f0573169013d3adb365ae2c9ef3051b1aa7c24d" class="external-link" target="_blank" rel="nofollow noopener" style="color: #3b73af; text-decoration: none">In a fork</a> I have added some protected methods to AbstractServerSocketAppender to allow subclasses to override which executor is used for accepting socket connections and for handling each client connection. Whether or not the fix will be to revert the pool size change, this might be useful to users that want to, by subclassing, customize how many concurrent client connections are allowed to read log messages from a ServerSocketAppender without having to create a whole new context class. I'd be happy to clean it up and contribute it if you want.</p> </td> 
                              </tr> 
                              </tbody>
                              </table> </td> 
                              </tr> 
                              <tr> 
                              <td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> 
                              <table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> 
                              <tbody>
                              <tr> 
                              <td id="actions-pattern-container" valign="middle" style="padding: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0"> 
                              <table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                              <tbody>
                              <tr> 
                              <td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"> <a href="https://jira.qos.ch/browse/LOGBACK-1716#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-831d4d54-be13-4fca-8674-6f58cbc15418" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a> </td> 
                              <td class="actions-pattern-action-text-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://jira.qos.ch/browse/LOGBACK-1716#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> </td> 
                              </tr> 
                              </tbody>
                              </table> </td> 
                              </tr> 
                              </tbody>
                              </table> </td> 
                              </tr> <!-- there needs to be content in the cell for it to render in some clients --> 
                              <tr> 
                              <td class="email-content-rounded-bottom mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff"> </td> 
                              </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
                <tr> 
                    <td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px"> 
                        <table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                            <tbody>
                              <tr> 
                              <td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian Jira <span id="footer-build-information">(v9.6.0#960000-<span title="a3ee8af5f2c25a3620f1c8a480ceeacbd2cd7740" data-commit-id="a3ee8af5f2c25a3620f1c8a480ceeacbd2cd7740}">sha1:a3ee8af</span>)</span> </td> 
                              <td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top"> 
                              <table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                              <tbody>
                              <tr> 
                              <td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px"> <img id="footer-pattern-logo-desktop" src="https://jira.qos.ch/images/mail/atlassian-email-logo.png" alt="Atlassian logo" title="Atlassian logo" width="191" height="24" class="image_fix"> </td> 
                              </tr> 
                              </tbody>
                              </table> </td> 
                              </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
            </tbody>
        </table>  
    </body>
</html>