)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"1c87dab20de75e819cfe78d04abe284185c613e4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable to configure object-expirer in object-server.conf"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To prepare for object-expirer\u0027s general task queue feature [1],"},{"line_number":10,"context_line":"this patch enables to configure object-expirer in object-server.conf."},{"line_number":11,"context_line":"Object-expirer.conf can be used in the same manner as before."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"If both of object-server.conf with \"object-expirer\" section and"},{"line_number":14,"context_line":"object-expirer.conf, only object-server.conf is used."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_60e1a99b","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":61},"updated":"2018-09-12 16:36:24.000000000","message":"I like this idea in general rather than saying \"this is part of task queue staff\".\n\nThen, potentially this causes some operational changes in the future for swift operators so that I like to add some docs how to make the configuration if they are moving to the new shceme using object-server.conf section.","commit_id":"7e7613ff9b337f1c6bb31c9be98da4a24ceb302e"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"7c1171d437840fb9363f7a4b807b53e1283d9c36","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable to configure object-expirer in object-server.conf"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To prepare for object-expirer\u0027s general task queue feature [1],"},{"line_number":10,"context_line":"this patch enables to configure object-expirer in object-server.conf."},{"line_number":11,"context_line":"Object-expirer.conf can be used in the same manner as before."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"If both of object-server.conf with \"object-expirer\" section and"},{"line_number":14,"context_line":"object-expirer.conf, only object-server.conf is used."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_8148522e","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":61},"in_reply_to":"3f79a3b5_60e1a99b","updated":"2018-09-14 23:57:52.000000000","message":"Done","commit_id":"7e7613ff9b337f1c6bb31c9be98da4a24ceb302e"}],"doc/manpages/swift-object-expirer.1":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"3e9860f392936575cc2d76a47bdac6eabb3477ec","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":".SH \"SEE ALSO\""},{"line_number":73,"context_line":".BR object-expirer.conf(5)"},{"line_number":74,"context_line":".BR object-server.conf(5)"},{"line_number":75,"context_line":""}],"source_content_type":"text/troff","patch_set":4,"id":"3f79a3b5_73842c5e","line":74,"updated":"2018-10-08 06:29:10.000000000","message":"If the object-server.conf will be the default if both defined, I\u0027d argue that the object-server.conf(5) here should come before the object-expirer.conf.","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":".SH \"SEE ALSO\""},{"line_number":73,"context_line":".BR object-expirer.conf(5)"},{"line_number":74,"context_line":".BR object-server.conf(5)"},{"line_number":75,"context_line":""}],"source_content_type":"text/troff","patch_set":4,"id":"3f79a3b5_d6eff5f7","line":74,"in_reply_to":"3f79a3b5_73842c5e","updated":"2018-10-10 09:51:33.000000000","message":"Done","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"}],"doc/source/deployment_guide.rst":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"3e9860f392936575cc2d76a47bdac6eabb3477ec","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"                                                              creating accounts."},{"line_number":1021,"context_line":"concurrency                   1                               Level of concurrency to use to do the work,"},{"line_number":1022,"context_line":"                                                              this value must be set to at least 1"},{"line_number":1023,"context_line":"expiring_objects_account_name expiring_objects                name for legacy expirer task queue"},{"line_number":1024,"context_line":"dequeue_from_legacy_queue     False                           This service will look for jobs on the legacy expirer task queue."},{"line_number":1025,"context_line":"processes                     0                               How many parts to divide the legacy work into,"},{"line_number":1026,"context_line":"                                                              one part per process that will be doing the work."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_13793881","line":1023,"updated":"2018-10-08 06:29:10.000000000","message":"Capitalise the \u0027N\u0027 in name:\n  Name for the legecy expirer task queue","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"                                                              creating accounts."},{"line_number":1021,"context_line":"concurrency                   1                               Level of concurrency to use to do the work,"},{"line_number":1022,"context_line":"                                                              this value must be set to at least 1"},{"line_number":1023,"context_line":"expiring_objects_account_name expiring_objects                name for legacy expirer task queue"},{"line_number":1024,"context_line":"dequeue_from_legacy_queue     False                           This service will look for jobs on the legacy expirer task queue."},{"line_number":1025,"context_line":"processes                     0                               How many parts to divide the legacy work into,"},{"line_number":1026,"context_line":"                                                              one part per process that will be doing the work."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_f6d8f152","line":1023,"in_reply_to":"3f79a3b5_13793881","updated":"2018-10-10 09:51:33.000000000","message":"Done","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"3e9860f392936575cc2d76a47bdac6eabb3477ec","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"concurrency                   1                               Level of concurrency to use to do the work,"},{"line_number":1022,"context_line":"                                                              this value must be set to at least 1"},{"line_number":1023,"context_line":"expiring_objects_account_name expiring_objects                name for legacy expirer task queue"},{"line_number":1024,"context_line":"dequeue_from_legacy_queue     False                           This service will look for jobs on the legacy expirer task queue."},{"line_number":1025,"context_line":"processes                     0                               How many parts to divide the legacy work into,"},{"line_number":1026,"context_line":"                                                              one part per process that will be doing the work."},{"line_number":1027,"context_line":"                                                              When set 0 means that a single legacy"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_337eb46a","line":1024,"updated":"2018-10-08 06:29:10.000000000","message":"The Option feels too long and has the word queue in it twice. I wonder if we could think of something better.\n\n  use_legacy_queue\n  check_legacy_queue\n\nI mean dequeue sounds better, but I wonder it it\u0027s too much.","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"concurrency                   1                               Level of concurrency to use to do the work,"},{"line_number":1022,"context_line":"                                                              this value must be set to at least 1"},{"line_number":1023,"context_line":"expiring_objects_account_name expiring_objects                name for legacy expirer task queue"},{"line_number":1024,"context_line":"dequeue_from_legacy_queue     False                           This service will look for jobs on the legacy expirer task queue."},{"line_number":1025,"context_line":"processes                     0                               How many parts to divide the legacy work into,"},{"line_number":1026,"context_line":"                                                              one part per process that will be doing the work."},{"line_number":1027,"context_line":"                                                              When set 0 means that a single legacy"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_9113c759","line":1024,"in_reply_to":"3f79a3b5_337eb46a","updated":"2018-10-10 09:51:33.000000000","message":"I have a concern for the parameter names.\nFinally, I want 2 queue switching parameters for both of dequeueing (object-expirer) and enqueueing (object-server and proxy-server) for expirer queue migration.\nThe migration detail is commented by romain for patch set 32 of \u003c https://review.openstack.org/#/c/517389/ \u003e.\nSo I want to distinguish dequeue-switching parameter from enqueue-switching parameter by name.\n\nBut, I agree that current name is too long.\nSo I changed the parameter name to \"dequeue_from_legacy\".","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"3e9860f392936575cc2d76a47bdac6eabb3477ec","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"                                                              process will be doing all the work."},{"line_number":1029,"context_line":"                                                              This can only be used in conjunction with"},{"line_number":1030,"context_line":"                                                              `dequeue_from_legacy_queue`."},{"line_number":1031,"context_line":"process                       0                               which of the parts a particular legacy process will"},{"line_number":1032,"context_line":"                                                              work on. It is \"zero based\", if you want to use 3"},{"line_number":1033,"context_line":"                                                              processes, you should run processes with process"},{"line_number":1034,"context_line":"                                                              set to 0, 1, and 2."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_d392e0a0","line":1031,"updated":"2018-10-08 06:29:10.000000000","message":"Which (capital \u0027w\u0027)","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"                                                              process will be doing all the work."},{"line_number":1029,"context_line":"                                                              This can only be used in conjunction with"},{"line_number":1030,"context_line":"                                                              `dequeue_from_legacy_queue`."},{"line_number":1031,"context_line":"process                       0                               which of the parts a particular legacy process will"},{"line_number":1032,"context_line":"                                                              work on. It is \"zero based\", if you want to use 3"},{"line_number":1033,"context_line":"                                                              processes, you should run processes with process"},{"line_number":1034,"context_line":"                                                              set to 0, 1, and 2."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_b1d84380","line":1031,"in_reply_to":"3f79a3b5_d392e0a0","updated":"2018-10-10 09:51:33.000000000","message":"Done","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"3e9860f392936575cc2d76a47bdac6eabb3477ec","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"                                                              set to 0, 1, and 2."},{"line_number":1035,"context_line":"                                                              This can only be used in conjunction with"},{"line_number":1036,"context_line":"                                                              `dequeue_from_legacy_queue`."},{"line_number":1037,"context_line":"reclaim_age                   604800                          how long an un-processable expired object"},{"line_number":1038,"context_line":"                                                              marker will be retried before it is abandoned."},{"line_number":1039,"context_line":"                                                              It is not coupled with the tombstone reclaim age"},{"line_number":1040,"context_line":"                                                              in the consistency engine."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_f38fdc73","line":1037,"updated":"2018-10-08 06:29:10.000000000","message":"How (capital \u0027h\u0027)","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"                                                              set to 0, 1, and 2."},{"line_number":1035,"context_line":"                                                              This can only be used in conjunction with"},{"line_number":1036,"context_line":"                                                              `dequeue_from_legacy_queue`."},{"line_number":1037,"context_line":"reclaim_age                   604800                          how long an un-processable expired object"},{"line_number":1038,"context_line":"                                                              marker will be retried before it is abandoned."},{"line_number":1039,"context_line":"                                                              It is not coupled with the tombstone reclaim age"},{"line_number":1040,"context_line":"                                                              in the consistency engine."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_d1d37f62","line":1037,"in_reply_to":"3f79a3b5_f38fdc73","updated":"2018-10-10 09:51:33.000000000","message":"Done","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"}],"doc/source/overview_expiring_objects.rst":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"3e9860f392936575cc2d76a47bdac6eabb3477ec","unresolved":false,"context_lines":[{"line_number":52,"context_line":"launching process searches ``/etc/swift/object-server.conf`` with"},{"line_number":53,"context_line":"``object-expirer`` section. Only if there are no"},{"line_number":54,"context_line":"``/etc/swift/object-server.conf`` with ``object-expirer`` section,"},{"line_number":55,"context_line":"``/etc/swift/object-expirer.conf`` is used."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Now, launching object-expirers from ``/etc/swift/object-expirer.conf`` is"},{"line_number":58,"context_line":"deprecated. Because object-expirers\u0027s task queue system will be updated and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_938c6881","line":55,"updated":"2018-10-08 06:29:10.000000000","message":"I wonder if that\u0027s too many config links in the one paragraph. Maybe something like:\n\n  By default the daemon looks for two different config files. When launching,\n  the process searches for the ``[object-expirer]`` section in the \n  ``/etc/swift/object-server.conf`` config. If the section or the config is missing\n  it will then look for and use the ``/etc/swift/object-expirer.conf`` config.","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"launching process searches ``/etc/swift/object-server.conf`` with"},{"line_number":53,"context_line":"``object-expirer`` section. Only if there are no"},{"line_number":54,"context_line":"``/etc/swift/object-server.conf`` with ``object-expirer`` section,"},{"line_number":55,"context_line":"``/etc/swift/object-expirer.conf`` is used."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Now, launching object-expirers from ``/etc/swift/object-expirer.conf`` is"},{"line_number":58,"context_line":"deprecated. Because object-expirers\u0027s task queue system will be updated and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_b11da311","line":55,"in_reply_to":"3f79a3b5_938c6881","updated":"2018-10-10 09:51:33.000000000","message":"Done","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"3e9860f392936575cc2d76a47bdac6eabb3477ec","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    as all legacy tasks are stored in a single hidden account and the same"},{"line_number":86,"context_line":"    hidden containers. On a large cluster one may inadvertently make the"},{"line_number":87,"context_line":"    acccount/container server for the hidden ones busy."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Here is a quick sample conf file::"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    [DEFAULT]"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_b3896470","line":88,"updated":"2018-10-08 06:29:10.000000000","message":"Great information! Do you mind if I have have a go at making followup patch that rewords some of this? Then you can squash it in if your happy with it.","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    as all legacy tasks are stored in a single hidden account and the same"},{"line_number":86,"context_line":"    hidden containers. On a large cluster one may inadvertently make the"},{"line_number":87,"context_line":"    acccount/container server for the hidden ones busy."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Here is a quick sample conf file::"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    [DEFAULT]"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_71c5cb5b","line":88,"in_reply_to":"3f79a3b5_7c238659","updated":"2018-10-10 09:51:33.000000000","message":"Thank you Matthew! I don\u0027t mind. I\u0027m looking forward to your follow up patch :)","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"026132459906885529c06f9230f620ab2920fcd7","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    as all legacy tasks are stored in a single hidden account and the same"},{"line_number":86,"context_line":"    hidden containers. On a large cluster one may inadvertently make the"},{"line_number":87,"context_line":"    acccount/container server for the hidden ones busy."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Here is a quick sample conf file::"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    [DEFAULT]"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_7c238659","line":88,"in_reply_to":"3f79a3b5_b3896470","updated":"2018-10-09 05:16:16.000000000","message":"I\u0027m currently working on a follow up doc patch, I hope you don\u0027t mind.","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"026132459906885529c06f9230f620ab2920fcd7","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    [filter:catch_errors]"},{"line_number":114,"context_line":"    use \u003d egg:swift#catch_errors"},{"line_number":115,"context_line":"    # See proxy-server.conf-sample for options"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The daemon needs to run on a machine with access to all the backend servers in"},{"line_number":118,"context_line":"the cluster, but does not need proxy server or public access. The daemon will"},{"line_number":119,"context_line":"use its own internal proxy code instance to access the backend servers."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_7cd86651","line":116,"updated":"2018-10-09 05:16:16.000000000","message":"Seeing as we\u0027ll be calling this old config deprecated, we should probably change it the [object-expirer] section from an object-server.conf.\n\nI\u0027ll add it to the follow up doc patch.","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    [filter:catch_errors]"},{"line_number":114,"context_line":"    use \u003d egg:swift#catch_errors"},{"line_number":115,"context_line":"    # See proxy-server.conf-sample for options"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The daemon needs to run on a machine with access to all the backend servers in"},{"line_number":118,"context_line":"the cluster, but does not need proxy server or public access. The daemon will"},{"line_number":119,"context_line":"use its own internal proxy code instance to access the backend servers."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_b1792331","line":116,"in_reply_to":"3f79a3b5_7cd86651","updated":"2018-10-10 09:51:33.000000000","message":"OK. Thank you :)","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"}],"etc/object-server.conf-sample":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"3cc64ff26797e360b0879ad30767ae56281a6f90","unresolved":false,"context_lines":[{"line_number":456,"context_line":"# [object-expirer]"},{"line_number":457,"context_line":"# Note: Be careful not to enable ``dequeue_from_legacy`` on too many expirers"},{"line_number":458,"context_line":"# as all legacy tasks are stored in a single hidden account and the same hidden"},{"line_number":459,"context_line":"# containers. On a large cluster one may inadvertently make the "},{"line_number":460,"context_line":"# acccount/container server for the hidden ones busy."},{"line_number":461,"context_line":"#"},{"line_number":462,"context_line":"# You can override the default log routing for this app here (don\u0027t use set!):"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"5fc1f717_e0abd184","line":459,"range":{"start_line":459,"start_character":63,"end_line":459,"end_character":64},"updated":"2019-03-27 21:36:29.000000000","message":"nits) trailing white space","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"90ea6b2c60d1794a4997e8843844dea9eebb5d19","unresolved":false,"context_lines":[{"line_number":456,"context_line":"# [object-expirer]"},{"line_number":457,"context_line":"# Note: Be careful not to enable ``dequeue_from_legacy`` on too many expirers"},{"line_number":458,"context_line":"# as all legacy tasks are stored in a single hidden account and the same hidden"},{"line_number":459,"context_line":"# containers. On a large cluster one may inadvertently make the "},{"line_number":460,"context_line":"# acccount/container server for the hidden ones busy."},{"line_number":461,"context_line":"#"},{"line_number":462,"context_line":"# You can override the default log routing for this app here (don\u0027t use set!):"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"5fc1f717_903563f9","line":459,"range":{"start_line":459,"start_character":63,"end_line":459,"end_character":64},"in_reply_to":"5fc1f717_e0abd184","updated":"2019-03-29 04:43:55.000000000","message":"Done","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"ccf53185426e1aa42f9ebc77be4f0b1a52e148e5","unresolved":false,"context_lines":[{"line_number":457,"context_line":"# Note: Be careful not to enable ``dequeue_from_legacy`` on too many expirers"},{"line_number":458,"context_line":"# as all legacy tasks are stored in a single hidden account and the same hidden"},{"line_number":459,"context_line":"# containers. On a large cluster one may inadvertently make the"},{"line_number":460,"context_line":"# acccount/container server for the hidden ones busy."},{"line_number":461,"context_line":"#"},{"line_number":462,"context_line":"# You can override the default log routing for this app here (don\u0027t use set!):"},{"line_number":463,"context_line":"# log_name \u003d object-expirer"}],"source_content_type":"application/octet-stream","patch_set":13,"id":"dfbec78f_6f8ec52f","line":460,"updated":"2019-05-02 17:16:16.000000000","message":"Please you move this comment closer to the option","commit_id":"52e3336abf8485d3bfc267dd447b208fba1fb68f"}],"swift/common/manager.py":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"5b3db1975b0fd9e8e0168396e7bf3f6dac566a60","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    def _find_conf_files(self, server_search):"},{"line_number":480,"context_line":"        if self.conf is not None:"},{"line_number":481,"context_line":"            return search_tree(SWIFT_DIR, server_search, self.conf + \u0027.conf\u0027,"},{"line_number":482,"context_line":"                               dir_ext\u003dself.conf + \u0027.conf.d\u0027)"},{"line_number":483,"context_line":"        else:"},{"line_number":484,"context_line":"            return search_tree(SWIFT_DIR, server_search + \u0027*\u0027, \u0027.conf\u0027,"},{"line_number":485,"context_line":"                               dir_ext\u003d\u0027.conf.d\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_8960940f","line":482,"updated":"2018-09-13 21:08:13.000000000","message":"Is there an example somewhere, how this is supposed to be used?","commit_id":"7e7613ff9b337f1c6bb31c9be98da4a24ceb302e"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"7c1171d437840fb9363f7a4b807b53e1283d9c36","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    def _find_conf_files(self, server_search):"},{"line_number":480,"context_line":"        if self.conf is not None:"},{"line_number":481,"context_line":"            return search_tree(SWIFT_DIR, server_search, self.conf + \u0027.conf\u0027,"},{"line_number":482,"context_line":"                               dir_ext\u003dself.conf + \u0027.conf.d\u0027)"},{"line_number":483,"context_line":"        else:"},{"line_number":484,"context_line":"            return search_tree(SWIFT_DIR, server_search + \u0027*\u0027, \u0027.conf\u0027,"},{"line_number":485,"context_line":"                               dir_ext\u003d\u0027.conf.d\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_86ce2859","line":482,"in_reply_to":"3f79a3b5_8960940f","updated":"2018-09-14 23:57:52.000000000","message":"In my understanding, `self.conf` means the number N of `object-server/N.conf`.\nThe following unit test is good example.\nhttps://review.openstack.org/#/c/601950/2/test/unit/common/test_manager.py@451","commit_id":"7e7613ff9b337f1c6bb31c9be98da4a24ceb302e"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"026132459906885529c06f9230f620ab2920fcd7","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            def has_expirer_section(conf_path):"},{"line_number":496,"context_line":"                conf \u003d ConfigParser()"},{"line_number":497,"context_line":"                conf.read(conf_path)"},{"line_number":498,"context_line":"                return \u0027object-expirer\u0027 in conf.sections()"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"            # config of expirer is preferentially read from object-server"},{"line_number":501,"context_line":"            # section. If all object-server.conf doesn\u0027t have object-expirer"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_f72c8f4a","line":498,"updated":"2018-10-09 05:16:16.000000000","message":"I haven\u0027t fully thought this through, but if we\u0027re refactoring `_find_conf_files` out. I wonder if we should give it more smarts and have a `with_section` parameter or something.","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            def has_expirer_section(conf_path):"},{"line_number":496,"context_line":"                conf \u003d ConfigParser()"},{"line_number":497,"context_line":"                conf.read(conf_path)"},{"line_number":498,"context_line":"                return \u0027object-expirer\u0027 in conf.sections()"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"            # config of expirer is preferentially read from object-server"},{"line_number":501,"context_line":"            # section. If all object-server.conf doesn\u0027t have object-expirer"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_b1236306","line":498,"in_reply_to":"3f79a3b5_f72c8f4a","updated":"2018-10-10 09:51:33.000000000","message":"Umm... I have no good refactoring idea for now.\nI\u0027ll try to think about this.","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"026132459906885529c06f9230f620ab2920fcd7","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            # section, object-expirer.conf is used."},{"line_number":503,"context_line":"            found_conf_files \u003d ["},{"line_number":504,"context_line":"                conf for conf in self._find_conf_files(\"object-server\")"},{"line_number":505,"context_line":"                if has_expirer_section(conf)"},{"line_number":506,"context_line":"            ] or self._find_conf_files(\"object-expirer\")"},{"line_number":507,"context_line":"        elif self.server in STANDALONE_SERVERS:"},{"line_number":508,"context_line":"            found_conf_files \u003d self._find_conf_files(self.server)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_d70073b4","line":505,"updated":"2018-10-09 05:16:16.000000000","message":"How does this work for conf.d config dirs. Will this only filter out the sub-config that has the \u0027object-expirer\u0027 section? And therefore miss anything globally defined in the the \u0027[DEFAULT]\u0027 section?\n\nI guess I can just as easily go check, which if/when I get a chance I can go do that.","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            # section, object-expirer.conf is used."},{"line_number":503,"context_line":"            found_conf_files \u003d ["},{"line_number":504,"context_line":"                conf for conf in self._find_conf_files(\"object-server\")"},{"line_number":505,"context_line":"                if has_expirer_section(conf)"},{"line_number":506,"context_line":"            ] or self._find_conf_files(\"object-expirer\")"},{"line_number":507,"context_line":"        elif self.server in STANDALONE_SERVERS:"},{"line_number":508,"context_line":"            found_conf_files \u003d self._find_conf_files(self.server)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_91dbc7e8","line":505,"in_reply_to":"3f79a3b5_d70073b4","updated":"2018-10-10 09:51:33.000000000","message":"\u0027object-expirer\u0027 section is filtering point.\nSo if all expirer parameters are defined in [DEFAULT] and no \u0027object-expirer\u0027 section in the object-server.conf, the file will be ignored.","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"}],"swift/obj/expirer.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"026132459906885529c06f9230f620ab2920fcd7","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        # This if-clause will be removed when general task queue feature is"},{"line_number":264,"context_line":"        # implemented."},{"line_number":265,"context_line":"        if not self.dequeue_from_legacy_queue:"},{"line_number":266,"context_line":"            self.logger.info(\u0027dequeue_from_legacy_queue \u003d\u003d False means \u0027"},{"line_number":267,"context_line":"                             \u0027object-expirer does not work for now.\u0027)"},{"line_number":268,"context_line":"            return"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        self.get_process_values(kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_37a3e79d","line":267,"range":{"start_line":266,"start_character":29,"end_line":267,"end_character":68},"updated":"2018-10-09 05:16:16.000000000","message":"NIT: Should we mention why?\n\n  Until general task queue has been released `dequeue_from_legacy_queue \u003d\u003d False` means an object-expirer run is a no-op\n  \nOr something?","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2eb295b976e037243e310ccd9e3dfc82ce9602f9","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        # This if-clause will be removed when general task queue feature is"},{"line_number":264,"context_line":"        # implemented."},{"line_number":265,"context_line":"        if not self.dequeue_from_legacy_queue:"},{"line_number":266,"context_line":"            self.logger.info(\u0027dequeue_from_legacy_queue \u003d\u003d False means \u0027"},{"line_number":267,"context_line":"                             \u0027object-expirer does not work for now.\u0027)"},{"line_number":268,"context_line":"            return"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        self.get_process_values(kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_d1a85f22","line":267,"range":{"start_line":266,"start_character":29,"end_line":267,"end_character":68},"in_reply_to":"3f79a3b5_37a3e79d","updated":"2018-10-10 09:51:33.000000000","message":"Done","commit_id":"24db649ea44147a6dbb1f4365cc94309cef4f03c"},{"author":{"_account_id":13852,"name":"Romain LE DISEZ","email":"romain.le-disez@corp.ovh.com","username":"rledisez"},"change_message_id":"14917f4245cea3b22c291762ca1e1bb423d8ac20","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.logger \u003d logger or get_logger(conf, log_route\u003d\u0027object-expirer\u0027)"},{"line_number":51,"context_line":"        self.interval \u003d int(conf.get(\u0027interval\u0027) or 300)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        self.conf_path \u003d \\"},{"line_number":54,"context_line":"            self.conf.get(\u0027__file__\u0027) or \u0027/etc/swift/object-expirer.conf\u0027"},{"line_number":55,"context_line":"        # True, if the conf file is \u0027object-expirer.conf\u0027."},{"line_number":56,"context_line":"        self.is_legacy_conf \u003d \u0027expirer\u0027 in self.conf_path"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_d21a196d","line":53,"updated":"2019-02-01 15:49:03.000000000","message":"It should not happen that __file__ is unset. Passing a config file is mandatory","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"c18d18742a5fab418c47738b04463c5385a6a7bf","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.logger \u003d logger or get_logger(conf, log_route\u003d\u0027object-expirer\u0027)"},{"line_number":51,"context_line":"        self.interval \u003d int(conf.get(\u0027interval\u0027) or 300)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        self.conf_path \u003d \\"},{"line_number":54,"context_line":"            self.conf.get(\u0027__file__\u0027) or \u0027/etc/swift/object-expirer.conf\u0027"},{"line_number":55,"context_line":"        # True, if the conf file is \u0027object-expirer.conf\u0027."},{"line_number":56,"context_line":"        self.is_legacy_conf \u003d \u0027expirer\u0027 in self.conf_path"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_a68f05cb","line":53,"in_reply_to":"5fc1f717_102173b4","updated":"2019-03-29 05:44:00.000000000","message":"Hmm... self.conf.get(\u0027__file__\u0027) returns None in the gate job.\nThis is caused by expirer\u0027s unit test implementation.\n\nI agree that config file should be mandatory, even if it is in unit tests.\nBut I think this should be fixed by another patch.\nSo I undid the change.","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"90ea6b2c60d1794a4997e8843844dea9eebb5d19","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.logger \u003d logger or get_logger(conf, log_route\u003d\u0027object-expirer\u0027)"},{"line_number":51,"context_line":"        self.interval \u003d int(conf.get(\u0027interval\u0027) or 300)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        self.conf_path \u003d \\"},{"line_number":54,"context_line":"            self.conf.get(\u0027__file__\u0027) or \u0027/etc/swift/object-expirer.conf\u0027"},{"line_number":55,"context_line":"        # True, if the conf file is \u0027object-expirer.conf\u0027."},{"line_number":56,"context_line":"        self.is_legacy_conf \u003d \u0027expirer\u0027 in self.conf_path"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_102173b4","line":53,"in_reply_to":"9fdfeff1_3f6a41ec","updated":"2019-03-29 04:43:55.000000000","message":"Done","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"93202bd908ca2e47397c0e246f414908e0d048d1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.logger \u003d logger or get_logger(conf, log_route\u003d\u0027object-expirer\u0027)"},{"line_number":51,"context_line":"        self.interval \u003d int(conf.get(\u0027interval\u0027) or 300)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        self.conf_path \u003d \\"},{"line_number":54,"context_line":"            self.conf.get(\u0027__file__\u0027) or \u0027/etc/swift/object-expirer.conf\u0027"},{"line_number":55,"context_line":"        # True, if the conf file is \u0027object-expirer.conf\u0027."},{"line_number":56,"context_line":"        self.is_legacy_conf \u003d \u0027expirer\u0027 in self.conf_path"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_3f6a41ec","line":53,"in_reply_to":"9fdfeff1_d21a196d","updated":"2019-02-18 10:06:12.000000000","message":"I see. I will fix it.","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":13852,"name":"Romain LE DISEZ","email":"romain.le-disez@corp.ovh.com","username":"rledisez"},"change_message_id":"14917f4245cea3b22c291762ca1e1bb423d8ac20","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.conf_path \u003d \\"},{"line_number":54,"context_line":"            self.conf.get(\u0027__file__\u0027) or \u0027/etc/swift/object-expirer.conf\u0027"},{"line_number":55,"context_line":"        # True, if the conf file is \u0027object-expirer.conf\u0027."},{"line_number":56,"context_line":"        self.is_legacy_conf \u003d \u0027expirer\u0027 in self.conf_path"},{"line_number":57,"context_line":"        # object-expirer.conf supports only legacy queue"},{"line_number":58,"context_line":"        self.dequeue_from_legacy \u003d \\"},{"line_number":59,"context_line":"            True if self.is_legacy_conf else \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_d261b9d4","line":56,"updated":"2019-02-01 15:49:03.000000000","message":"I don\u0027t feel good about checking the file name. What if the operator named the conf file object-expiration.conf","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"90ea6b2c60d1794a4997e8843844dea9eebb5d19","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.conf_path \u003d \\"},{"line_number":54,"context_line":"            self.conf.get(\u0027__file__\u0027) or \u0027/etc/swift/object-expirer.conf\u0027"},{"line_number":55,"context_line":"        # True, if the conf file is \u0027object-expirer.conf\u0027."},{"line_number":56,"context_line":"        self.is_legacy_conf \u003d \u0027expirer\u0027 in self.conf_path"},{"line_number":57,"context_line":"        # object-expirer.conf supports only legacy queue"},{"line_number":58,"context_line":"        self.dequeue_from_legacy \u003d \\"},{"line_number":59,"context_line":"            True if self.is_legacy_conf else \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_d0ff6bff","line":56,"in_reply_to":"9fdfeff1_d261b9d4","updated":"2019-03-29 04:43:55.000000000","message":"Not done yet. I\u0027ll decide how to fix this after Romain\u0027s answer.","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"6e40093cd56c46cdce614fe44021bf4c091552a8","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        # object-expirer.conf supports only legacy queue"},{"line_number":58,"context_line":"        self.dequeue_from_legacy \u003d \\"},{"line_number":59,"context_line":"            True if self.is_legacy_conf else \\"},{"line_number":60,"context_line":"            config_true_value(conf.get(\u0027dequeue_from_legacy\u0027, \u0027false\u0027))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.read_conf_for_queue_access(swift)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_24b5b1cd","line":60,"updated":"2019-01-29 02:59:56.000000000","message":"self.conf_path and self.is_legacy_conf do not need to clutter the self, they aren\u0027t used by this patch. But it\u0027s a minor objection.","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"93202bd908ca2e47397c0e246f414908e0d048d1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        # object-expirer.conf supports only legacy queue"},{"line_number":58,"context_line":"        self.dequeue_from_legacy \u003d \\"},{"line_number":59,"context_line":"            True if self.is_legacy_conf else \\"},{"line_number":60,"context_line":"            config_true_value(conf.get(\u0027dequeue_from_legacy\u0027, \u0027false\u0027))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.read_conf_for_queue_access(swift)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_7ff1a96a","line":60,"in_reply_to":"9fdfeff1_24b5b1cd","updated":"2019-02-18 10:06:12.000000000","message":"You are correct. self.conf_path will be used in following patch.\nBut I realized that self.is_legacy_conf should be local variable... I will fix it.","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"90ea6b2c60d1794a4997e8843844dea9eebb5d19","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        # object-expirer.conf supports only legacy queue"},{"line_number":58,"context_line":"        self.dequeue_from_legacy \u003d \\"},{"line_number":59,"context_line":"            True if self.is_legacy_conf else \\"},{"line_number":60,"context_line":"            config_true_value(conf.get(\u0027dequeue_from_legacy\u0027, \u0027false\u0027))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.read_conf_for_queue_access(swift)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_73000102","line":60,"in_reply_to":"9fdfeff1_7ff1a96a","updated":"2019-03-29 04:43:55.000000000","message":"Done","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"26a4b412fa80feabd7c17f053f0713029123c4ab","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self.task_container_prefix \u003d \u0027\u0027"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        self.ic_conf_path \u003d \\"},{"line_number":88,"context_line":"            self.conf.get(\u0027__file__\u0027) or \u0027/etc/swift/object-expirer.conf\u0027"},{"line_number":89,"context_line":"        request_tries \u003d int(self.conf.get(\u0027request_tries\u0027) or 3)"},{"line_number":90,"context_line":"        self.swift \u003d swift or InternalClient("},{"line_number":91,"context_line":"            self.ic_conf_path, \u0027Swift Object Expirer\u0027, request_tries)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_00be1dd4","line":88,"updated":"2019-03-27 21:32:08.000000000","message":"this probably has to change does it?  specifically this file needs to have a pipeline section that is a proxy app","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"90ea6b2c60d1794a4997e8843844dea9eebb5d19","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self.task_container_prefix \u003d \u0027\u0027"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        self.ic_conf_path \u003d \\"},{"line_number":88,"context_line":"            self.conf.get(\u0027__file__\u0027) or \u0027/etc/swift/object-expirer.conf\u0027"},{"line_number":89,"context_line":"        request_tries \u003d int(self.conf.get(\u0027request_tries\u0027) or 3)"},{"line_number":90,"context_line":"        self.swift \u003d swift or InternalClient("},{"line_number":91,"context_line":"            self.ic_conf_path, \u0027Swift Object Expirer\u0027, request_tries)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_863be999","line":88,"in_reply_to":"5fc1f717_00be1dd4","updated":"2019-03-29 04:43:55.000000000","message":"Yes. This have to be changed. Thank you.\nI fixed this.","commit_id":"99095807a919b8f8cb1e26a8f30a1f8f457894e1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"ccf53185426e1aa42f9ebc77be4f0b1a52e148e5","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            self.logger.info(\u0027Until general task queue has been released \u0027"},{"line_number":272,"context_line":"                             \u0027`dequeue_from_legacy \u003d\u003d False` means an \u0027"},{"line_number":273,"context_line":"                             \u0027object-expirer run is a no-op.\u0027)"},{"line_number":274,"context_line":"            return"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self.get_process_values(kwargs)"},{"line_number":277,"context_line":"        pool \u003d GreenPool(self.concurrency)"}],"source_content_type":"text/x-python","patch_set":13,"id":"dfbec78f_2f452d18","line":274,"updated":"2019-05-02 17:16:16.000000000","message":"Perhaps this info message could somehow remind the operator that SOME nodes MUST be running with dequeue_from_legacy","commit_id":"52e3336abf8485d3bfc267dd447b208fba1fb68f"}],"test/unit/common/test_manager.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"1c87dab20de75e819cfe78d04abe284185c613e4","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        self._test_expirer_conf_files("},{"line_number":517,"context_line":"            [(\u0027object-expirer.conf\u0027, \u0027\u0027)], [\u0027object-expirer.conf\u0027])"},{"line_number":518,"context_line":"        self._test_expirer_conf_files("},{"line_number":519,"context_line":"            [(\u0027object-server.conf\u0027, \u0027\u0027)], [])"},{"line_number":520,"context_line":"        self._test_expirer_conf_files("},{"line_number":521,"context_line":"            [(\u0027object-server.conf\u0027, \u0027[object-expirer]\u0027)],"},{"line_number":522,"context_line":"            [\u0027object-server.conf\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_8042c5aa","line":519,"updated":"2018-09-12 16:36:24.000000000","message":"What? Is this okay?\n\nOh I see. \"Unable to locate confing for\" rather than no section, maybe?","commit_id":"7e7613ff9b337f1c6bb31c9be98da4a24ceb302e"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"7c1171d437840fb9363f7a4b807b53e1283d9c36","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        self._test_expirer_conf_files("},{"line_number":517,"context_line":"            [(\u0027object-expirer.conf\u0027, \u0027\u0027)], [\u0027object-expirer.conf\u0027])"},{"line_number":518,"context_line":"        self._test_expirer_conf_files("},{"line_number":519,"context_line":"            [(\u0027object-server.conf\u0027, \u0027\u0027)], [])"},{"line_number":520,"context_line":"        self._test_expirer_conf_files("},{"line_number":521,"context_line":"            [(\u0027object-server.conf\u0027, \u0027[object-expirer]\u0027)],"},{"line_number":522,"context_line":"            [\u0027object-server.conf\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_e109062b","line":519,"in_reply_to":"3f79a3b5_8042c5aa","updated":"2018-09-14 23:57:52.000000000","message":"Yes, correct.\nI think this is natural behavior with \"if there are no object-server.conf with expirer section, then read object-expirer.conf\" model.\nSo, object-server.conf without expirer section is ignored.","commit_id":"7e7613ff9b337f1c6bb31c9be98da4a24ceb302e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"1c87dab20de75e819cfe78d04abe284185c613e4","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        self._test_expirer_conf_files(["},{"line_number":528,"context_line":"            (\u0027object-server.conf\u0027, \u0027[object-expirer]\u0027),"},{"line_number":529,"context_line":"            (\u0027object-expirer.conf\u0027, \u0027\u0027),"},{"line_number":530,"context_line":"        ], [\u0027object-server.conf\u0027])"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def test_proxy_conf_dir(self):"},{"line_number":533,"context_line":"        conf_files \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2003b178","line":530,"updated":"2018-09-12 16:36:24.000000000","message":"Could you add tests like \"in the conf dir\" cases?","commit_id":"7e7613ff9b337f1c6bb31c9be98da4a24ceb302e"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"5b3db1975b0fd9e8e0168396e7bf3f6dac566a60","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        self._test_expirer_conf_files(["},{"line_number":528,"context_line":"            (\u0027object-server.conf\u0027, \u0027[object-expirer]\u0027),"},{"line_number":529,"context_line":"            (\u0027object-expirer.conf\u0027, \u0027\u0027),"},{"line_number":530,"context_line":"        ], [\u0027object-server.conf\u0027])"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def test_proxy_conf_dir(self):"},{"line_number":533,"context_line":"        conf_files \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_693bb8e9","line":530,"in_reply_to":"3f79a3b5_2003b178","updated":"2018-09-13 21:08:13.000000000","message":"I agree, please do.","commit_id":"7e7613ff9b337f1c6bb31c9be98da4a24ceb302e"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"7c1171d437840fb9363f7a4b807b53e1283d9c36","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        self._test_expirer_conf_files(["},{"line_number":528,"context_line":"            (\u0027object-server.conf\u0027, \u0027[object-expirer]\u0027),"},{"line_number":529,"context_line":"            (\u0027object-expirer.conf\u0027, \u0027\u0027),"},{"line_number":530,"context_line":"        ], [\u0027object-server.conf\u0027])"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def test_proxy_conf_dir(self):"},{"line_number":533,"context_line":"        conf_files \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_865dc849","line":530,"in_reply_to":"3f79a3b5_693bb8e9","updated":"2018-09-14 23:57:52.000000000","message":"Done","commit_id":"7e7613ff9b337f1c6bb31c9be98da4a24ceb302e"}]}
