)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"21bff7dba009c98974a231e5969e57d38f50a20e","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            self._live_migration_executor \u003d futurist.GreenThreadPoolExecutor("},{"line_number":525,"context_line":"                max_workers\u003dCONF.max_concurrent_live_migrations)"},{"line_number":526,"context_line":"        else:"},{"line_number":527,"context_line":"            # Starting in python 3.5, this is technically bounded, but it\u0027s"},{"line_number":528,"context_line":"            # ncpu * 5 which is probably much higher than anyone would sanely"},{"line_number":529,"context_line":"            # use for concurrently running live migrations."},{"line_number":530,"context_line":"            self._live_migration_executor \u003d futurist.GreenThreadPoolExecutor()"},{"line_number":531,"context_line":"        # This is a dict, keyed by instance uuid, to a two-item tuple of"},{"line_number":532,"context_line":"        # migration object and Future for the queued live migration."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d27e6f6b","line":529,"range":{"start_line":527,"start_character":12,"end_line":529,"end_character":59},"updated":"2018-12-12 21:26:19.000000000","message":"I\u0027m not sure if this still applies when using futurist. Looks like it\u0027s not:\n\nhttps://docs.python.org/3.5/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor\n\nhttps://github.com/openstack/futurist/blob/master/futurist/_futures.py#L334\n\nThe latter just defaults to 1000 max workers. 1000 is obviously high enough for us, since even with py35 if you had 128 cores you\u0027d have 640 max workers. But we should remove the comment since it doesn\u0027t apply to futurist.","commit_id":"307aac508e5e0c2eea14941e781a4ad8f2b3bfa3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de091adc2dced9ce1971d14029db9149e6d4b04d","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            self._live_migration_executor \u003d futurist.GreenThreadPoolExecutor("},{"line_number":525,"context_line":"                max_workers\u003dCONF.max_concurrent_live_migrations)"},{"line_number":526,"context_line":"        else:"},{"line_number":527,"context_line":"            # Starting in python 3.5, this is technically bounded, but it\u0027s"},{"line_number":528,"context_line":"            # ncpu * 5 which is probably much higher than anyone would sanely"},{"line_number":529,"context_line":"            # use for concurrently running live migrations."},{"line_number":530,"context_line":"            self._live_migration_executor \u003d futurist.GreenThreadPoolExecutor()"},{"line_number":531,"context_line":"        # This is a dict, keyed by instance uuid, to a two-item tuple of"},{"line_number":532,"context_line":"        # migration object and Future for the queued live migration."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_7fecfcbc","line":529,"range":{"start_line":527,"start_character":12,"end_line":529,"end_character":59},"in_reply_to":"3f79a3b5_78341d49","updated":"2018-12-13 09:30:13.000000000","message":"thanks.","commit_id":"307aac508e5e0c2eea14941e781a4ad8f2b3bfa3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6e2a665e0539775c2cf01cdf148f6b0ab3626dcb","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            self._live_migration_executor \u003d futurist.GreenThreadPoolExecutor("},{"line_number":525,"context_line":"                max_workers\u003dCONF.max_concurrent_live_migrations)"},{"line_number":526,"context_line":"        else:"},{"line_number":527,"context_line":"            # Starting in python 3.5, this is technically bounded, but it\u0027s"},{"line_number":528,"context_line":"            # ncpu * 5 which is probably much higher than anyone would sanely"},{"line_number":529,"context_line":"            # use for concurrently running live migrations."},{"line_number":530,"context_line":"            self._live_migration_executor \u003d futurist.GreenThreadPoolExecutor()"},{"line_number":531,"context_line":"        # This is a dict, keyed by instance uuid, to a two-item tuple of"},{"line_number":532,"context_line":"        # migration object and Future for the queued live migration."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_78341d49","line":529,"range":{"start_line":527,"start_character":12,"end_line":529,"end_character":59},"in_reply_to":"3f79a3b5_d27e6f6b","updated":"2018-12-12 22:40:35.000000000","message":"Done","commit_id":"307aac508e5e0c2eea14941e781a4ad8f2b3bfa3"}],"requirements.txt":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"21bff7dba009c98974a231e5969e57d38f50a20e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":70,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":71,"context_line":"zVMCloudConnector\u003e\u003d1.1.1;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"},{"line_number":72,"context_line":"futures\u003e\u003d3.0.0;python_version\u003d\u003d\u00272.7\u0027 or python_version\u003d\u003d\u00272.6\u0027 # PSF"}],"source_content_type":"text/plain","patch_set":1,"id":"3f79a3b5_b2de536f","side":"PARENT","line":72,"updated":"2018-12-12 21:26:19.000000000","message":"You can also remove futures from lower-constraints:\n\nhttps://github.com/openstack/nova/blob/master/lower-constraints.txt#L36","commit_id":"ae3064b7a820ea02f7fc8a1aa4a41f35a06534f1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6e2a665e0539775c2cf01cdf148f6b0ab3626dcb","unresolved":false,"context_lines":[{"line_number":69,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":70,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":71,"context_line":"zVMCloudConnector\u003e\u003d1.1.1;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"},{"line_number":72,"context_line":"futures\u003e\u003d3.0.0;python_version\u003d\u003d\u00272.7\u0027 or python_version\u003d\u003d\u00272.6\u0027 # PSF"}],"source_content_type":"text/plain","patch_set":1,"id":"3f79a3b5_b8039564","side":"PARENT","line":72,"in_reply_to":"3f79a3b5_b2de536f","updated":"2018-12-12 22:40:35.000000000","message":"Done","commit_id":"ae3064b7a820ea02f7fc8a1aa4a41f35a06534f1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"21bff7dba009c98974a231e5969e57d38f50a20e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":70,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":71,"context_line":"zVMCloudConnector\u003e\u003d1.1.1;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"},{"line_number":72,"context_line":"futurist\u003e\u003d1.6.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3f79a3b5_528a5f66","line":72,"range":{"start_line":72,"start_character":12,"end_line":72,"end_character":13},"updated":"2018-12-12 21:26:19.000000000","message":"Seems we should use 1.8.0 to match what we\u0027re gating against:\n\nhttps://github.com/openstack/requirements/blob/master/upper-constraints.txt#L515\n\nI guess you\u0027re trying to match lower-constraints?\n\nhttps://github.com/openstack/nova/blob/master/lower-constraints.txt#L35","commit_id":"307aac508e5e0c2eea14941e781a4ad8f2b3bfa3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f03d413f0158120ddab8fb158fc1bf5a9c0ace2","unresolved":false,"context_lines":[{"line_number":69,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":70,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":71,"context_line":"zVMCloudConnector\u003e\u003d1.1.1;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"},{"line_number":72,"context_line":"futurist\u003e\u003d1.6.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3f79a3b5_4ef07061","line":72,"range":{"start_line":72,"start_character":12,"end_line":72,"end_character":13},"in_reply_to":"3f79a3b5_42bcc7d4","updated":"2018-12-13 13:04:00.000000000","message":"1.6.0 was correct, assuming there\u0027s no reason to use 1.8.0? Upper constraints is exactly that - the maximum we can install. This is global and can\u0027t be exceeded by projects. Projects _can_ provide their own minimum version but not their own maximum version. That\u0027s my understanding of it, anyway.\n\nIf we\u0027re going to use 1.8.0, which we can (but don\u0027t seem to need), we should bump our own lower-constraints.txt.","commit_id":"307aac508e5e0c2eea14941e781a4ad8f2b3bfa3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f6eba70e9ba794f465df3c036e17f340bf23f6e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":70,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":71,"context_line":"zVMCloudConnector\u003e\u003d1.1.1;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"},{"line_number":72,"context_line":"futurist\u003e\u003d1.6.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3f79a3b5_6acd15b8","line":72,"range":{"start_line":72,"start_character":12,"end_line":72,"end_character":13},"in_reply_to":"3f79a3b5_4ef07061","updated":"2018-12-13 14:42:37.000000000","message":"Yes lower-constraints should match requirements.txt I guess, I forgot about that. There is no more global-requirements, it was stripped when lower-constraints happened.\n\nI opted to use 1.8.0 since that\u0027s what we\u0027re gating against. I don\u0027t know when futurist was added to lower-constraints but it was probably awhile ago (or when the file was initially created) which may mean it was just what was in global-requirements at that time.","commit_id":"307aac508e5e0c2eea14941e781a4ad8f2b3bfa3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6e2a665e0539775c2cf01cdf148f6b0ab3626dcb","unresolved":false,"context_lines":[{"line_number":69,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":70,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":71,"context_line":"zVMCloudConnector\u003e\u003d1.1.1;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"},{"line_number":72,"context_line":"futurist\u003e\u003d1.6.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3f79a3b5_f8090d86","line":72,"range":{"start_line":72,"start_character":12,"end_line":72,"end_character":13},"in_reply_to":"3f79a3b5_528a5f66","updated":"2018-12-12 22:40:35.000000000","message":"Done","commit_id":"307aac508e5e0c2eea14941e781a4ad8f2b3bfa3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4710d2026b88aeab37d520a662540469330520e0","unresolved":false,"context_lines":[{"line_number":69,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":70,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":71,"context_line":"zVMCloudConnector\u003e\u003d1.1.1;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"},{"line_number":72,"context_line":"futurist\u003e\u003d1.6.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3f79a3b5_ff9b2c75","line":72,"range":{"start_line":72,"start_character":12,"end_line":72,"end_character":13},"in_reply_to":"3f79a3b5_528a5f66","updated":"2018-12-13 08:54:01.000000000","message":"I\u0027m not 100% understands openstack requirements version handling. But I tried to follow basic logic here:\n\n* I needed futurist in nova and I had no special version needs on it for this change.\n* the global-requirements does not constraint the version of futurist\n* the global upper-constraints says futurist\u003d\u003d\u003d1.8.0\n* the nova\u0027s lower-constraints says futurist\u003d\u003d1.6.0\n\nSo adding futurist\u003e\u003d1.6.0 to nova\u0027s requirements fulfilled all the preexisting constraints on this module and the tests passed.\n\nAs an alternative we can say futurist\u003e\u003d1.8.0 in nova\u0027s  requirements as you proposed but then our lower constraints are contradicting with our requirements, as the gate commented in on your PS2 http://logs.openstack.org/40/624740/2/check/requirements-check/04d2cff/job-output.txt.gz I guess if we bump lower-constraints as well then this error goes away. However I don\u0027t know why we need to require 1.8.0 as nothing in nova really depends on that high version of futurist.","commit_id":"307aac508e5e0c2eea14941e781a4ad8f2b3bfa3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de091adc2dced9ce1971d14029db9149e6d4b04d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":70,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":71,"context_line":"zVMCloudConnector\u003e\u003d1.1.1;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"},{"line_number":72,"context_line":"futurist\u003e\u003d1.6.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3f79a3b5_42bcc7d4","line":72,"range":{"start_line":72,"start_character":12,"end_line":72,"end_character":13},"in_reply_to":"3f79a3b5_ff9b2c75","updated":"2018-12-13 09:30:13.000000000","message":"I\u0027ve read [1] and I think having 1.6.0 in lower is more in line with the intention to express the minimum needed versions. If we put 1.8.0 to the lower constraints because we are mostly gating with 1.8.0 then In general we are forcing ourselves to reflect all the changes form the upper-constraints in our lower-constraints file based on the same gating reason. This way lower-constraints file would be a copy of the upper-constraints file which would make the lower constraints file meaningless.\n\n[1] http://lists.openstack.org/pipermail/openstack-dev/2018-March/128352.html","commit_id":"307aac508e5e0c2eea14941e781a4ad8f2b3bfa3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cbafaf738f1dc92a5a8fd96fd8672942b6d2eba6","unresolved":false,"context_lines":[{"line_number":69,"context_line":"taskflow\u003e\u003d2.16.0 # Apache-2.0"},{"line_number":70,"context_line":"python-dateutil\u003e\u003d2.5.3 # BSD"},{"line_number":71,"context_line":"zVMCloudConnector\u003e\u003d1.1.1;sys_platform!\u003d\u0027win32\u0027  # Apache 2.0 License"},{"line_number":72,"context_line":"futurist\u003e\u003d1.8.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":2,"id":"3f79a3b5_4c7643d9","line":72,"range":{"start_line":72,"start_character":0,"end_line":72,"end_character":28},"updated":"2018-12-13 03:03:27.000000000","message":"Package \u0027futurist\u0027 is constrained to 1.6.0 which does not match the minimum version specifier 1.8.0 in requirements.txt\n\nso maybe change this to 1.6.0?","commit_id":"5d3b804a5869992bfd9474fbe5104d6979ba619f"}]}
