)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"451584c4f90a3fb137c4b438ff84e822acec6cf2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"be a problem for those who need to align the server keepalive with"},{"line_number":12,"context_line":"load balancer timeouts without modifying system keepalive settings."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To rememdy this we add new config options tcp_keepalive and"},{"line_number":15,"context_line":"tcp_keepidle which are disabled by default to remain backwards"},{"line_number":16,"context_line":"compatible."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUH%2F96PY%3D","line":14,"updated":"2014-02-01 15:57:40.000000000","message":"change \"rememdy\" to \"remedy\"","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"451584c4f90a3fb137c4b438ff84e822acec6cf2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"To rememdy this we add new config options tcp_keepalive and"},{"line_number":15,"context_line":"tcp_keepidle which are disabled by default to remain backwards"},{"line_number":16,"context_line":"compatible."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-bug: bug 1260406"},{"line_number":19,"context_line":"Co-authored-by: Hirofumi Ichihara \u003cichihara.hirofumi@lab.ntt.co.jp\u003e"},{"line_number":20,"context_line":"Change-Id: Ic53402c57e1ebe44cde4c18e5e15200dcbbcb04b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUH%2F96PM%3D","line":17,"updated":"2014-02-01 15:57:40.000000000","message":"add a DocImpact tag because of the new config options.","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"}],"etc/keystone.conf.sample":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"451584c4f90a3fb137c4b438ff84e822acec6cf2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# The port number which the public admin listens on"},{"line_number":16,"context_line":"# admin_port \u003d 35357"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Set this to True if you want to enable tcp_keepalive on wsgi sockets"},{"line_number":19,"context_line":"# tcp_keepalive \u003d False"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Sets the value of TCP_KEEPIDLE in seconds for each server socket. Not"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAUH%2F96Rk%3D","line":18,"updated":"2014-02-01 15:57:40.000000000","message":"what\u0027s a wsgi socket?","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"}],"keystone/common/config.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"81f61639be294d406768be6bfa102ef3c76b6ee8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                   default\u003d\u00279fe2ff9ee4384b1894a90878d3e92bab\u0027),"},{"line_number":51,"context_line":"        cfg.StrOpt(\u0027member_role_name\u0027, default\u003d\u0027_member_\u0027),"},{"line_number":52,"context_line":"        cfg.IntOpt(\u0027crypt_strength\u0027, default\u003d40000),"},{"line_number":53,"context_line":"        cfg.IntOpt(\u0027tcp_keepidle\u0027,"},{"line_number":54,"context_line":"                   default\u003d600,"},{"line_number":55,"context_line":"                   help\u003d\"Sets the value of TCP_KEEPIDLE in seconds for each \""},{"line_number":56,"context_line":"                        \"server socket. Not supported on OS X.\"),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8tYw%3D","line":53,"updated":"2013-12-22 04:17:38.000000000","message":"Great to see you use the help option.  That\u0027s very helpful.","commit_id":"0f87287b86b46236dd6e1707f269e62210711f9c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"451584c4f90a3fb137c4b438ff84e822acec6cf2","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        cfg.IntOpt(\u0027tcp_keepidle\u0027,"},{"line_number":54,"context_line":"                   default\u003d600,"},{"line_number":55,"context_line":"                   help\u003d\"Sets the value of TCP_KEEPIDLE in seconds for each \""},{"line_number":56,"context_line":"                        \"server socket. Not supported on OS X.\"),"},{"line_number":57,"context_line":"        cfg.BoolOpt(\u0027tcp_keepalive\u0027, default\u003dFalse,"},{"line_number":58,"context_line":"                    help\u003d(\"Set this to True if you want to enable \""},{"line_number":59,"context_line":"                          \"tcp_keepalive on wsgi sockets.\"))],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F96RY%3D","line":56,"updated":"2014-02-01 15:57:40.000000000","message":"the help text should mention that this only applies if tcp_keepalive is True.\n\nAlso, why have 2 options when a single one would work?","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b46804da03a53db1fe851bf4fab25805ae8801af","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                        \"True. Not supported on OS X.\"),"},{"line_number":56,"context_line":"        cfg.BoolOpt(\u0027tcp_keepalive\u0027, default\u003dFalse,"},{"line_number":57,"context_line":"                    help\u003d(\"Set this to True if you want to enable \""},{"line_number":58,"context_line":"                          \"tcp_keepalive on wsgi sockets.\"))],"},{"line_number":59,"context_line":"    \u0027identity\u0027: ["},{"line_number":60,"context_line":"        cfg.StrOpt(\u0027default_domain_id\u0027, default\u003d\u0027default\u0027),"},{"line_number":61,"context_line":"        cfg.BoolOpt(\u0027domain_specific_drivers_enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F9yhg%3D","line":58,"updated":"2014-02-03 22:26:00.000000000","message":"the help text here should match what\u0027s in the sample config file.\n\nSuggest change \"wsgi sockets\" to \"server sockets\" since that\u0027s what they\u0027re called at line 54.\n\nAlternatively, I\u0027d suggest \"listening sockets\".","commit_id":"140e3ff1e2e0a4700dff5890585c08e58a5d031e"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"61fac686bcb9cb9a1f0e8b0f7036959eff51c5e8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                        \"True. Not supported on OS X.\"),"},{"line_number":56,"context_line":"        cfg.BoolOpt(\u0027tcp_keepalive\u0027, default\u003dFalse,"},{"line_number":57,"context_line":"                    help\u003d(\"Set this to True if you want to enable \""},{"line_number":58,"context_line":"                          \"tcp_keepalive on wsgi sockets.\"))],"},{"line_number":59,"context_line":"    \u0027identity\u0027: ["},{"line_number":60,"context_line":"        cfg.StrOpt(\u0027default_domain_id\u0027, default\u003d\u0027default\u0027),"},{"line_number":61,"context_line":"        cfg.BoolOpt(\u0027domain_specific_drivers_enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F9qKc%3D","line":58,"in_reply_to":"AAAAUH%2F9yhg%3D","updated":"2014-02-05 09:50:37.000000000","message":"Brant, thanks for catching this, kinda sloppy on my part.","commit_id":"140e3ff1e2e0a4700dff5890585c08e58a5d031e"}],"keystone/common/environment/eventlet_server.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b1714c4c5973b2404dbc2da7f904b9c29a794a49","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        if self.keepalive:"},{"line_number":85,"context_line":"            _socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"            # This option isn\u0027t available in the OS X version of eventlet"},{"line_number":88,"context_line":"            if hasattr(socket, \u0027TCP_KEEPIDLE\u0027) and self.keepidle is not None:"},{"line_number":89,"context_line":"                _socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE,"},{"line_number":90,"context_line":"                                   self.keepidle)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BtzE%3D","line":87,"updated":"2014-01-22 21:07:35.000000000","message":"Can we link this to documentation in the commit message?","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e43505e7f8effe41c530f58814ae3dc30a8719b4","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        if self.keepalive:"},{"line_number":85,"context_line":"            _socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"            # This option isn\u0027t available in the OS X version of eventlet"},{"line_number":88,"context_line":"            if hasattr(socket, \u0027TCP_KEEPIDLE\u0027) and self.keepidle is not None:"},{"line_number":89,"context_line":"                _socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE,"},{"line_number":90,"context_line":"                                   self.keepidle)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F9isc%3D","line":87,"updated":"2014-02-06 06:29:52.000000000","message":"Comment from patch set 4 :\n\nCan we link this to documentation in the commit message?\n\nJust for clarity if it is available, if not, no big deal.","commit_id":"e71f615d9f15595cec163e4fe78c0cd3796ad397"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"9d6b38f6c98cfd7c38f8f22d0ef56f3a8dcc6c44","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        if self.keepalive:"},{"line_number":85,"context_line":"            _socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"            # This option isn\u0027t available in the OS X version of eventlet"},{"line_number":88,"context_line":"            if hasattr(socket, \u0027TCP_KEEPIDLE\u0027) and self.keepidle is not None:"},{"line_number":89,"context_line":"                _socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE,"},{"line_number":90,"context_line":"                                   self.keepidle)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F9e2Y%3D","line":87,"in_reply_to":"AAAAUH%2F9isc%3D","updated":"2014-02-06 16:13:05.000000000","message":"@ldbragst: if I understand you correctly, this is also mentioned in the config \u0027help\u0027 comment so when the docs are updated to reflect the new config (DocImpact already in the commit message) it should be included.","commit_id":"e71f615d9f15595cec163e4fe78c0cd3796ad397"}],"keystone/tests/test_wsgi.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"353c29a220b0b26c610cbec9c1ffa4b56da2d69f","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        self.host \u003d \u0027127.0.0.1\u0027"},{"line_number":264,"context_line":"        self.port \u003d \u00271234\u0027"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    @mock.patch(\u0027socket.getaddrinfo\u0027)"},{"line_number":267,"context_line":"    def test_keepalive_unset(self, mock_getaddrinfo):"},{"line_number":268,"context_line":"        mock_getaddrinfo.return_value \u003d [(1, 2, 3, 4, 5)]"},{"line_number":269,"context_line":"        mock_sock \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2BsOw%3D","line":266,"updated":"2014-01-23 07:04:12.000000000","message":"Very cool to see mock being used. I had not seen an example of this yet","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"451584c4f90a3fb137c4b438ff84e822acec6cf2","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        mock_sock \u003d mock.Mock()"},{"line_number":270,"context_line":"        mock_sock.setsockopt \u003d mock.Mock()"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        with mock.patch.object(eventlet, \u0027listen\u0027) as mock_listen:"},{"line_number":273,"context_line":"            mock_listen.return_value \u003d mock_sock"},{"line_number":274,"context_line":"            server \u003d environment.Server(mock.MagicMock(), host\u003dself.host,"},{"line_number":275,"context_line":"                                        port\u003dself.port)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F96RU%3D","line":272,"updated":"2014-02-01 15:57:40.000000000","message":"could also use the @mock.patch decorator for eventlet.listen for consistency?","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"353c29a220b0b26c610cbec9c1ffa4b56da2d69f","unresolved":false,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    @mock.patch(\u0027socket.getaddrinfo\u0027)"},{"line_number":295,"context_line":"    def test_keepalive_and_keepidle_set(self, mock_getaddrinfo):"},{"line_number":296,"context_line":"        mock_getaddrinfo.return_value \u003d [(1, 2, 3, 4, 5)]"},{"line_number":297,"context_line":"        mock_sock \u003d mock.Mock()"},{"line_number":298,"context_line":"        mock_sock.setsockopt \u003d mock.Mock()"},{"line_number":299,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2Br%2B8%3D","line":296,"updated":"2014-01-23 07:04:12.000000000","message":"why did you need to set a return_value in mock_getaddrinfo? And why did you pick the value [(1,2,3,4,5)]","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"353c29a220b0b26c610cbec9c1ffa4b56da2d69f","unresolved":false,"context_lines":[{"line_number":298,"context_line":"        mock_sock.setsockopt \u003d mock.Mock()"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        with mock.patch.object(eventlet, \u0027listen\u0027) as mock_listen:"},{"line_number":301,"context_line":"            mock_listen.return_value \u003d mock_sock"},{"line_number":302,"context_line":"            server \u003d environment.Server(mock.MagicMock(), host\u003dself.host,"},{"line_number":303,"context_line":"                                        port\u003dself.port, keepalive\u003dTrue,"},{"line_number":304,"context_line":"                                        keepidle\u003d1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2Br%2BQ%3D","line":301,"updated":"2014-01-23 07:04:12.000000000","message":"Here you insure that mock_listen will return mock_sock, correct?","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"451584c4f90a3fb137c4b438ff84e822acec6cf2","unresolved":false,"context_lines":[{"line_number":298,"context_line":"        mock_sock.setsockopt \u003d mock.Mock()"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        with mock.patch.object(eventlet, \u0027listen\u0027) as mock_listen:"},{"line_number":301,"context_line":"            mock_listen.return_value \u003d mock_sock"},{"line_number":302,"context_line":"            server \u003d environment.Server(mock.MagicMock(), host\u003dself.host,"},{"line_number":303,"context_line":"                                        port\u003dself.port, keepalive\u003dTrue,"},{"line_number":304,"context_line":"                                        keepidle\u003d1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F96P4%3D","line":301,"in_reply_to":"AAAAUH%2F%2Br%2BQ%3D","updated":"2014-02-01 15:57:40.000000000","message":"Brad - a call to mock_listen() or eventlet.listen() will return mock_sock now.","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"451584c4f90a3fb137c4b438ff84e822acec6cf2","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                                        keepidle\u003d1)"},{"line_number":305,"context_line":"            server.start()"},{"line_number":306,"context_line":"            self.assertEqual(mock_sock.setsockopt.call_count, 2)"},{"line_number":307,"context_line":"            # Test the last set of call args i.e. for the keepidle"},{"line_number":308,"context_line":"            mock_sock.setsockopt.assert_called_with(socket.IPPROTO_TCP,"},{"line_number":309,"context_line":"                                                    socket.TCP_KEEPIDLE,"},{"line_number":310,"context_line":"                                                    1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F96Po%3D","line":307,"updated":"2014-02-01 15:57:40.000000000","message":"the following code is obvious enough that the comment isn\u0027t needed.","commit_id":"85eb21bd1f44dd793301d1a742e72551c25614f8"}]}
