)]}'
{"oslo_db/sqlalchemy/session.py":[{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"52f898008146060aefbd95a7dd7a0f5c78f4ebb5","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def checkout(dbapi_connection, connection_record, connection_proxy):"},{"line_number":630,"context_line":"        pid \u003d os.getpid()"},{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_dca15baa","line":632,"updated":"2015-02-18 08:12:24.000000000","message":"Should we use LOG.error() here ?","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c460cc3dd4f44c64698525adc830cf6e8fc600da","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def checkout(dbapi_connection, connection_record, connection_proxy):"},{"line_number":630,"context_line":"        pid \u003d os.getpid()"},{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_1b8cb47f","line":632,"in_reply_to":"da86d52c_42448146","updated":"2015-02-18 22:32:26.000000000","message":"Regardless of any other direction about how to style log messages at different levels, the important characteristic about this message is that the operator of OpenStack cannot fix the problem being reported. That means it is a debug level message. All of those other statements about info and debug are intended to guide the content of the message and where to put them and how many to have. In this case, we have one message to be emitted when we detect the error condition, so that\u0027s easy to deal with.","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"d4646167f3e720863ddb1f70c2af8b6552334e8c","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def checkout(dbapi_connection, connection_record, connection_proxy):"},{"line_number":630,"context_line":"        pid \u003d os.getpid()"},{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_2045c5b3","line":632,"in_reply_to":"da86d52c_42448146","updated":"2015-02-18 22:16:12.000000000","message":"So I think from the IRC conversation. \n\nLOG.debug(\"BUG: .... \")","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"ed9866754ab0e281b487ee8d6a0a7e932da78c26","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def checkout(dbapi_connection, connection_record, connection_proxy):"},{"line_number":630,"context_line":"        pid \u003d os.getpid()"},{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_c695ee32","line":632,"in_reply_to":"da86d52c_83d3e836","updated":"2015-02-18 17:55:24.000000000","message":"Here\u0027s our logging spec description of the warning level:\n\n- Warning: Something is not right, should get looked into during the\n  next work week. Administrators should be working through eliminating\n  warnings as part of normal work.\n\nThe thing is, administrators can\u0027t eliminate this warning because they haven\u0027t done anything wrong.  I think part of the goal behind that spec is to stop treating logs as developer tools and see them as operator tools.  We have other ways to communicate problems to developers (in this case we should leave the bug open against Cinder with details of what they\u0027re doing wrong).\n\nAnd debug:\n\n- Debug: developer logging level, only enable if you are interested in\n  reading through a ton of additional information about what is going on.\n\nSo that\u0027s the place to log developer communication now.\n\nhttp://git.openstack.org/cgit/openstack/openstack-specs/tree/specs/log-guidelines.rst\n\nIt\u0027s a significant shift in focus for our logging, but it\u0027s one we desperately need.  Logging has been #2 behind live upgrades in the operator pain points for at least the past two summits.","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"0287690f8f001f5db96134b0ef7aed028842e64a","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def checkout(dbapi_connection, connection_record, connection_proxy):"},{"line_number":630,"context_line":"        pid \u003d os.getpid()"},{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_83d3e836","line":632,"in_reply_to":"da86d52c_92109901","updated":"2015-02-18 17:34:12.000000000","message":"do you like how I split the difference between you two ? :)\n\ni don\u0027t have a strong opinion on this.   i was going to make this whole thing be an error raise until I realized i could just invalidate the connection here.   it bothers me though b.c. it makes it look like cinder\u0027s bug is really sqlalchemy\u0027s.\n\ninfo() is annoying b.c. it makes it look like this isn\u0027t a developer mistake.  aren\u0027t warnings intended to flag developer errors ?    it seems like here we have two different roles for logging.","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"87cf8571971043b64a05cb48148bb94218eebcd4","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def checkout(dbapi_connection, connection_record, connection_proxy):"},{"line_number":630,"context_line":"        pid \u003d os.getpid()"},{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_efdabee7","line":632,"in_reply_to":"da86d52c_b70e663b","updated":"2015-02-18 21:03:31.000000000","message":"OK, like I said I don\u0027t care either way, but i want to get it right.  And this still doesn\u0027t seem like that spec is being read correctly:\n\n\"Info: normal status messages showing measureable units of positive  work passing through under normal functioning of the system.\"\n\nif we want to warn that the code is doing something that ideally should be fixed, is this \"normal functioning of the system\"?","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"3ff750901f3a34ddb1b7066dc7de1af9c9f99251","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def checkout(dbapi_connection, connection_record, connection_proxy):"},{"line_number":630,"context_line":"        pid \u003d os.getpid()"},{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_e63cb2e3","line":632,"in_reply_to":"da86d52c_c695ee32","updated":"2015-02-18 18:04:26.000000000","message":"based on that spec, and your particular reading of \"Administrators working to eliminating warnings\", it means there is absolutely no log level appropriate for this message.  It is definitely not INFO or DEBUG because this is not a \"positive unit of work\".  It is a negative event (unless we decide it\u0027s not, which we haven\u0027t decided yet). \n\nIf we take very literally the phrase \"Something is not right, should get looked into during the  next work week. Administrators should be working through eliminating  warnings as part of normal work.\" to mean that the Administrator is the person to *fix* the issue themselves, then it doesn\u0027t work.  But in the real world, a warning would more than likely refer to an issue that the Administrator cannot fix single-handedly; the Administrator would be contacting the development team that there\u0027s a bug in their software, who would then fix the issue.\n\nThat is if we simply take the verb \"eliminating\" to include \"Reporting bugs to developers\", not just \"tweaking flags and switches locally\", then there is again a place for this message to be logged.\n\nUnless, we decide that this is the normal way in which engines should be shared over processes; after all, the net effect here is virtually the same towards if they had just called dispose() on the engine when the child fork began.  then it would be relegated probably to DEBUG.","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b509ad4b0d438b26c9fe1bd0f9bee6c6835a1d98","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def checkout(dbapi_connection, connection_record, connection_proxy):"},{"line_number":630,"context_line":"        pid \u003d os.getpid()"},{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_92109901","line":632,"in_reply_to":"da86d52c_dca15baa","updated":"2015-02-18 16:25:56.000000000","message":"Actually, I think this should be a debug statement.  There\u0027s nothing a user can do to fix this, it needs to be addressed by the developers on the consuming project.  We could leave this as a warning message in an attempt to get users to hassle the developers to fix the problem, but we did that in the past and it went...not well. :-)\n\nI would be okay with info too, but since this is only of interest to a developer looking to fix the problem I\u0027m not sure it even needs to be at that level.","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"5a49d13c6c539a0362e4637580eab5dea5a1150f","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def checkout(dbapi_connection, connection_record, connection_proxy):"},{"line_number":630,"context_line":"        pid \u003d os.getpid()"},{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_b70e663b","line":632,"in_reply_to":"da86d52c_e63cb2e3","updated":"2015-02-18 19:27:16.000000000","message":"The positive unit of work is only intended to apply to positive logging.  It doesn\u0027t preclude logging negative events.  In fact it pretty much requires you to log problems that would prevent the unit of work from completing.\n\nAnd I still don\u0027t think it\u0027s appropriate to ever involve the administrator in this sort of issue.  This isn\u0027t a bug they\u0027ve exposed with their particular configuration, it\u0027s a universal problem with the service that has absolutely nothing to do with them.  Furthermore, after this change there isn\u0027t actually a problem anymore (unless I misunderstand), so there is an argument to be made that this doesn\u0027t need to be logged at all.  It would be nice to leave a debug message so it\u0027s easy for developers to figure out whether they\u0027re doing something bad, but since we\u0027ll dtrt now it isn\u0027t that big a deal.\n\nI guess my main issue here is the idea that communicating with developers through the operator is an acceptable common practice.  We have multiple lines of communication available that don\u0027t require annoying all our users with unnecessary log messages.","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"cee5c7dd2c388a80a3d76ff6b3c13e2e13790b98","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def checkout(dbapi_connection, connection_record, connection_proxy):"},{"line_number":630,"context_line":"        pid \u003d os.getpid()"},{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_42448146","line":632,"in_reply_to":"da86d52c_efdabee7","updated":"2015-02-18 21:13:16.000000000","message":"we also have deprecation warnings in things too, which refer to deprecated APIs.  these use warnings.warn().  Is that a different class of warning?  should we use that?","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c460cc3dd4f44c64698525adc830cf6e8fc600da","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"},{"line_number":636,"context_line":"            connection_record.connection \u003d connection_proxy.connection \u003d None"},{"line_number":637,"context_line":"            raise exc.DisconnectionError("}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_1b5114d9","line":634,"updated":"2015-02-18 22:32:26.000000000","message":"I\u0027m not sure what this message means. Can we make it more explicit about the error situation? Maybe something like:\n\n Parent process forked with an open database connection which is being\n reused. This may cause race conditions.","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"71defb2303c770b1ba108b2bd304a460dfe6ae13","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        if connection_record.info[\u0027pid\u0027] !\u003d pid:"},{"line_number":632,"context_line":"            LOG.warning(_LW("},{"line_number":633,"context_line":"                \u0027Invalidating connection detected as shared to new \u0027"},{"line_number":634,"context_line":"                \u0027process %(newproc)s, originated in %(orig)s.\u0027),"},{"line_number":635,"context_line":"                {\"newproc\": pid, \"orig\": connection_record.info[\u0027pid\u0027]})"},{"line_number":636,"context_line":"            connection_record.connection \u003d connection_proxy.connection \u003d None"},{"line_number":637,"context_line":"            raise exc.DisconnectionError("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_1f3a20cd","line":634,"in_reply_to":"da86d52c_1b5114d9","updated":"2015-03-12 16:46:42.000000000","message":"Done   (debug mode plus the text we discussed on IRC)","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"}],"oslo_db/tests/sqlalchemy/test_sqlalchemy.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"2b979d7e9c31fec789bfab8679acd4e58201ba64","unresolved":false,"context_lines":[{"line_number":655,"context_line":"            dbapi_id \u003d id(conn.connection.connection)"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        def get_pid():"},{"line_number":658,"context_line":"            return 5"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        with mock.patch(\"oslo_db.sqlalchemy.session.os.getpid\", get_pid):"},{"line_number":661,"context_line":"            with self.engine.connect() as conn:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_863a2dcb","line":658,"updated":"2015-02-18 09:25:21.000000000","message":"heh,  I wonder if there might be an edge case when we run the unit tests in e.g. a docker container and can possibly get the very same pid :P anyway, this probably must not be an issue for now","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b509ad4b0d438b26c9fe1bd0f9bee6c6835a1d98","unresolved":false,"context_lines":[{"line_number":655,"context_line":"            dbapi_id \u003d id(conn.connection.connection)"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        def get_pid():"},{"line_number":658,"context_line":"            return 5"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        with mock.patch(\"oslo_db.sqlalchemy.session.os.getpid\", get_pid):"},{"line_number":661,"context_line":"            with self.engine.connect() as conn:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_f2ed55b9","line":658,"in_reply_to":"da86d52c_863a2dcb","updated":"2015-02-18 16:25:56.000000000","message":"It\u0027s a valid point though, and it looks like it\u0027s pretty easy to make a Mock return multiple values, so maybe we should just go ahead and mock both calls: http://stackoverflow.com/questions/2525233/how-can-i-make-mock-0-6-return-a-sequence-of-values?rq\u003d1\n\nWe\u0027re using mock \u003e\u003d 1.0 so the side_effect method should work fine.","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"0287690f8f001f5db96134b0ef7aed028842e64a","unresolved":false,"context_lines":[{"line_number":655,"context_line":"            dbapi_id \u003d id(conn.connection.connection)"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        def get_pid():"},{"line_number":658,"context_line":"            return 5"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        with mock.patch(\"oslo_db.sqlalchemy.session.os.getpid\", get_pid):"},{"line_number":661,"context_line":"            with self.engine.connect() as conn:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_e3e824b5","line":658,"in_reply_to":"da86d52c_f2ed55b9","updated":"2015-02-18 17:34:12.000000000","message":"it can be any iterable in fact  https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.side_effect","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"52f898008146060aefbd95a7dd7a0f5c78f4ebb5","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        def get_pid():"},{"line_number":658,"context_line":"            return 5"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        with mock.patch(\"oslo_db.sqlalchemy.session.os.getpid\", get_pid):"},{"line_number":661,"context_line":"            with self.engine.connect() as conn:"},{"line_number":662,"context_line":"                new_dbapi_id \u003d id(conn.connection.connection)"},{"line_number":663,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_3088db70","line":660,"updated":"2015-02-18 08:12:24.000000000","message":"nit: you can make this a bit shorter:\n\n with mock.patch(\"os.getpid\", get_pid):\n     ...","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"0287690f8f001f5db96134b0ef7aed028842e64a","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        def get_pid():"},{"line_number":658,"context_line":"            return 5"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        with mock.patch(\"oslo_db.sqlalchemy.session.os.getpid\", get_pid):"},{"line_number":661,"context_line":"            with self.engine.connect() as conn:"},{"line_number":662,"context_line":"                new_dbapi_id \u003d id(conn.connection.connection)"},{"line_number":663,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_4372d04a","line":660,"in_reply_to":"da86d52c_3088db70","updated":"2015-02-18 17:34:12.000000000","message":"oh i guess that works too, OK.","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"71defb2303c770b1ba108b2bd304a460dfe6ae13","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        def get_pid():"},{"line_number":658,"context_line":"            return 5"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        with mock.patch(\"oslo_db.sqlalchemy.session.os.getpid\", get_pid):"},{"line_number":661,"context_line":"            with self.engine.connect() as conn:"},{"line_number":662,"context_line":"                new_dbapi_id \u003d id(conn.connection.connection)"},{"line_number":663,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_9f74509d","line":660,"in_reply_to":"da86d52c_4372d04a","updated":"2015-03-12 16:46:42.000000000","message":"Done","commit_id":"deaf662ce32310b79d3e363e300467fde79ac55b"}]}
