[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-893?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12921286#action_12921286
 ] 

Thijs Terlouw commented on ZOOKEEPER-893:
-----------------------------------------

I'll try to write a test case, but not exactly sure yet how to integrate. Need 
to look at some example unit tests first :)

> ZooKeeper high cpu usage when invalid requests
> ----------------------------------------------
>
>                 Key: ZOOKEEPER-893
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-893
>             Project: Zookeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.3.1
>         Environment: Linux 2.6.16
> 4x Intel(R) Xeon(R) CPU X3320  @ 2.50GHz
> java version "1.6.0_17"
> Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
> Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode)
>            Reporter: Thijs Terlouw
>            Assignee: Thijs Terlouw
>            Priority: Critical
>             Fix For: 3.3.2, 3.4.0
>
>         Attachments: ZOOKEEPER-893.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> When ZooKeeper receives certain illegally formed messages on the internal 
> communication port (:4181 by default), it's possible for ZooKeeper to enter 
> an infinite loop which causes 100% cpu usage. It's related to ZOOKEEPER-427, 
> but that patch does not resolve all issues.
> from: src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java 
> the two affected parts:
> ===========
> int length = msgLength.getInt();                                              
>           
> if(length <= 0) {                                                             
>           
>     throw new IOException("Invalid packet length:" + length);                 
>           
> } 
> ===========
> ===========
> while (message.hasRemaining()) {                                              
>       
>     temp_numbytes = channel.read(message);                                    
>       
>     if(temp_numbytes < 0) {                                                   
>       
>         throw new IOException("Channel eof before end");                      
>       
>     }                                                                         
>       
>     numbytes += temp_numbytes;                                                
>       
> } 
> ===========
> how to replicate this bug:
> perform an nmap portscan against your zookeeper server: "nmap -sV -n 
> your.ip.here -p4181"
> wait for a while untill you see some messages in the logfile and then you 
> will see 100% cpu usage. It does not recover from this situation. With my 
> patch, it does not occur anymore

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to