Logging FileHandler: static locks and hardcoded maximum number

Behrooz Nobakht nobeh5 at gmail.com
Fri Feb 20 03:15:10 UTC 2015


Hi Daniel,

Starting to create a minimal reproduction case for the
observations and the discussion, I think I have been
able to pin point a bug in our application. Basically,
it is a corner case for *properly* closing the FileHandler
instance in the end of p2 process. I have a minimal example,
with which actually I can confirm that all 8u25, 8u31, and 8u40ea
are working as expected. In this minimal example, if the FileHandler#close
is not properly used, then the same observations exist in regards with p1
and p2. If it is of interest for you, I can upload the showcase somewhere
such as GitHub.

Thanks,
Behrooz


On Thu, Feb 19, 2015 at 5:18 PM, Daniel Fuchs <daniel.fuchs at oracle.com>
wrote:

> Hi,
>
> On 19/02/15 16:30, Behrooz Nobakht wrote:
>
>> I'd be very happy to introduce an issue. But,
>> I've always failed to be able to create an account on
>> https://bugs.openjdk.java.net/secure/Dashboard.jspa
>> so, for me, the starting point is where I should do this?!
>>
>
> If you are not an OpenJDK member then I guess you should
> use http://bugs.java.com/ - and at some point this issue will
> be transferred to https://bugs.openjdk.java.net/
> where it (hopefully) will come in my inbox :-)
>
> You might want to refer to this email thread in your issue
> description.
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2015-
> February/031624.html
>
>
> best regards,
>
> -- daniel
>
>
>> On Thu, Feb 19, 2015 at 3:56 PM, Daniel Fuchs <daniel.fuchs at oracle.com
>> <mailto:daniel.fuchs at oracle.com>> wrote:
>>
>>     Thanks Behrooz.
>>
>>     Could you log an issue for this then?
>>     If you can attach a small reproducer it will be helpful.
>>
>>     There are a bunch of unit tests in the JDK that verify
>>     that FileHandler .lck files are correctly deleted - but
>>     these tests are all mono-process. I would like to make
>>     sure to chase down the real issue - so a small isolated
>>     reproducer would definitely help.
>>
>>     best regards,
>>
>>     -- daniel
>>
>>
>>     On 19/02/15 15:29, Behrooz Nobakht wrote:
>>
>>         Hi Daniel,
>>
>>         Thanks for referring to this ticket.
>>         Here is what I did.
>>
>>         My Java version:
>>
>>         java version "1.8.0_40-ea"
>>         Java(TM) SE Runtime Environment (build 1.8.0_40-ea-b21)
>>         Java HotSpot(TM) 64-Bit Server VM (build 25.40-b24, mixed mode)
>>
>>         So, to make this more observable.
>>         The p1 process invokes a command with p2: start and stop.
>>         So, with 50 pairs of start and stop, we should be able to see the
>>         problem again.
>>
>>         I ran a script that invokes start from p1, gets the status of
>>         p2, stops
>>         p2 and confirms its status again.
>>         Here's the output from run 49:
>>
>>         ===
>>         run 49
>>         Invoking Start
>>         RUNNING
>>         Invoking Stop
>>         STOPPED
>>         run 49 - Done
>>         run 50
>>         Invoking Start
>>         RUNNING
>>         Invoking Stop
>>         STOPPED
>>         run 50 - Done
>>         run 51
>>         Invoking Start
>>         RUNNING
>>         Invoking Stop
>>         RUNNING
>>         run 51 - Done
>>         run 52
>>         Invoking Start
>>         STOPPED
>>         Invoking Stop
>>         STOPPED
>>         run 52 - Done
>>         run 53
>>         Invoking Start
>>         STOPPED
>>         Invoking Stop
>>         STOPPED
>>         run 53 - Done
>>         run 54
>>         Invoking Start
>>         STOPPED
>>         Invoking Stop
>>         STOPPED
>>         run 54 - Done
>>         ===
>>
>>         As the above shows, starting run 51, the expected status is
>>         violated.
>>         And, here is what I get a lsof of the log directory on the
>>         application:
>>
>>         ===
>>         -rw-rw-r-- 1 appuser appuser    0 Feb 19 15:19
>>         app.stdouterr.100.0.log.lck
>>         -rw-rw-r-- 1 appuser appuser 3.0K Feb 19 15:19
>>         app.stdouterr.100.0.log
>>         -rw-rw-r-- 1 appuser appuser    0 Feb 19 15:16
>>         app.stdouterr.0.0.log.lck
>>         -rw-rw-r-- 1 appuser appuser  366 Feb 19 15:16
>> app.stdouterr.0.0.log
>>         ===
>>
>>         Thanks for your time on this,
>>         Behrooz
>>
>>
>>
>>
>>
>>         On Thu, Feb 19, 2015 at 3:01 PM, Daniel Fuchs
>>         <daniel.fuchs at oracle.com <mailto:daniel.fuchs at oracle.com>
>>         <mailto:daniel.fuchs at oracle.__com
>>         <mailto:daniel.fuchs at oracle.com>>> wrote:
>>
>>              Hi Behrooz,
>>
>>              On 19/02/15 13:46, Behrooz Nobakht wrote:
>>
>>                  The version of Java is irrelevant. We have tested our
>> setup
>>                  on Java 7 and Java 8 u25/31. We observe the same
>> exception.
>>
>>
>>              Ok - then the version is indeed relevant ;-)
>>
>>              What you are observing may be a symptom of
>>         https://bugs.openjdk.java.net/____browse/JDK-8048020
>>         <https://bugs.openjdk.java.net/__browse/JDK-8048020>
>>              <https://bugs.openjdk.java.__net/browse/JDK-8048020
>>         <https://bugs.openjdk.java.net/browse/JDK-8048020>>
>>              which was fixed in 8u40 build 6.
>>
>>              If you would like to verify that this bug is indeed
>>              what is causing your issue, you may want to try out
>>              your setup with an early access build of 8u40, and
>>              see if the problem disappears.
>>
>>              Early access of 8u40 may be downloaded from there:
>>         https://jdk8.java.net/____download.html
>>         <https://jdk8.java.net/__download.html>
>>              <https://jdk8.java.net/__download.html
>>         <https://jdk8.java.net/download.html>>
>>
>>
>>              best regards,
>>
>>              -- daniel
>>
>>
>>
>>
>>         --
>>         -- Behrooz Nobakht
>>
>>
>>
>>
>>
>> --
>> -- Behrooz Nobakht
>>
>
>


-- 
-- Behrooz Nobakht



More information about the core-libs-dev mailing list