hi,

(2013/02/21 16:17), YAMAMOTO Takashi wrote:
> hi,
>
>> Empty send_q.get() is blocking send thread.
>> Because of this issue, datapath state never transit to DEAD.
>
> oops, sorry.
> probably it's better to just leave it for gc?
>
I think so, too.
How about following?


 From 08126332a9d3d59af8e441ecfe78482a90515771 Mon Sep 17 00:00:00 2001
From: YAMADA Hideki <[email protected]>
Date: Thu, 21 Feb 2013 16:33:47 +0900
Subject: [PATCH] controller: fix that sender thread is never terminated

Empty q.get() is blocking send thread.
Because of this issue, datapath state never transit to DEAD.

This fixes commit 83e3709a0d70f889e794d1c5f70c1c1eb73075f7.
   - controller: fix send_q draining
       
https://github.com/osrg/ryu/commit/83e3709a0d70f889e794d1c5f70c1c1eb73075f7

Signed-off-by: YAMADA Hideki <[email protected]>
---
  ryu/controller/controller.py |    3 ---
  1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/ryu/controller/controller.py b/ryu/controller/controller.py
index 9dc745a..841b388 100644
--- a/ryu/controller/controller.py
+++ b/ryu/controller/controller.py
@@ -196,10 +196,7 @@ class Datapath(object):
                  buf = self.send_q.get()
                  self.socket.sendall(buf)
          finally:
-            q = self.send_q
              self.send_q = None
-            while q.get():
-                pass

      def send(self, buf):
          if self.send_q:
-- 
1.7.1


> YAMAMOTO Takashi
>
>>
>> This fixes commit 83e3709a0d70f889e794d1c5f70c1c1eb73075f7.
>>    - controller: fix send_q draining
>>      
>> https://github.com/osrg/ryu/commit/83e3709a0d70f889e794d1c5f70c1c1eb73075f7
>>
>> Signed-off-by: YAMADA Hideki <[email protected]>
>> ---
>>   ryu/controller/controller.py |    7 ++++++-
>>   1 files changed, 6 insertions(+), 1 deletions(-)
>>
>> diff --git a/ryu/controller/controller.py b/ryu/controller/controller.py
>> index 9dc745a..59286ff 100644
>> --- a/ryu/controller/controller.py
>> +++ b/ryu/controller/controller.py
>> @@ -24,6 +24,7 @@ import greenlet
>>   import ssl
>>   from gevent.server import StreamServer
>>   from gevent.queue import Queue
>> +from Queue import Empty
>>
>>   import ryu.base.app_manager
>>
>> @@ -198,7 +199,11 @@ class Datapath(object):
>>           finally:
>>               q = self.send_q
>>               self.send_q = None
>> -            while q.get():
>> +            try:
>> +                while q.get_nowait():
>> +                    pass
>> +            except Empty:
>> +                #LOG.debug('DP(id=%s): send_q was cleared', self.id)
>>                   pass
>>
>>       def send(self, buf):
>> --
>> 1.7.1
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Everyone hates slow websites. So do we.
>> Make your web apps faster with AppDynamics
>> Download AppDynamics Lite for free today:
>> http://p.sf.net/sfu/appdyn_d2d_feb
>> _______________________________________________
>> Ryu-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to