Hi Iwase,

Thanks for your response.

I agree, RYU does close down applications cleanly with the call to 
app_mgr.close() after a KeyboardInterrupt. I have hooks in my application to 
close() cleanly in this event.

However I was hoping that the console output (i.e. the Traceback..... 
KeyboardInterrupt) would not be displayed. Most applications on receipt of 
'ctrl-c' don't display the exception in the console window, they simply close 
down cleanly.

Something simple like this would make it a lot cleaner...

    try:
        hub.joinall(services)
    except KeyboardInterrupt:
        app_mgr.close()
    finally:
        app_mgr.close()

what do you think?

Thanks,
Alan.




-----Original Message-----
From: Iwase Yusuke [mailto:iwase.yusu...@gmail.com] 
Sent: Tuesday, July 19, 2016 6:32 AM
To: FORDYCE,ALAN (K-Scotland,ex1) <alan_ford...@keysight.com>
Cc: ryu-devel@lists.sourceforge.net
Subject: Re: [Ryu-devel] KeyboardInterrupt (ctrl-c) and RYU

Hi,

As you said, Ryu does not catch explicitly catch KeyboardInterrupt, but Ryu 
closes Ryu`s application at 'finally' statement, so we don't have to catch it 
explicitly, I think.
   https://github.com/osrg/ryu/blob/master/ryu/cmd/manager.py#L100-L101


FYI, you can test it as follows.

$ git diff
diff --git a/ryu/cmd/manager.py b/ryu/cmd/manager.py index b1ce8da..1c874f8 
100755
--- a/ryu/cmd/manager.py
+++ b/ryu/cmd/manager.py
@@ -98,6 +98,7 @@ def main(args=None, prog=None):
      try:
          hub.joinall(services)
      finally:
+        print('Close applications.')
          app_mgr.close()


$ ryu-manager
loading app ryu.controller.ofp_handler
instantiating app ryu.controller.ofp_handler of OFPHandler
^CClose applications.                # !!! Ryu catches exception here
Traceback (most recent call last):
...
...


Thanks,
Iwase

On 2016年07月15日 19:18, alan_ford...@keysight.com wrote:
> Hi All,
>
>
>
> Can anyone suggest a fix for this issue?
>
>
>
> Thanks,
>
> Alan.
>
>
>
> *From:* FORDYCE,ALAN (K-Scotland,ex1)
> *Sent:* Friday, June 24, 2016 7:42 AM
> *To:* 'ryu-devel@lists.sourceforge.net' 
> <ryu-devel@lists.sourceforge.net>
> *Subject:* KeyboardInterrupt (ctrl-c) and RYU
>
>
>
> Hi All,
>
>
>
> I am new to RYU having previously been using POX as my SDN Controller. 
> One of the first things that I’ve noticed when running RYU from my 
> linux command line is that when I quit RYU with Ctrl-C I get the 
> following exception reported back…
>
>
>
> [root@localhost bin]# /usr/local/bin/ryu-manager
>
> loading app ryu.controller.ofp_handler
>
> instantiating app ryu.controller.ofp_handler of OFPHandler
>
> ^CTraceback (most recent call last):
>
>   File "/usr/local/bin/ryu-manager", line 11, in <module>
>
>     sys.exit(main())
>
>   File "/usr/local/lib/python2.7/site-packages/ryu/cmd/manager.py", 
> line 99, in main
>
>     hub.joinall(services)
>
>   File "/usr/local/lib/python2.7/site-packages/ryu/lib/hub.py", line 
> 97, in joinall
>
>     t.wait()
>
>   File 
> "/usr/local/lib/python2.7/site-packages/eventlet/greenthread.py", line 
> 175, in wait
>
>     return self._exit_event.wait()
>
>   File "/usr/local/lib/python2.7/site-packages/eventlet/event.py", 
> line 121, in wait
>
>     return hubs.get_hub().switch()
>
>   File "/usr/local/lib/python2.7/site-packages/eventlet/hubs/hub.py", 
> line 294, in switch
>
>     return self.greenlet.switch()
>
>   File "/usr/local/lib/python2.7/site-packages/eventlet/hubs/hub.py", 
> line 346, in run
>
>     self.wait(sleep_time)
>
>   File "/usr/local/lib/python2.7/site-packages/eventlet/hubs/poll.py", 
> line 85, in wait
>
>     presult = self.do_poll(seconds)
>
>   File 
> "/usr/local/lib/python2.7/site-packages/eventlet/hubs/epolls.py", line 
> 62, in do_poll
>
>     return self.poll.poll(seconds)
>
> KeyboardInterrupt
>
> [root@localhost bin]#
>
>
>
> RYU doesn’t appear to have any handling for the KeyboardInterrupt signal. Is 
> this correct or is there a better way to shutdown RYU? I’d rather not see an 
> exception on program close.
>
>
>
> Regards,
>
> Alan.
>
>
>
> ----------------------------------------------------------------------
> -------- What NetFlow Analyzer can do for you? Monitors network 
> bandwidth and traffic patterns at an interface-level. Reveals which 
> users, apps, and protocols are consuming the most bandwidth. Provides 
> multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make 
> informed decisions using capacity planning 
> reports.http://sdm.link/zohodev2dev
>
>
>
> _______________________________________________
> Ryu-devel mailing list
> Ryu-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to