[
https://issues.apache.org/jira/browse/BOOKKEEPER-67?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13104760#comment-13104760
]
Matthieu Morel commented on BOOKKEEPER-67:
------------------------------------------
Flavio, I suppose the output you show is from a macosx system.
I confirm that on macosx, the default JVM (1.6.0_26 on my machine) actually
seems to _ignore_ the soft max open file limit, and uses a hardcoded limit of
10240. Some hints there
http://lists.apple.com/archives/Java-dev/2008/Aug/msg00212.html
Attached is a small program that outputs the current number of open files and
maximum number of open files for a java process, as seen by the JVM. (pardon
the circumvoluted way to fetch the info!) You run it as: java
-Dcom.sun.management.jmxremote.port=4086
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false -cp . ShowFileDescriptorsInfo
output on macosx 10.6.8:
$ ulimit -a | grep files
open files (-n) 256
$ java -Dcom.sun.management.jmxremote.port=4086
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false -cp . ShowFileDescriptorsInfo
OpenFileDescriptorCount -> 43
MaxFileDescriptorCount -> 10240
On linux (RHEL4.8), the soft limit is taken into account by the JVM (standard
oracle/sun), therefore we reach the default soft limit of 1024, and things
break (I tracked the creation of files in bookkeeper.bookie.FileInfo and can
confirm that).
$ ulimit -a |grep files
open files (-n) 1024
$ java -Dcom.sun.management.jmxremote.port=4086
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false -cp . ShowFileDescriptorsInfo
OpenFileDescriptorCount -> 15
MaxFileDescriptorCount -> 1024
I'm not sure if we need to create that many ledgers in this test, couldn't the
same point be made with 100 ledgers? Then the test would pass out of the box on
linux as well.
> BookieReadWriteTest gets blocked and never finishes
> ---------------------------------------------------
>
> Key: BOOKKEEPER-67
> URL: https://issues.apache.org/jira/browse/BOOKKEEPER-67
> Project: Bookkeeper
> Issue Type: Bug
> Environment: RHEL4.8 and Debian 6
> Reporter: Matthieu Morel
> Attachments: BookieReadWriteTest-RHEL4.8.log,
> ShowFileDescriptorsInfo.java
>
>
> I systematically reproduce this behaviour on the linux boxes I tested with.
> The test gets stuck acquiring permits from a semaphore, normally used for
> throttling:
> "main" prio=10 tid=0x08058c00 nid=0x588d waiting on condition [0xf723c000]
> java.lang.Thread.State: WAITING (parking)
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for <0xb5619728> (a
> java.util.concurrent.Semaphore$NonfairSync)
> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:969)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1281)
> at java.util.concurrent.Semaphore.acquire(Semaphore.java:286)
> at
> org.apache.bookkeeper.client.LedgerHandle.asyncAddEntry(LedgerHandle.java:394)
> at
> org.apache.bookkeeper.client.LedgerHandle.asyncAddEntry(LedgerHandle.java:366)
> at
> org.apache.bookkeeper.test.BookieReadWriteTest.testShutdown(BookieReadWriteTest.java:815)
> The issue might come from the synchronization mechanism used in the test
> itself.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira