[ https://issues.apache.org/jira/browse/FLUME-2812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15638664#comment-15638664 ]
ASF subversion and git services commented on FLUME-2812: -------------------------------------------------------- Commit f581f6ed0e820da370c4a83a4ff7b05278d09fc3 in flume's branch refs/heads/trunk from [~denes] [ https://git-wip-us.apache.org/repos/asf?p=flume.git;h=f581f6e ] FLUME-2812. Fix semaphore leak causing java.lang.Error: Maximum permit count exceeded in MemoryChannel bytesRemaining.release(putByteCounter) gets called in MemoryTransaction.doRollback while acquire is called only in doCommit. This results in semaphore leak and the number of permits in the semaphore eventually exceeds Integer.MAX_VALUE and Semaphore.release() throws java.lang.Error: Maximum permit count exceeded. This closes #83 Reviewers: Attila Simon, Bessenyei Balázs Donát (Denes Arvay via Bessenyei Balázs Donát) > Exception in thread "SinkRunner-PollingRunner-DefaultSinkProcessor" > java.lang.Error: Maximum permit count exceeded > ------------------------------------------------------------------------------------------------------------------ > > Key: FLUME-2812 > URL: https://issues.apache.org/jira/browse/FLUME-2812 > Project: Flume > Issue Type: Bug > Components: Channel, Sinks+Sources > Affects Versions: v1.6.0 > Environment: **OS INFO** > CentOS release 6.6 (Final) > Kernel \r on an \m > **JAVA INFO** > java version "1.8.0_40" > Java(TM) SE Runtime Environment (build 1.8.0_40-b26) > Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode) > Reporter: Rollin Crittendon > Assignee: Denes Arvay > Priority: Critical > > We are finding that around after an hour or so of heavy processing of Flume > data in an agent we are getting the following exception. This is after > processing about 5-7 k lines/second during that time. > The configuration of this agent is using a Kafka source, the one that comes > with 1.6.0. > It is also using a Memory channel, and a Thrift sink. > ======= > Exception in thread "SinkRunner-PollingRunner-DefaultSinkProcessor" > java.lang.Error: Maximum permit count exceeded > at > java.util.concurrent.Semaphore$Sync.tryReleaseShared(Semaphore.java:192) > at > java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1341) > at java.util.concurrent.Semaphore.release(Semaphore.java:609) > at > org.apache.flume.channel.MemoryChannel$MemoryTransaction.doCommit(MemoryChannel.java:147) > at > org.apache.flume.channel.BasicTransactionSemantics.commit(BasicTransactionSemantics.java:151) > at > org.apache.flume.sink.AbstractRpcSink.process(AbstractRpcSink.java:379) > at > org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68) > at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147) > at java.lang.Thread.run(Thread.java:745) > ======= > The above error is from standard error when running the Flume agent. The > effect is that the "SinkRunner-PollingRunner-DefaultSinkProcessor" thread > disappears from the agent, this can be seen on a JMX console. > For us, this means that the Flume agent needs to get restarted. It is an > error that is terminal in that instance of the Java process due to the thread > disappearing as a result. > It sounds like something in JDK 7+ got stricter?! -- This message was sent by Atlassian JIRA (v6.3.4#6332)