)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":22,"context_line":"[filter:proxy_logging]. A ValueError will be raised when instantiating"},{"line_number":23,"context_line":"a StatsdClient if both a supported and deprecated option is configured"},{"line_number":24,"context_line":"for the same equivalent name (e.g. configuring \u0027statsd_host\u0027 and"},{"line_number":25,"context_line":"\u0027log_statsd_host\u0027 will cause an error)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"In ProxyLoggingMiddleware, the \u0027access_log_\u0027 prefix is also deprecated"},{"line_number":28,"context_line":"for statsd options. The paste-deploy \u0027set\u0027 syntax should be used to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"60299956_698df603","line":25,"updated":"2024-08-14 14:14:57.000000000","message":"if we wanted I think it\u0027d be reasonable to make statsd_host have precedence and just log a warning if log_statsd_host is configured (to the same value?).  I think with conf.d style configs it\u0027s be easy/annoying to be *trying* to use the new options and accidently break your proxies.  If you want to \"pre-migrate\" configs ahead of a rolling upgrade it would be necessary for proxies to start when both are configiured.  But this wouldn\u0027t be the first option where you HAVE to \"upgrade everything first; then turn it on\" - so this would be more like those.\n\nI think there\u0027s some competing values here:\n\n1) robustness principle: be liberal in what you accept\n2) Fail Early, Fail Loudly\n\nI would argue this proposal is leaning too heavily into option #2 and ignoring #1\n\nIf you think it\u0027s not clear that we should prioritize the *new* options over the *deprecated* options you might choose #2 because of values like:\n\n* In the face of ambiguity, refuse the temptation to guess.\n* There should be one-- and preferably only one --obvious way to do it.\n\nBut I think the new options are CLEARLY the perferable way to do it and the correct value is not ambigous at all.  If we have enough context to error when both are provided we should have enough context to pick the right value and log a warning for ops to clean up the unused value.","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"896f345b5d8d0130de7d8225f55983936fd21d6e","unresolved":false,"context_lines":[{"line_number":22,"context_line":"[filter:proxy_logging]. A ValueError will be raised when instantiating"},{"line_number":23,"context_line":"a StatsdClient if both a supported and deprecated option is configured"},{"line_number":24,"context_line":"for the same equivalent name (e.g. configuring \u0027statsd_host\u0027 and"},{"line_number":25,"context_line":"\u0027log_statsd_host\u0027 will cause an error)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"In ProxyLoggingMiddleware, the \u0027access_log_\u0027 prefix is also deprecated"},{"line_number":28,"context_line":"for statsd options. The paste-deploy \u0027set\u0027 syntax should be used to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"c46b1c98_70a70e5b","line":25,"in_reply_to":"60299956_698df603","updated":"2024-09-02 14:32:50.000000000","message":"Done","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6360aa502d69aff3b0f76615a8d2e54f9804f4ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3ab6c6ba_08a018bb","updated":"2024-06-24 21:11:48.000000000","message":"So -- how much do we want to grow the scope?","commit_id":"b74c760a276c7b03095283460355e8e3f203ed59"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9e3c1b90f36957fca67a0defa1fd0a8a6ecf9588","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a09df908_db5f9fa8","updated":"2024-06-24 16:09:59.000000000","message":"The docs should be updated, see comment on parent patch\n\nhttps://review.opendev.org/c/openstack/swift/+/919444/comments/250fcd8c_ab82dc56","commit_id":"b74c760a276c7b03095283460355e8e3f203ed59"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bc01f7c2a5858c1c29ac3e48a5c9ceb651080e05","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b4fa5d65_810f1888","updated":"2024-06-27 09:16:23.000000000","message":"@shreeya I found another reference here https://github.com/openstack/swift/blob/9b8e5a5c955340f71fbe9dad314f6241bd126d91/doc/source/metrics/proxy_server.rst#L39","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"54deb4e7_5427ca7f","updated":"2024-08-14 14:14:57.000000000","message":"this looks REALLY good!  Changes make sense, tests and doc updates look good!\n\nI have a different opinion on how we should handle precedence of new options over deprecated options; but I may have missed a discussion or prior art.","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"}],"doc/manpages/container-reconciler.conf.5":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6807b99f9d4b2089285a1304963c2bf6b5e51d01","unresolved":true,"context_lines":[{"line_number":69,"context_line":"The port value for the StatsD server. The default is 8125."},{"line_number":70,"context_line":".IP \"\\fBstatsd_sample_rate_factor\\fR\""},{"line_number":71,"context_line":"It is not recommended to set this to a value less than 1.0, if frequency of"},{"line_number":72,"context_line":"logging is too high, tune the statsd_default_sample_rate instead."},{"line_number":73,"context_line":"The default value is 1.0."},{"line_number":74,"context_line":".IP \"\\fBlog_udp_host\\fR\""},{"line_number":75,"context_line":"If not set, the UDP receiver for syslog is disabled."}],"source_content_type":"text/troff","patch_set":9,"id":"35af239e_976eaf62","line":72,"updated":"2024-08-06 00:23:01.000000000","message":"Off-topic: As much as I hate to lose useful info, we might consider dropping these explanations so it\u0027s consistent with other man pages. The admin guide explanations seem better, anyway.","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"}],"doc/manpages/proxy-server.conf.5":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bc01f7c2a5858c1c29ac3e48a5c9ceb651080e05","unresolved":true,"context_lines":[{"line_number":682,"context_line":"unset."},{"line_number":683,"context_line":".IP \\fBaccess_log_udp_port\\fR"},{"line_number":684,"context_line":"Default is 514."},{"line_number":685,"context_line":".IP \\fBaccess_statsd_host\\fR"},{"line_number":686,"context_line":"You can use statsd_* from [DEFAULT], or override them here."},{"line_number":687,"context_line":"StatsD server. IPv4/IPv6 addresses and hostnames are"},{"line_number":688,"context_line":"supported. If a hostname resolves to an IPv4 and IPv6 address, the IPv4"}],"source_content_type":"text/troff","patch_set":3,"id":"0f3b8735_b0d53cc0","line":685,"updated":"2024-06-27 09:16:23.000000000","message":"note: these are still up for debate re how we migrate proxy-logging config","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"d782a5156812d1f85ec6308056e437b28f26aca1","unresolved":false,"context_lines":[{"line_number":682,"context_line":"unset."},{"line_number":683,"context_line":".IP \\fBaccess_log_udp_port\\fR"},{"line_number":684,"context_line":"Default is 514."},{"line_number":685,"context_line":".IP \\fBaccess_statsd_host\\fR"},{"line_number":686,"context_line":"You can use statsd_* from [DEFAULT], or override them here."},{"line_number":687,"context_line":"StatsD server. IPv4/IPv6 addresses and hostnames are"},{"line_number":688,"context_line":"supported. If a hostname resolves to an IPv4 and IPv6 address, the IPv4"}],"source_content_type":"text/troff","patch_set":3,"id":"9fe3dd69_75aec43f","line":685,"in_reply_to":"0f3b8735_b0d53cc0","updated":"2024-06-27 16:01:03.000000000","message":"Acknowledged","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bb941313238bce270534409c867c74b541cad303","unresolved":true,"context_lines":[{"line_number":682,"context_line":"unset."},{"line_number":683,"context_line":".IP \\fBaccess_log_udp_port\\fR"},{"line_number":684,"context_line":"Default is 514."},{"line_number":685,"context_line":".IP \\fBaccess_log_statsd_host\\fR"},{"line_number":686,"context_line":"You can use statsd_* from [DEFAULT], or override them here."},{"line_number":687,"context_line":"StatsD server. IPv4/IPv6 addresses and hostnames are"},{"line_number":688,"context_line":"supported. If a hostname resolves to an IPv4 and IPv6 address, the IPv4"}],"source_content_type":"text/troff","patch_set":5,"id":"6c100ad9_670a9c93","line":685,"range":{"start_line":685,"start_character":7,"end_line":685,"end_character":29},"updated":"2024-07-16 11:04:42.000000000","message":"these should be changed to plain statsd_host etc","commit_id":"a509bb3dd3643e612dcbdd7019941ad85d733301"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"34a706412dce49d7acf1f7fdc8fb51717d69bdf5","unresolved":false,"context_lines":[{"line_number":682,"context_line":"unset."},{"line_number":683,"context_line":".IP \\fBaccess_log_udp_port\\fR"},{"line_number":684,"context_line":"Default is 514."},{"line_number":685,"context_line":".IP \\fBaccess_log_statsd_host\\fR"},{"line_number":686,"context_line":"You can use statsd_* from [DEFAULT], or override them here."},{"line_number":687,"context_line":"StatsD server. IPv4/IPv6 addresses and hostnames are"},{"line_number":688,"context_line":"supported. If a hostname resolves to an IPv4 and IPv6 address, the IPv4"}],"source_content_type":"text/troff","patch_set":5,"id":"66aec42b_4c73a91d","line":685,"range":{"start_line":685,"start_character":7,"end_line":685,"end_character":29},"in_reply_to":"6c100ad9_670a9c93","updated":"2024-07-31 09:46:04.000000000","message":"Done","commit_id":"a509bb3dd3643e612dcbdd7019941ad85d733301"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bb941313238bce270534409c867c74b541cad303","unresolved":true,"context_lines":[{"line_number":683,"context_line":".IP \\fBaccess_log_udp_port\\fR"},{"line_number":684,"context_line":"Default is 514."},{"line_number":685,"context_line":".IP \\fBaccess_log_statsd_host\\fR"},{"line_number":686,"context_line":"You can use statsd_* from [DEFAULT], or override them here."},{"line_number":687,"context_line":"StatsD server. IPv4/IPv6 addresses and hostnames are"},{"line_number":688,"context_line":"supported. If a hostname resolves to an IPv4 and IPv6 address, the IPv4"},{"line_number":689,"context_line":"address will be used."}],"source_content_type":"text/troff","patch_set":5,"id":"9e57de05_c2313638","line":686,"updated":"2024-07-16 11:04:42.000000000","message":"please move this line above log_statsd_host and update:\n\n```\nstatsd_* options can be inherited from [DEFAULT] or overridden here using set \u003coption\u003e \u003cvalue\u003e syntax\n```","commit_id":"a509bb3dd3643e612dcbdd7019941ad85d733301"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"34a706412dce49d7acf1f7fdc8fb51717d69bdf5","unresolved":false,"context_lines":[{"line_number":683,"context_line":".IP \\fBaccess_log_udp_port\\fR"},{"line_number":684,"context_line":"Default is 514."},{"line_number":685,"context_line":".IP \\fBaccess_log_statsd_host\\fR"},{"line_number":686,"context_line":"You can use statsd_* from [DEFAULT], or override them here."},{"line_number":687,"context_line":"StatsD server. IPv4/IPv6 addresses and hostnames are"},{"line_number":688,"context_line":"supported. If a hostname resolves to an IPv4 and IPv6 address, the IPv4"},{"line_number":689,"context_line":"address will be used."}],"source_content_type":"text/troff","patch_set":5,"id":"d420628c_011a207b","line":686,"in_reply_to":"9e57de05_c2313638","updated":"2024-07-31 09:46:04.000000000","message":"Done","commit_id":"a509bb3dd3643e612dcbdd7019941ad85d733301"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bb941313238bce270534409c867c74b541cad303","unresolved":true,"context_lines":[{"line_number":711,"context_line":"token usage. Set to 0 to suppress the token completely (replaced"},{"line_number":712,"context_line":"by \u0027...\u0027 in the log). The default is 16 chars."},{"line_number":713,"context_line":"Note: reveal_sensitive_prefix will not affect the value logged with access_log_headers\u003dTrue."},{"line_number":714,"context_line":".IP \\fBstatsd_valid_http_methods\\fR"},{"line_number":715,"context_line":"What HTTP methods are allowed for StatsD logging (comma-sep); request methods"},{"line_number":716,"context_line":"not in this list will have \"BAD_METHOD\" for the \u003cverb\u003e portion of the metric."},{"line_number":717,"context_line":"Default is \"GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS\"."}],"source_content_type":"text/troff","patch_set":5,"id":"f0ef76be_30b7606f","line":714,"updated":"2024-07-16 11:04:42.000000000","message":"not sure if we\u0027re changing this","commit_id":"a509bb3dd3643e612dcbdd7019941ad85d733301"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"c25b2f6038731c85d4cd379c3306681deb066037","unresolved":false,"context_lines":[{"line_number":711,"context_line":"token usage. Set to 0 to suppress the token completely (replaced"},{"line_number":712,"context_line":"by \u0027...\u0027 in the log). The default is 16 chars."},{"line_number":713,"context_line":"Note: reveal_sensitive_prefix will not affect the value logged with access_log_headers\u003dTrue."},{"line_number":714,"context_line":".IP \\fBstatsd_valid_http_methods\\fR"},{"line_number":715,"context_line":"What HTTP methods are allowed for StatsD logging (comma-sep); request methods"},{"line_number":716,"context_line":"not in this list will have \"BAD_METHOD\" for the \u003cverb\u003e portion of the metric."},{"line_number":717,"context_line":"Default is \"GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS\"."}],"source_content_type":"text/troff","patch_set":5,"id":"498345bc_ca74b3cc","line":714,"in_reply_to":"f0ef76be_30b7606f","updated":"2024-07-16 19:21:53.000000000","message":"Acknowledged","commit_id":"a509bb3dd3643e612dcbdd7019941ad85d733301"}],"doc/source/admin_guide.rst":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6807b99f9d4b2089285a1304963c2bf6b5e51d01","unresolved":true,"context_lines":[{"line_number":858,"context_line":""},{"line_number":859,"context_line":"To get the best data, start with the default `statsd_default_sample_rate`"},{"line_number":860,"context_line":"and `statsd_sample_rate_factor` values of 1 and only lower"},{"line_number":861,"context_line":"`statsd_sample_rate_factor` if needed.  The"},{"line_number":862,"context_line":"`statsd_default_sample_rate` should not be used and remains for backward"},{"line_number":863,"context_line":"compatibility only."},{"line_number":864,"context_line":""},{"line_number":865,"context_line":"The metric prefix will be prepended to every metric sent to the StatsD server"},{"line_number":866,"context_line":"For example, with::"}],"source_content_type":"text/x-rst","patch_set":9,"id":"67b6b11d_d51f151f","line":863,"range":{"start_line":861,"start_character":40,"end_line":863,"end_character":19},"updated":"2024-08-06 00:23:01.000000000","message":"Off-topic: Huh -- this seems to contradict what\u0027s in the reconciler man page...","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"}],"etc/account-server.conf-sample":[{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"7723da7d858e3c2f216e05df9c10d088aab952ae","unresolved":true,"context_lines":[{"line_number":47,"context_line":"# log_udp_port \u003d 514"},{"line_number":48,"context_line":"#"},{"line_number":49,"context_line":"# You can enable StatsD logging here:"},{"line_number":50,"context_line":"# For backwards compatibility the following options may also be configured using"},{"line_number":51,"context_line":"# the same option name with a \u0027log_\u0027 prefix:"},{"line_number":52,"context_line":"#     statsd_host, statsd_port, statsd_default_sample_rate,"},{"line_number":53,"context_line":"#     statsd_sample_rate_factor, statsd_metric_prefix"},{"line_number":54,"context_line":"# For example, \u0027log_statsd_host\u0027 is supported in the absence of \u0027statsd_host\u0027."},{"line_number":55,"context_line":"# StatsD metrics are enabled if statsd_host or log_statsd_host is configured."},{"line_number":56,"context_line":"# statsd_host \u003d"},{"line_number":57,"context_line":"# statsd_port \u003d 8125"},{"line_number":58,"context_line":"# statsd_default_sample_rate \u003d 1.0"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"2ec22778_61f8694e","line":55,"range":{"start_line":50,"start_character":0,"end_line":55,"end_character":77},"updated":"2024-06-26 19:49:08.000000000","message":"Let me know if the words here look good and I\u0027ll add the same prompt in all the conf.sample files!","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bc01f7c2a5858c1c29ac3e48a5c9ceb651080e05","unresolved":true,"context_lines":[{"line_number":47,"context_line":"# log_udp_port \u003d 514"},{"line_number":48,"context_line":"#"},{"line_number":49,"context_line":"# You can enable StatsD logging here:"},{"line_number":50,"context_line":"# For backwards compatibility the following options may also be configured using"},{"line_number":51,"context_line":"# the same option name with a \u0027log_\u0027 prefix:"},{"line_number":52,"context_line":"#     statsd_host, statsd_port, statsd_default_sample_rate,"},{"line_number":53,"context_line":"#     statsd_sample_rate_factor, statsd_metric_prefix"},{"line_number":54,"context_line":"# For example, \u0027log_statsd_host\u0027 is supported in the absence of \u0027statsd_host\u0027."},{"line_number":55,"context_line":"# StatsD metrics are enabled if statsd_host or log_statsd_host is configured."},{"line_number":56,"context_line":"# statsd_host \u003d"},{"line_number":57,"context_line":"# statsd_port \u003d 8125"},{"line_number":58,"context_line":"# statsd_default_sample_rate \u003d 1.0"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"5ca6b57e_480aa918","line":55,"range":{"start_line":50,"start_character":0,"end_line":55,"end_character":77},"in_reply_to":"2ec22778_61f8694e","updated":"2024-06-27 09:16:23.000000000","message":"We should probably emphasize that it\u0027s the statsd options that are affected, and also mention deprecation.\n\n```\n# For backwards compatibility the following statsd options may also be configured using\n# the same option name with a \u0027log_\u0027 prefix:\n#     statsd_host, statsd_port, statsd_default_sample_rate,\n#     statsd_sample_rate_factor, statsd_metric_prefix\n# For example, \u0027log_statsd_host\u0027 is supported in the absence of \u0027statsd_host\u0027.\n# However, the \u0027log_\u0027 prefix is deprecated for statsd options and support will be removed in a future release.\n# StatsD metrics are enabled if statsd_host or log_statsd_host is configured.\n```","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"f9263d6b3ab3a60f0208c8c2e654c7e3db70162f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"# log_udp_port \u003d 514"},{"line_number":48,"context_line":"#"},{"line_number":49,"context_line":"# You can enable StatsD logging here:"},{"line_number":50,"context_line":"# For backwards compatibility the following options may also be configured using"},{"line_number":51,"context_line":"# the same option name with a \u0027log_\u0027 prefix:"},{"line_number":52,"context_line":"#     statsd_host, statsd_port, statsd_default_sample_rate,"},{"line_number":53,"context_line":"#     statsd_sample_rate_factor, statsd_metric_prefix"},{"line_number":54,"context_line":"# For example, \u0027log_statsd_host\u0027 is supported in the absence of \u0027statsd_host\u0027."},{"line_number":55,"context_line":"# StatsD metrics are enabled if statsd_host or log_statsd_host is configured."},{"line_number":56,"context_line":"# statsd_host \u003d"},{"line_number":57,"context_line":"# statsd_port \u003d 8125"},{"line_number":58,"context_line":"# statsd_default_sample_rate \u003d 1.0"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"4ee43972_5eb3d759","line":55,"range":{"start_line":50,"start_character":0,"end_line":55,"end_character":77},"in_reply_to":"5ca6b57e_480aa918","updated":"2024-06-27 15:56:18.000000000","message":"Acknowledged","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6807b99f9d4b2089285a1304963c2bf6b5e51d01","unresolved":true,"context_lines":[{"line_number":47,"context_line":"# log_udp_port \u003d 514"},{"line_number":48,"context_line":"#"},{"line_number":49,"context_line":"# You can enable StatsD logging here:"},{"line_number":50,"context_line":"# For backwards compatibility the following options may also be configured using"},{"line_number":51,"context_line":"# the same option name with a \u0027log_\u0027 prefix:"},{"line_number":52,"context_line":"#     statsd_host, statsd_port, statsd_default_sample_rate,"},{"line_number":53,"context_line":"#     statsd_sample_rate_factor, statsd_metric_prefix"},{"line_number":54,"context_line":"# For example, \u0027log_statsd_host\u0027 is supported in the absence of \u0027statsd_host\u0027."},{"line_number":55,"context_line":"# However, the \u0027log_\u0027 prefix is deprecated for statsd options and support will be removed in a future release."},{"line_number":56,"context_line":"# StatsD metrics are enabled if statsd_host or log_statsd_host is configured."},{"line_number":57,"context_line":"# statsd_host \u003d"},{"line_number":58,"context_line":"# statsd_port \u003d 8125"},{"line_number":59,"context_line":"# statsd_default_sample_rate \u003d 1.0"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"70d759d9_13e44318","line":56,"range":{"start_line":50,"start_character":2,"end_line":56,"end_character":77},"updated":"2024-08-06 00:23:01.000000000","message":"Should we have this in all the sample configs? If we\u0027re only going to do it in one, I feel like `proxy-server.conf-sample` might be the better place.\n\nThe list feels a little wordy, particularly since it includes *all* of the options that follow. Maybe it would be better as an after-note?\n```\n# You can enable StatsD logging here:\n# statsd_host \u003d\n# statsd_port \u003d 8125\n# statsd_default_sample_rate \u003d 1.0\n# statsd_sample_rate_factor \u003d 1.0\n# statsd_metric_prefix \u003d\n# For backwards compatibility the above options may also be configured using\n# the same option name with a \u0027log_\u0027 prefix; for example, \u0027log_statsd_host\u0027\n# is supported in the absence of \u0027statsd_host\u0027.\n# However, the \u0027log_\u0027 prefix is deprecated for statsd options and support will\n# be removed in a future release. Configuring a mix of \u0027log_statsd_\u0027 and\n# \u0027statsd_\u0027 options is not supported.\n# StatsD metrics are enabled if either statsd_host or log_statsd_host is configured.\n```","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1fc7beb5dae42bb090ae1e4fab7a52e10fa08e56","unresolved":true,"context_lines":[{"line_number":47,"context_line":"# log_udp_port \u003d 514"},{"line_number":48,"context_line":"#"},{"line_number":49,"context_line":"# You can enable StatsD logging here:"},{"line_number":50,"context_line":"# For backwards compatibility the following options may also be configured using"},{"line_number":51,"context_line":"# the same option name with a \u0027log_\u0027 prefix:"},{"line_number":52,"context_line":"#     statsd_host, statsd_port, statsd_default_sample_rate,"},{"line_number":53,"context_line":"#     statsd_sample_rate_factor, statsd_metric_prefix"},{"line_number":54,"context_line":"# For example, \u0027log_statsd_host\u0027 is supported in the absence of \u0027statsd_host\u0027."},{"line_number":55,"context_line":"# However, the \u0027log_\u0027 prefix is deprecated for statsd options and support will be removed in a future release."},{"line_number":56,"context_line":"# StatsD metrics are enabled if statsd_host or log_statsd_host is configured."},{"line_number":57,"context_line":"# statsd_host \u003d"},{"line_number":58,"context_line":"# statsd_port \u003d 8125"},{"line_number":59,"context_line":"# statsd_default_sample_rate \u003d 1.0"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"cb6d09fd_3b32e6f8","line":56,"range":{"start_line":50,"start_character":2,"end_line":56,"end_character":77},"in_reply_to":"70d759d9_13e44318","updated":"2024-08-06 11:46:55.000000000","message":"hmmm, do we even need the note about deprecated options at all? I can see other places in sample confs where we have retained deprecated options, but I suspect we have at other times just removed them.","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1e18fb114d89a4fefaba25235e71dad849807c46","unresolved":false,"context_lines":[{"line_number":47,"context_line":"# log_udp_port \u003d 514"},{"line_number":48,"context_line":"#"},{"line_number":49,"context_line":"# You can enable StatsD logging here:"},{"line_number":50,"context_line":"# For backwards compatibility the following options may also be configured using"},{"line_number":51,"context_line":"# the same option name with a \u0027log_\u0027 prefix:"},{"line_number":52,"context_line":"#     statsd_host, statsd_port, statsd_default_sample_rate,"},{"line_number":53,"context_line":"#     statsd_sample_rate_factor, statsd_metric_prefix"},{"line_number":54,"context_line":"# For example, \u0027log_statsd_host\u0027 is supported in the absence of \u0027statsd_host\u0027."},{"line_number":55,"context_line":"# However, the \u0027log_\u0027 prefix is deprecated for statsd options and support will be removed in a future release."},{"line_number":56,"context_line":"# StatsD metrics are enabled if statsd_host or log_statsd_host is configured."},{"line_number":57,"context_line":"# statsd_host \u003d"},{"line_number":58,"context_line":"# statsd_port \u003d 8125"},{"line_number":59,"context_line":"# statsd_default_sample_rate \u003d 1.0"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"ee235761_979c53d3","line":56,"range":{"start_line":50,"start_character":2,"end_line":56,"end_character":77},"in_reply_to":"7eb21d5f_40c27027","updated":"2024-08-12 11:16:38.000000000","message":"re:  statsd_default_sample_rate - yes, but maybe another patch to avoid scope-creep on this one","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"47895a5c90d09e6d0477b3582f35405dfe469dfa","unresolved":true,"context_lines":[{"line_number":47,"context_line":"# log_udp_port \u003d 514"},{"line_number":48,"context_line":"#"},{"line_number":49,"context_line":"# You can enable StatsD logging here:"},{"line_number":50,"context_line":"# For backwards compatibility the following options may also be configured using"},{"line_number":51,"context_line":"# the same option name with a \u0027log_\u0027 prefix:"},{"line_number":52,"context_line":"#     statsd_host, statsd_port, statsd_default_sample_rate,"},{"line_number":53,"context_line":"#     statsd_sample_rate_factor, statsd_metric_prefix"},{"line_number":54,"context_line":"# For example, \u0027log_statsd_host\u0027 is supported in the absence of \u0027statsd_host\u0027."},{"line_number":55,"context_line":"# However, the \u0027log_\u0027 prefix is deprecated for statsd options and support will be removed in a future release."},{"line_number":56,"context_line":"# StatsD metrics are enabled if statsd_host or log_statsd_host is configured."},{"line_number":57,"context_line":"# statsd_host \u003d"},{"line_number":58,"context_line":"# statsd_port \u003d 8125"},{"line_number":59,"context_line":"# statsd_default_sample_rate \u003d 1.0"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"7eb21d5f_40c27027","line":56,"range":{"start_line":50,"start_character":2,"end_line":56,"end_character":77},"in_reply_to":"cb6d09fd_3b32e6f8","updated":"2024-08-08 14:50:32.000000000","message":"I think I\u0027d be fine with that. Old configs still work, but will give a deprecation pointing to the new way, and there\u0027s no confusing new ops by mentioning old options which can be entirely served by a different, preferred set of options.\n\nI\u0027m almost tempted to say we could do similar with `statsd_default_sample_rate`: remove it from sample configs and issue deprecation warnings if we see it...","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"}],"etc/internal-client.conf-sample":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bc01f7c2a5858c1c29ac3e48a5c9ceb651080e05","unresolved":true,"context_lines":[{"line_number":43,"context_line":"# See proxy-server.conf-sample for options"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"[filter:proxy-logging]"},{"line_number":46,"context_line":"use \u003d egg:swift#proxy_logging"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"[filter:catch_errors]"},{"line_number":49,"context_line":"use \u003d egg:swift#catch_errors"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"63a23f59_f4f6ef4b","line":46,"updated":"2024-06-27 09:16:23.000000000","message":"drive-by: repeat the reference to proxy-server conf here:\n\n```\n# See proxy-server.conf-sample for options\n```","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"d782a5156812d1f85ec6308056e437b28f26aca1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"# See proxy-server.conf-sample for options"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"[filter:proxy-logging]"},{"line_number":46,"context_line":"use \u003d egg:swift#proxy_logging"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"[filter:catch_errors]"},{"line_number":49,"context_line":"use \u003d egg:swift#catch_errors"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"89f133f2_eb65d46e","line":46,"in_reply_to":"63a23f59_f4f6ef4b","updated":"2024-06-27 16:01:03.000000000","message":"Acknowledged","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"}],"etc/object-expirer.conf-sample":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bc01f7c2a5858c1c29ac3e48a5c9ceb651080e05","unresolved":true,"context_lines":[{"line_number":128,"context_line":"# See proxy-server.conf-sample for options"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"[filter:proxy-logging]"},{"line_number":131,"context_line":"use \u003d egg:swift#proxy_logging"},{"line_number":132,"context_line":"# If not set, logging directives from [DEFAULT] without \"access_\" will be used"},{"line_number":133,"context_line":"# access_log_name \u003d swift"},{"line_number":134,"context_line":"# access_log_facility \u003d LOG_LOCAL0"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"84b9bdd1_79904dd9","line":131,"updated":"2024-06-27 09:16:23.000000000","message":"in ``internal-client.conf-sample`` we have nothing in this section\n\nI wonder whether both here and in ``internal-client.conf-sample`` we could simply point to ``proxy-server.conf-sample`` same as other filter sections do i.e.\n\n```\n# See proxy-server.conf-sample for options\n```\n\nand thereby reduce repeated documentation.","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"c25b2f6038731c85d4cd379c3306681deb066037","unresolved":false,"context_lines":[{"line_number":128,"context_line":"# See proxy-server.conf-sample for options"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"[filter:proxy-logging]"},{"line_number":131,"context_line":"use \u003d egg:swift#proxy_logging"},{"line_number":132,"context_line":"# If not set, logging directives from [DEFAULT] without \"access_\" will be used"},{"line_number":133,"context_line":"# access_log_name \u003d swift"},{"line_number":134,"context_line":"# access_log_facility \u003d LOG_LOCAL0"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9c755bd9_bf528edc","line":131,"in_reply_to":"84b9bdd1_79904dd9","updated":"2024-07-16 19:21:53.000000000","message":"Done","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"}],"etc/proxy-server.conf-sample":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1fc7beb5dae42bb090ae1e4fab7a52e10fa08e56","unresolved":true,"context_lines":[{"line_number":991,"context_line":"# access_log_name \u003d swift"},{"line_number":992,"context_line":"# access_log_facility \u003d LOG_LOCAL0"},{"line_number":993,"context_line":"# access_log_level \u003d INFO"},{"line_number":994,"context_line":"# access_log_address \u003d /dev/log"},{"line_number":995,"context_line":"#"},{"line_number":996,"context_line":"# Log route for this filter. Useful if you want to have different configs for"},{"line_number":997,"context_line":"# the two proxy-logging filters."}],"source_content_type":"application/octet-stream","patch_set":9,"id":"ed006c9e_591d086f","line":994,"updated":"2024-08-06 11:46:55.000000000","message":"AFAICT this is not supported for proxy_logging - in the absence of ``udp_`` options, ``/dev/log`` will be used.","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"896f345b5d8d0130de7d8225f55983936fd21d6e","unresolved":false,"context_lines":[{"line_number":991,"context_line":"# access_log_name \u003d swift"},{"line_number":992,"context_line":"# access_log_facility \u003d LOG_LOCAL0"},{"line_number":993,"context_line":"# access_log_level \u003d INFO"},{"line_number":994,"context_line":"# access_log_address \u003d /dev/log"},{"line_number":995,"context_line":"#"},{"line_number":996,"context_line":"# Log route for this filter. Useful if you want to have different configs for"},{"line_number":997,"context_line":"# the two proxy-logging filters."}],"source_content_type":"application/octet-stream","patch_set":9,"id":"177515d5_841c78bc","line":994,"in_reply_to":"178329ea_771f9386","updated":"2024-09-02 14:32:50.000000000","message":"this was just an off-topic note\nhttps://bugs.launchpad.net/swift/+bug/2078706","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":991,"context_line":"# access_log_name \u003d swift"},{"line_number":992,"context_line":"# access_log_facility \u003d LOG_LOCAL0"},{"line_number":993,"context_line":"# access_log_level \u003d INFO"},{"line_number":994,"context_line":"# access_log_address \u003d /dev/log"},{"line_number":995,"context_line":"#"},{"line_number":996,"context_line":"# Log route for this filter. Useful if you want to have different configs for"},{"line_number":997,"context_line":"# the two proxy-logging filters."}],"source_content_type":"application/octet-stream","patch_set":9,"id":"178329ea_771f9386","line":994,"in_reply_to":"ed006c9e_591d086f","updated":"2024-08-14 14:14:57.000000000","message":"were you suggesting the documented  but ignored config value should be removed in *this* change!?  Or just trying to point out an inconsistency with our example configs?\n\nIt looks like somehow access_log_address isn\u0027t used when calling get_logger in proxy logging because of how it whitelists config values - i.e. it\u0027s probably just a proxy-logging logger configuration bug and the documentation *is* how we expected it to work","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6807b99f9d4b2089285a1304963c2bf6b5e51d01","unresolved":true,"context_lines":[{"line_number":1030,"context_line":"#"},{"line_number":1031,"context_line":"# What HTTP methods are allowed for StatsD logging (comma-sep); request methods"},{"line_number":1032,"context_line":"# not in this list will have \"BAD_METHOD\" for the \u003cverb\u003e portion of the metric."},{"line_number":1033,"context_line":"# statsd_valid_http_methods \u003d GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS"},{"line_number":1034,"context_line":"#"},{"line_number":1035,"context_line":"# Hashing algorithm for log anonymization. Must be one of algorithms supported"},{"line_number":1036,"context_line":"# by Python\u0027s hashlib."}],"source_content_type":"application/octet-stream","patch_set":9,"id":"b7a57f5f_d34f2530","line":1033,"updated":"2024-08-06 00:23:01.000000000","message":"Nope! We didn\u0027t update this guy yet.","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1fc7beb5dae42bb090ae1e4fab7a52e10fa08e56","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"#"},{"line_number":1031,"context_line":"# What HTTP methods are allowed for StatsD logging (comma-sep); request methods"},{"line_number":1032,"context_line":"# not in this list will have \"BAD_METHOD\" for the \u003cverb\u003e portion of the metric."},{"line_number":1033,"context_line":"# statsd_valid_http_methods \u003d GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS"},{"line_number":1034,"context_line":"#"},{"line_number":1035,"context_line":"# Hashing algorithm for log anonymization. Must be one of algorithms supported"},{"line_number":1036,"context_line":"# by Python\u0027s hashlib."}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3c7abe0c_d1628b97","line":1033,"in_reply_to":"b7a57f5f_d34f2530","updated":"2024-08-06 11:46:55.000000000","message":"Done","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":991,"context_line":"# access_log_name \u003d swift"},{"line_number":992,"context_line":"# access_log_facility \u003d LOG_LOCAL0"},{"line_number":993,"context_line":"# access_log_level \u003d INFO"},{"line_number":994,"context_line":"# access_log_address \u003d /dev/log"},{"line_number":995,"context_line":"#"},{"line_number":996,"context_line":"# Log route for this filter. Useful if you want to have different configs for"},{"line_number":997,"context_line":"# the two proxy-logging filters."}],"source_content_type":"application/octet-stream","patch_set":11,"id":"c7af9d2e_5e6fd7a4","side":"PARENT","line":994,"updated":"2024-08-14 14:14:57.000000000","message":"I saw an earlier comment where Al noticed this isn\u0027t being properly congiured, but I see lots of places where log_address is provided as an example config option - I think it might be better to leave this line alone for this change (which should be mostly just s/log_statsd_/statsd_/g) and have a \"remove all/unused *log_address options (or fix proxy-logging config bugs?) as a follow-up change if needed.","commit_id":"c581f85b7f6255895e5e58c40dbb394e331637c3"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"896f345b5d8d0130de7d8225f55983936fd21d6e","unresolved":false,"context_lines":[{"line_number":991,"context_line":"# access_log_name \u003d swift"},{"line_number":992,"context_line":"# access_log_facility \u003d LOG_LOCAL0"},{"line_number":993,"context_line":"# access_log_level \u003d INFO"},{"line_number":994,"context_line":"# access_log_address \u003d /dev/log"},{"line_number":995,"context_line":"#"},{"line_number":996,"context_line":"# Log route for this filter. Useful if you want to have different configs for"},{"line_number":997,"context_line":"# the two proxy-logging filters."}],"source_content_type":"application/octet-stream","patch_set":11,"id":"a7597c56_fbc48808","side":"PARENT","line":994,"in_reply_to":"c7af9d2e_5e6fd7a4","updated":"2024-09-02 14:32:50.000000000","message":"log_address IS supported by get_logger(), it\u0027s just that proxy_logging does not copy it from the wsgi conf into the conf dict that it passes to get_logger()\n\nIt\u0027s off-topic though, so yeah I should leave it alone.\n\nwrote a bug report https://bugs.launchpad.net/swift/+bug/2078706","commit_id":"c581f85b7f6255895e5e58c40dbb394e331637c3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":1003,"context_line":"#"},{"line_number":1004,"context_line":"# What HTTP methods are allowed for StatsD logging (comma-sep); request methods"},{"line_number":1005,"context_line":"# not in this list will have \"BAD_METHOD\" for the \u003cverb\u003e portion of the metric."},{"line_number":1006,"context_line":"# log_statsd_valid_http_methods \u003d GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS"},{"line_number":1007,"context_line":"#"},{"line_number":1008,"context_line":"# Log route for this filter. Useful if you want to have different configs for"},{"line_number":1009,"context_line":"# the two proxy-logging filters. Default is \u0027proxy-access\u0027."}],"source_content_type":"application/octet-stream","patch_set":11,"id":"ff74d315_fe0188a0","line":1006,"updated":"2024-08-14 14:14:57.000000000","message":"this is obviously more of a proxy logging config option than a statsd_client config option; it seems there was lot of discussion about how to handle this and the conclusion was to handle in a follow-up:\n\n926131: proxy_logging: deprecate [access_]log_statsd_valid_http_methods option | https://review.opendev.org/c/openstack/swift/+/926131\n\nAs such I think it would be best if *this* change did not move the documentation.","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"896f345b5d8d0130de7d8225f55983936fd21d6e","unresolved":false,"context_lines":[{"line_number":1003,"context_line":"#"},{"line_number":1004,"context_line":"# What HTTP methods are allowed for StatsD logging (comma-sep); request methods"},{"line_number":1005,"context_line":"# not in this list will have \"BAD_METHOD\" for the \u003cverb\u003e portion of the metric."},{"line_number":1006,"context_line":"# log_statsd_valid_http_methods \u003d GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS"},{"line_number":1007,"context_line":"#"},{"line_number":1008,"context_line":"# Log route for this filter. Useful if you want to have different configs for"},{"line_number":1009,"context_line":"# the two proxy-logging filters. Default is \u0027proxy-access\u0027."}],"source_content_type":"application/octet-stream","patch_set":11,"id":"59c7f831_3bb7e26b","line":1006,"in_reply_to":"ff74d315_fe0188a0","updated":"2024-09-02 14:32:50.000000000","message":"Done","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":1007,"context_line":"#"},{"line_number":1008,"context_line":"# Log route for this filter. Useful if you want to have different configs for"},{"line_number":1009,"context_line":"# the two proxy-logging filters. Default is \u0027proxy-access\u0027."},{"line_number":1010,"context_line":"# access_log_route \u003d proxy-access"},{"line_number":1011,"context_line":"#"},{"line_number":1012,"context_line":"# Enable headers to be included in the log line."},{"line_number":1013,"context_line":"# access_log_headers \u003d false"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"11cc4adf_2821156e","line":1010,"updated":"2024-08-14 14:14:57.000000000","message":"why move this so it\u0027s sandwhiches the statsd_ options between access_log_ options?","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"2918dcfe9abbdb4d0f7a7d3fa3c5b88cdc29b333","unresolved":true,"context_lines":[{"line_number":1007,"context_line":"#"},{"line_number":1008,"context_line":"# Log route for this filter. Useful if you want to have different configs for"},{"line_number":1009,"context_line":"# the two proxy-logging filters. Default is \u0027proxy-access\u0027."},{"line_number":1010,"context_line":"# access_log_route \u003d proxy-access"},{"line_number":1011,"context_line":"#"},{"line_number":1012,"context_line":"# Enable headers to be included in the log line."},{"line_number":1013,"context_line":"# access_log_headers \u003d false"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"2aeff7da_d4ca013c","line":1010,"in_reply_to":"11cc4adf_2821156e","updated":"2024-08-29 14:08:07.000000000","message":"Agree","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"896f345b5d8d0130de7d8225f55983936fd21d6e","unresolved":true,"context_lines":[{"line_number":1007,"context_line":"#"},{"line_number":1008,"context_line":"# Log route for this filter. Useful if you want to have different configs for"},{"line_number":1009,"context_line":"# the two proxy-logging filters. Default is \u0027proxy-access\u0027."},{"line_number":1010,"context_line":"# access_log_route \u003d proxy-access"},{"line_number":1011,"context_line":"#"},{"line_number":1012,"context_line":"# Enable headers to be included in the log line."},{"line_number":1013,"context_line":"# access_log_headers \u003d false"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"4204c066_4054beb1","line":1010,"in_reply_to":"2aeff7da_d4ca013c","updated":"2024-09-02 14:32:50.000000000","message":"The ``access_log_`` / ``statsd`` sandwich already exists, because up next is ``access_log_headers``. I was trying to better distinguish the ``access_*`` options that may also be parsed without the ``access_`` prefix, from the ``access_*`` options that are *only* parsed with the ``access_`` prefix. ``access_log_route`` is of the latter type and is not treated in the same way as ``access_log_[name|facility|level|udp_host|udp_port]`` i.e. just ``log_route`` is never parsed. So it didn\u0027t make sense to me to have it embedded in the middle of the ``access_log_[name|facility|level|udp_host|udp_port]`` options which are also parsed without the ``access_`` prefix.\n\nMy thinking was to arrange the options in batches of:\n\n* options passed in conf dict to get_logger\n* options passed in conf dict to get_statsd_client\n* proxy-logging specific (with ``access_log_route`` being the first of these)\n\nThat said, ``access_log_route`` IS associated with the logger, so I\u0027ll move it back up closer to the other logging options.","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"}],"swift/common/middleware/proxy_logging.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6360aa502d69aff3b0f76615a8d2e54f9804f4ad","unresolved":true,"context_lines":[{"line_number":137,"context_line":"                \u0027statsd_valid_http_methods\u0027, conf.get("},{"line_number":138,"context_line":"                    \u0027access_log_statsd_valid_http_methods\u0027, conf.get("},{"line_number":139,"context_line":"                        \u0027log_statsd_valid_http_methods\u0027,"},{"line_number":140,"context_line":"                        \u0027GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS\u0027))))"},{"line_number":141,"context_line":"        self.valid_methods \u003d [m.strip().upper() for m in"},{"line_number":142,"context_line":"                              self.valid_methods.split(\u0027,\u0027) if m.strip()]"},{"line_number":143,"context_line":"        access_log_conf \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"a3f48d00_7b7669b5","line":140,"updated":"2024-06-24 21:11:48.000000000","message":"I must admit, I rather hate this. Going from two to **four** potential option names, with (what seems to me) a really convoluted order of preference?\n\nHow do we feel about the `access_` prefix? Do we like it or hate it? I\u0027d *vastly* prefer to only add the one new `statsd_valid_http_methods` option and emit a warning if we see `log_statsd_valid_http_methods` or `access_log_statsd_valid_http_methods`","commit_id":"b74c760a276c7b03095283460355e8e3f203ed59"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bc01f7c2a5858c1c29ac3e48a5c9ceb651080e05","unresolved":true,"context_lines":[{"line_number":137,"context_line":"                \u0027statsd_valid_http_methods\u0027, conf.get("},{"line_number":138,"context_line":"                    \u0027access_log_statsd_valid_http_methods\u0027, conf.get("},{"line_number":139,"context_line":"                        \u0027log_statsd_valid_http_methods\u0027,"},{"line_number":140,"context_line":"                        \u0027GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS\u0027))))"},{"line_number":141,"context_line":"        self.valid_methods \u003d [m.strip().upper() for m in"},{"line_number":142,"context_line":"                              self.valid_methods.split(\u0027,\u0027) if m.strip()]"},{"line_number":143,"context_line":"        access_log_conf \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"ed05dcfe_fd312b16","line":140,"in_reply_to":"a3f48d00_7b7669b5","updated":"2024-06-27 09:16:23.000000000","message":"+1 \n\nSeems like ``access_log_statsd_valid_http_methods`` was supported in case the ``access_`` prefix was mistakenly used. ``log_statsd_valid_http_methods`` was always the intended name. With our current thinking, the ``log_`` part was also unnecessary. But we have to continue to support ``access_log_statsd_valid_http_methods`` and ``log_statsd_valid_http_methods``.\n\nWe now want to support the modern ``statsd_valid_http_methods``.\n\nQuestion is do we feel we need to repeat the allowance for somebody mistakenly typing ``access_statsd_valid_http_methods``? I would say no, and note that there are other options that do not allow for the mistaken ``access_`` prefix e.g. ``reveal_sensitive_prefix``, ``log_anonymization_method``. So ``access_log_anonymization_method`` would be ignored.","commit_id":"b74c760a276c7b03095283460355e8e3f203ed59"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"c25b2f6038731c85d4cd379c3306681deb066037","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                \u0027statsd_valid_http_methods\u0027, conf.get("},{"line_number":138,"context_line":"                    \u0027access_log_statsd_valid_http_methods\u0027, conf.get("},{"line_number":139,"context_line":"                        \u0027log_statsd_valid_http_methods\u0027,"},{"line_number":140,"context_line":"                        \u0027GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS\u0027))))"},{"line_number":141,"context_line":"        self.valid_methods \u003d [m.strip().upper() for m in"},{"line_number":142,"context_line":"                              self.valid_methods.split(\u0027,\u0027) if m.strip()]"},{"line_number":143,"context_line":"        access_log_conf \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"7460593f_141ae948","line":140,"in_reply_to":"ed05dcfe_fd312b16","updated":"2024-07-16 19:21:53.000000000","message":"Resolved","commit_id":"b74c760a276c7b03095283460355e8e3f203ed59"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6360aa502d69aff3b0f76615a8d2e54f9804f4ad","unresolved":true,"context_lines":[{"line_number":153,"context_line":"            value \u003d conf.get(\u0027access_\u0027 + key, conf.get(key, None))"},{"line_number":154,"context_line":"            if value:"},{"line_number":155,"context_line":"                access_log_conf[key] \u003d value"},{"line_number":156,"context_line":"            key \u003d \u0027log_\u0027 + key"},{"line_number":157,"context_line":"            value \u003d conf.get(\u0027access_\u0027 + key, conf.get(key, None))"},{"line_number":158,"context_line":"            if value:"},{"line_number":159,"context_line":"                access_log_conf[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":1,"id":"fde67a57_1136b36d","line":156,"updated":"2024-06-24 21:11:48.000000000","message":"I wonder if it would be better to do something like\n```\nfor key, value in list(conf.items()):\n    if key.startswith(\u0027access_`):\n        conf[key[7:]] \u003d value\n```\nearly on (like, before we read off `log_headers`).\n\nWhich way do we actually *want* operators to configure these? FWIW, [we already document the funniness involving `set \u003coption\u003e \u003d \u003cvalue\u003e`](https://docs.openstack.org/swift/latest/deployment_guide.html#general-server-configuration)\n\nOr maybe long-term, we want to move away from PasteDeploy -- the `set` business [isn\u0027t the first time](https://review.opendev.org/c/openstack/swift/+/879513) we\u0027ve been put out by their parsing, it\u0027s been a [chronically-neglected project](https://lists.openstack.org/archives/list/openstack-discuss@lists.openstack.org/thread/XSXPB7AS7ATEBCTNJZCCHHCGKOW4JFIR/), [the docs site](https://docs.pylonsproject.org/projects/pastedeploy/en/latest/) currently 404s...\n\nIf we do *that*, can we get ourselves to a spot where we actually *like* our configs, and even if we still have to be able to read the old way, at least we could have a single form that we *could actually recommend*.","commit_id":"b74c760a276c7b03095283460355e8e3f203ed59"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"c25b2f6038731c85d4cd379c3306681deb066037","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            value \u003d conf.get(\u0027access_\u0027 + key, conf.get(key, None))"},{"line_number":154,"context_line":"            if value:"},{"line_number":155,"context_line":"                access_log_conf[key] \u003d value"},{"line_number":156,"context_line":"            key \u003d \u0027log_\u0027 + key"},{"line_number":157,"context_line":"            value \u003d conf.get(\u0027access_\u0027 + key, conf.get(key, None))"},{"line_number":158,"context_line":"            if value:"},{"line_number":159,"context_line":"                access_log_conf[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":1,"id":"a7457283_b463171d","line":156,"in_reply_to":"66ef9df0_f79adb7b","updated":"2024-07-16 19:21:53.000000000","message":"Resolved on call","commit_id":"b74c760a276c7b03095283460355e8e3f203ed59"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8a8a7ae6e7d31d4d27db3b946054d602cc591559","unresolved":true,"context_lines":[{"line_number":153,"context_line":"            value \u003d conf.get(\u0027access_\u0027 + key, conf.get(key, None))"},{"line_number":154,"context_line":"            if value:"},{"line_number":155,"context_line":"                access_log_conf[key] \u003d value"},{"line_number":156,"context_line":"            key \u003d \u0027log_\u0027 + key"},{"line_number":157,"context_line":"            value \u003d conf.get(\u0027access_\u0027 + key, conf.get(key, None))"},{"line_number":158,"context_line":"            if value:"},{"line_number":159,"context_line":"                access_log_conf[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":1,"id":"66ef9df0_f79adb7b","line":156,"in_reply_to":"b8e3fbcf_d75b164c","updated":"2024-07-09 16:31:10.000000000","message":"Offline conversation concluded that we should add support for ``statsd_host`` but NOT ``access_statsd_host`` etc\n\nOps that want to override the default ``statsd_host`` should use ``set statsd_host``. \n\nThe ``access_*`` pattern was unnecessary given the ``set`` syntax and we can deprecate it.","commit_id":"b74c760a276c7b03095283460355e8e3f203ed59"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bc01f7c2a5858c1c29ac3e48a5c9ceb651080e05","unresolved":true,"context_lines":[{"line_number":153,"context_line":"            value \u003d conf.get(\u0027access_\u0027 + key, conf.get(key, None))"},{"line_number":154,"context_line":"            if value:"},{"line_number":155,"context_line":"                access_log_conf[key] \u003d value"},{"line_number":156,"context_line":"            key \u003d \u0027log_\u0027 + key"},{"line_number":157,"context_line":"            value \u003d conf.get(\u0027access_\u0027 + key, conf.get(key, None))"},{"line_number":158,"context_line":"            if value:"},{"line_number":159,"context_line":"                access_log_conf[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":1,"id":"b8e3fbcf_d75b164c","line":156,"in_reply_to":"fde67a57_1136b36d","updated":"2024-06-27 09:16:23.000000000","message":"So the choice here, for the modern options, is either to propagate the ``access_`` prefix method to differentiate from DEFAULT, or to require the use of ``set`` to override the DEFAULT ``statsd_host`?\n\nFWIW, for me at least, the preference of DEFAULT over section-specific has never been intuitive. I expect the section specific option to override the DEFAULT.\n\nBut it is what it is, and I fear that we\u0027d inconvenience/confuse some ops if we mandated that the *only* way to override statsd_host here is to use ``set statsd_host`` syntax. So I guess I weakly prefer continuing with ``access_`` prefix.\n\n (Although now I look, ``set`` is already the *only* way for a middleware to override ``log_name`` etc.)\n\n(Curiously, in our prod proxy conf we only use ``set`` for ``set access_log_facility`` which IIUC does not need to use ``set`` since there is no DEFAULT entry.)","commit_id":"b74c760a276c7b03095283460355e8e3f203ed59"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bc01f7c2a5858c1c29ac3e48a5c9ceb651080e05","unresolved":true,"context_lines":[{"line_number":134,"context_line":"        # statsd_valid_http_methods behaves like the other statsd_*"},{"line_number":135,"context_line":"        # settings."},{"line_number":136,"context_line":"        self.valid_methods \u003d conf.get("},{"line_number":137,"context_line":"            \u0027access_statsd_valid_http_methods\u0027, conf.get("},{"line_number":138,"context_line":"                \u0027statsd_valid_http_methods\u0027, conf.get("},{"line_number":139,"context_line":"                    \u0027access_log_statsd_valid_http_methods\u0027, conf.get("},{"line_number":140,"context_line":"                        \u0027log_statsd_valid_http_methods\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"be9026d3_3760b54d","line":137,"updated":"2024-06-27 09:16:23.000000000","message":"so the *correct* option name according to the sample conf is ``log_statsd_valid_http_methods`` but the code gives preference to ``access_log_statsd_valid_http_methods``. That seems wrong.","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"c25b2f6038731c85d4cd379c3306681deb066037","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        # statsd_valid_http_methods behaves like the other statsd_*"},{"line_number":135,"context_line":"        # settings."},{"line_number":136,"context_line":"        self.valid_methods \u003d conf.get("},{"line_number":137,"context_line":"            \u0027access_statsd_valid_http_methods\u0027, conf.get("},{"line_number":138,"context_line":"                \u0027statsd_valid_http_methods\u0027, conf.get("},{"line_number":139,"context_line":"                    \u0027access_log_statsd_valid_http_methods\u0027, conf.get("},{"line_number":140,"context_line":"                        \u0027log_statsd_valid_http_methods\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"456f4dd5_d5df2534","line":137,"in_reply_to":"be9026d3_3760b54d","updated":"2024-07-16 19:21:53.000000000","message":"Resolved","commit_id":"98120c782d44a74011c41516ecd7c0db601f1e40"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"c25b2f6038731c85d4cd379c3306681deb066037","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                    \u0027statsd_sample_rate_factor\u0027,"},{"line_number":152,"context_line":"                    \u0027statsd_metric_prefix\u0027):"},{"line_number":153,"context_line":"            value \u003d conf.get(key,"},{"line_number":154,"context_line":"                             # fallback to deprecated legacy options..."},{"line_number":155,"context_line":"                             conf.get(\u0027access_log_\u0027 + key,"},{"line_number":156,"context_line":"                                      conf.get(\u0027log_\u0027 + key,"},{"line_number":157,"context_line":"                                               None)))"}],"source_content_type":"text/x-python","patch_set":6,"id":"201b5821_f6656d5a","line":154,"range":{"start_line":154,"start_character":0,"end_line":154,"end_character":71},"updated":"2024-07-16 19:21:53.000000000","message":"looks elegant and composed!","commit_id":"6ed1b4dc1076d779dcc9f87c42f5579d6a178b6a"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7e713b1a1978668fd847c1e010a41494111f5f9f","unresolved":true,"context_lines":[{"line_number":163,"context_line":"                if alt_value:"},{"line_number":164,"context_line":"                    deprecated_used.append(deprecated_key)"},{"line_number":165,"context_line":"                    if value is None:"},{"line_number":166,"context_line":"                        value \u003d alt_value"},{"line_number":167,"context_line":"            if alt_value is not None:"},{"line_number":168,"context_line":"                should_have_used.append(key)"},{"line_number":169,"context_line":"            if value:"}],"source_content_type":"text/x-python","patch_set":7,"id":"56eb874d_9707e7c5","line":166,"updated":"2024-07-25 16:45:14.000000000","message":"I want to consider the order of precedence more. What happens when an op changes their DEFAULTS to modern prefixless statsd options but NOT their proxy logging filter? They\u0027d want their access_log_ prefix options to still take precedence...","commit_id":"28f60a5897dab81744c20391fbdb9c3a56a59473"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8a8d7819a901d7fbc7d4d0504bd6b6085d2dc442","unresolved":true,"context_lines":[{"line_number":163,"context_line":"                if alt_value:"},{"line_number":164,"context_line":"                    deprecated_used.append(deprecated_key)"},{"line_number":165,"context_line":"                    if value is None:"},{"line_number":166,"context_line":"                        value \u003d alt_value"},{"line_number":167,"context_line":"            if alt_value is not None:"},{"line_number":168,"context_line":"                should_have_used.append(key)"},{"line_number":169,"context_line":"            if value:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ab149705_bec87baa","line":166,"in_reply_to":"56eb874d_9707e7c5","updated":"2024-07-26 16:36:08.000000000","message":"hmmm\n\nCurrently this patch gives precedence to the new option keys in get_statsd_client. So if statsd_host and log_statsd_host are given in DEFAULTS then statsd_host is used.\n\nIf we do the same precedence with proxy_logging (as with this patchset) then statsd_host in DEFAULTS will override access_log_statsd_host in proxy_logging, so the op has to be sure to modernize both sections at the same time.\n\ne.g. if the op had\n```\n[DEFAULTS]\nlog_statsd_host\u003dfoo\n\n[filter:proxy_logging]\naccess_log_statsd_host\u003dbar\n```\n\nthen with this patchset if the op changes to \n```\n[DEFAULTS]\nstatsd_host\u003dfoo\n\n[filter:proxy_logging]\naccess_log_statsd_host\u003dbar\n```\n\nthen proxy logging would start to wrongly use ``stasd_host\u003dfoo`` 😞\n\nSimilarly if the op had\n```\n[DEFAULTS]\nlog_statsd_host\u003dfoo\n\n[filter:proxy_logging]\nset log_statsd_host\u003dbar\n```\n\nthen with this patchset if the op changes to \n```\n[DEFAULTS]\nstatsd_host\u003dfoo\n\n[filter:proxy_logging]\nset log_statsd_host\u003dbar\n```\n\nthen proxy logging would start to wrongly use ``stasd_host\u003dfoo`` 😞\n\nBut the middleware cannot differentiate this from:\n```\n[DEFAULTS]\nlog_statsd_host\u003dbar\nstatsd_host\u003dfoo\n\n[filter:proxy_logging]\n```\nwhere proxy_logging _should_ start to use `stasd_host\u003dfoo`` 😕\n\nSo that suggests that we need to either \n1) document that ops must modernize proxy_logging section at the same time as DEFAULTS, or\n2) prefer the deprecated keys over the modern keys in proxy_logging, in which case should we do the same for consistency in DEFAULTS? But it\u0027s usual (and expected?) that when we deprecate an option the _new_ takes precedence.\n3) break hard if we detect a mix of modern and legacy statsd options\n\nAfter verbal discussion with @tburke@nvidia.com I\u0027m inclined to head in the direction of 3","commit_id":"28f60a5897dab81744c20391fbdb9c3a56a59473"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"34a706412dce49d7acf1f7fdc8fb51717d69bdf5","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                if alt_value:"},{"line_number":164,"context_line":"                    deprecated_used.append(deprecated_key)"},{"line_number":165,"context_line":"                    if value is None:"},{"line_number":166,"context_line":"                        value \u003d alt_value"},{"line_number":167,"context_line":"            if alt_value is not None:"},{"line_number":168,"context_line":"                should_have_used.append(key)"},{"line_number":169,"context_line":"            if value:"}],"source_content_type":"text/x-python","patch_set":7,"id":"d54d5084_f7cbe033","line":166,"in_reply_to":"ab149705_bec87baa","updated":"2024-07-31 09:46:04.000000000","message":"Done","commit_id":"28f60a5897dab81744c20391fbdb9c3a56a59473"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6807b99f9d4b2089285a1304963c2bf6b5e51d01","unresolved":true,"context_lines":[{"line_number":137,"context_line":"        self.valid_methods \u003d conf.get("},{"line_number":138,"context_line":"            \u0027access_log_statsd_valid_http_methods\u0027,"},{"line_number":139,"context_line":"            conf.get(\u0027log_statsd_valid_http_methods\u0027,"},{"line_number":140,"context_line":"                     \u0027GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS\u0027))"},{"line_number":141,"context_line":"        self.valid_methods \u003d [m.strip().upper() for m in"},{"line_number":142,"context_line":"                              self.valid_methods.split(\u0027,\u0027) if m.strip()]"},{"line_number":143,"context_line":"        access_log_conf \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"562f1865_dc3873ce","line":140,"updated":"2024-08-06 00:23:01.000000000","message":"What about this one? `statsd_valid_http_methods` isn\u0027t in `SUPPORTED_STATSD_OPTIONS`...\n\nWe\u0027ll probably also want to update the comment above.","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1e18fb114d89a4fefaba25235e71dad849807c46","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.valid_methods \u003d conf.get("},{"line_number":138,"context_line":"            \u0027access_log_statsd_valid_http_methods\u0027,"},{"line_number":139,"context_line":"            conf.get(\u0027log_statsd_valid_http_methods\u0027,"},{"line_number":140,"context_line":"                     \u0027GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS\u0027))"},{"line_number":141,"context_line":"        self.valid_methods \u003d [m.strip().upper() for m in"},{"line_number":142,"context_line":"                              self.valid_methods.split(\u0027,\u0027) if m.strip()]"},{"line_number":143,"context_line":"        access_log_conf \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"48227942_ab538c7a","line":140,"in_reply_to":"54fc587a_037448ed","updated":"2024-08-12 11:16:38.000000000","message":"done in follow-on patch https://review.opendev.org/c/openstack/swift/+/926131 proxy_logging: deprecate [access_]log_statsd_valid_http_methods option","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1fc7beb5dae42bb090ae1e4fab7a52e10fa08e56","unresolved":true,"context_lines":[{"line_number":137,"context_line":"        self.valid_methods \u003d conf.get("},{"line_number":138,"context_line":"            \u0027access_log_statsd_valid_http_methods\u0027,"},{"line_number":139,"context_line":"            conf.get(\u0027log_statsd_valid_http_methods\u0027,"},{"line_number":140,"context_line":"                     \u0027GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS\u0027))"},{"line_number":141,"context_line":"        self.valid_methods \u003d [m.strip().upper() for m in"},{"line_number":142,"context_line":"                              self.valid_methods.split(\u0027,\u0027) if m.strip()]"},{"line_number":143,"context_line":"        access_log_conf \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"c9d819fe_e4cbc695","line":140,"in_reply_to":"562f1865_dc3873ce","updated":"2024-08-06 11:46:55.000000000","message":"IDK what to do about this option. It\u0027s not a statsd option, it is a proxy_logging option, so as such it isn\u0027t falling under the remit of deprecating the ``log_`` prefix for statsd.\n\nBut, maybe ops will get confused because it pattern matches the other deprecations? So should we cover it just in case? If so, do we deprecate it or just add silent support for ``statsd_valid_http_methods``","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"47895a5c90d09e6d0477b3582f35405dfe469dfa","unresolved":true,"context_lines":[{"line_number":137,"context_line":"        self.valid_methods \u003d conf.get("},{"line_number":138,"context_line":"            \u0027access_log_statsd_valid_http_methods\u0027,"},{"line_number":139,"context_line":"            conf.get(\u0027log_statsd_valid_http_methods\u0027,"},{"line_number":140,"context_line":"                     \u0027GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS\u0027))"},{"line_number":141,"context_line":"        self.valid_methods \u003d [m.strip().upper() for m in"},{"line_number":142,"context_line":"                              self.valid_methods.split(\u0027,\u0027) if m.strip()]"},{"line_number":143,"context_line":"        access_log_conf \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"54fc587a_037448ed","line":140,"in_reply_to":"c9d819fe_e4cbc695","updated":"2024-08-08 14:50:32.000000000","message":"Yeah, I feel like *this* is the real sticky wicket that shows up: it\u0027s not *at all* a `StatsdClient` option, it\u0027s a proxy-logging option -- but it doesn\u0027t actually have anything to do with *logging* at all, and everything to do with *statsd emissions*.\n\nSo as written, we\u0027re pushing people to change something like\n```\naccess_log_statsd_host \u003d localhost\naccess_log_statsd_port \u003d 9125\naccess_log_statsd_valid_http_methods \u003d GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS,GREP\n```\nto\n```\nstatsd_host \u003d localhost\nstatsd_port \u003d 9125\naccess_log_statsd_valid_http_methods \u003d GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS,GREP\n```\n(or\n```\nlog_statsd_host \u003d localhost\nlog_statsd_port \u003d 9125\nlog_statsd_valid_http_methods \u003d GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS,GREP\n```\nto\n```\nstatsd_host \u003d localhost\nstatsd_port \u003d 9125\nlog_statsd_valid_http_methods \u003d GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS,GREP\n```\nI suppose) and, yeah, if it were *me*, I\u0027d be real tempted to write\n```\nstatsd_host \u003d localhost\nstatsd_port \u003d 9125\nstatsd_valid_http_methods \u003d GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS,GREP\n```\ninstead and suddenly lose my [`GREP`](https://github.com/troubling/hummingbird/blob/master/middleware/grep.go) stats...\n\nI think\n- supporting `statsd_valid_http_methods` is the right way to go\n- *silently* supporting `access_log_statsd_valid_http_methods` was always a kludge, we should have made a call then and there about how ops *should* be writing configs\n- lacking that, we should make that call *now* and emit warnings when they don\u0027t do what we expect\n- the current order of precedence makes it really hard/weird to say that it should always have been `(set )log_statsd_valid_http_methods`\n- so I\u0027m leaning toward `statsd_valid_http_methods` being the \"recommended\" config -- have it trump the other two, or even throw an error if more than one of the three is configured","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6807b99f9d4b2089285a1304963c2bf6b5e51d01","unresolved":true,"context_lines":[{"line_number":164,"context_line":"            log_route\u003dconf.get(\u0027access_log_route\u0027, \u0027proxy-access\u0027),"},{"line_number":165,"context_line":"            statsd_tail_prefix\u003d\u0027proxy-server\u0027)"},{"line_number":166,"context_line":"        if not logger:"},{"line_number":167,"context_line":"            # repeat checks to get any deprecation warnings now we have logger"},{"line_number":168,"context_line":"            cleanup_statsd_client_options("},{"line_number":169,"context_line":"                conf, \u0027log_\u0027, self.access_logger)"},{"line_number":170,"context_line":"            cleanup_statsd_client_options("}],"source_content_type":"text/x-python","patch_set":9,"id":"606d1677_58dd5665","line":167,"updated":"2024-08-06 00:23:01.000000000","message":"Sneaky! I like it.","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1fc7beb5dae42bb090ae1e4fab7a52e10fa08e56","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            log_route\u003dconf.get(\u0027access_log_route\u0027, \u0027proxy-access\u0027),"},{"line_number":165,"context_line":"            statsd_tail_prefix\u003d\u0027proxy-server\u0027)"},{"line_number":166,"context_line":"        if not logger:"},{"line_number":167,"context_line":"            # repeat checks to get any deprecation warnings now we have logger"},{"line_number":168,"context_line":"            cleanup_statsd_client_options("},{"line_number":169,"context_line":"                conf, \u0027log_\u0027, self.access_logger)"},{"line_number":170,"context_line":"            cleanup_statsd_client_options("}],"source_content_type":"text/x-python","patch_set":9,"id":"2787c40a_8939ff0a","line":167,"in_reply_to":"606d1677_58dd5665","updated":"2024-08-06 11:46:55.000000000","message":"Acknowledged","commit_id":"980eb1b603be2866d5c902cbefb88456139d29a5"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":163,"context_line":"            access_log_conf,"},{"line_number":164,"context_line":"            log_route\u003dconf.get(\u0027access_log_route\u0027, \u0027proxy-access\u0027),"},{"line_number":165,"context_line":"            statsd_tail_prefix\u003d\u0027proxy-server\u0027)"},{"line_number":166,"context_line":"        if not logger:"},{"line_number":167,"context_line":"            # repeat checks to get any deprecation warnings now we have logger"},{"line_number":168,"context_line":"            cleanup_statsd_client_options("},{"line_number":169,"context_line":"                conf, \u0027log_\u0027, self.access_logger)"}],"source_content_type":"text/x-python","patch_set":11,"id":"387d2159_f9ae387b","line":166,"updated":"2024-08-14 14:14:57.000000000","message":"oh wow...\n\nI might suggest we just *never* pass in a logger object on the first pass and always/unconditionally perform this \"repeat the cleanup for warnings\" with the result of `logger or get_logger`","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"896f345b5d8d0130de7d8225f55983936fd21d6e","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            access_log_conf,"},{"line_number":164,"context_line":"            log_route\u003dconf.get(\u0027access_log_route\u0027, \u0027proxy-access\u0027),"},{"line_number":165,"context_line":"            statsd_tail_prefix\u003d\u0027proxy-server\u0027)"},{"line_number":166,"context_line":"        if not logger:"},{"line_number":167,"context_line":"            # repeat checks to get any deprecation warnings now we have logger"},{"line_number":168,"context_line":"            cleanup_statsd_client_options("},{"line_number":169,"context_line":"                conf, \u0027log_\u0027, self.access_logger)"}],"source_content_type":"text/x-python","patch_set":11,"id":"b9b46215_dea761ff","line":166,"in_reply_to":"387d2159_f9ae387b","updated":"2024-09-02 14:32:50.000000000","message":"Done","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":36606,"name":"Yan Xiao","display_name":"Yan","email":"yanxiao@nvidia.com","username":"yanxiao"},"change_message_id":"17b5992f79b48896f06cb6919ce31ceef807c16f","unresolved":true,"context_lines":[{"line_number":156,"context_line":"        # over log_ prefix options"},{"line_number":157,"context_line":"        statsd_conf.update(cleanup_statsd_client_options(conf, \u0027access_log_\u0027))"},{"line_number":158,"context_line":"        access_log_conf.update(statsd_conf)"},{"line_number":159,"context_line":"        self.access_logger \u003d logger or get_logger("},{"line_number":160,"context_line":"            access_log_conf,"},{"line_number":161,"context_line":"            log_route\u003dconf.get(\u0027access_log_route\u0027, \u0027proxy-access\u0027),"},{"line_number":162,"context_line":"            statsd_tail_prefix\u003d\u0027proxy-server\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"f83116c1_9f0db57d","line":159,"updated":"2024-10-18 15:35:59.000000000","message":"Since there are new approaches as to how proxy-logging handles logger or statsd configs, we should probably adapt to the new approaches here if possible. An idea would be that instead of creating a subset of proxy config for logger or statsd config, we would copy the proxy-logging config and update the logger or statsd part of it. The statsd module could have an interface such as cleanup_access_log_options called by proxy-logging to update access_log_ prefix, and another interface such as deprecate_log_prefix_options which is not necessarily called by proxy-logging. cleanup_access_log_options should not be called by other middlewares since they don\u0027t support such options.","commit_id":"3453d4ee6e260e78161a730dab1f052397977338"},{"author":{"_account_id":36606,"name":"Yan Xiao","display_name":"Yan","email":"yanxiao@nvidia.com","username":"yanxiao"},"change_message_id":"17b5992f79b48896f06cb6919ce31ceef807c16f","unresolved":true,"context_lines":[{"line_number":157,"context_line":"        statsd_conf.update(cleanup_statsd_client_options(conf, \u0027access_log_\u0027))"},{"line_number":158,"context_line":"        access_log_conf.update(statsd_conf)"},{"line_number":159,"context_line":"        self.access_logger \u003d logger or get_logger("},{"line_number":160,"context_line":"            access_log_conf,"},{"line_number":161,"context_line":"            log_route\u003dconf.get(\u0027access_log_route\u0027, \u0027proxy-access\u0027),"},{"line_number":162,"context_line":"            statsd_tail_prefix\u003d\u0027proxy-server\u0027)"},{"line_number":163,"context_line":"        # repeat cleanup to get any deprecation warnings now we have logger"}],"source_content_type":"text/x-python","patch_set":14,"id":"55cec4fe_62deb6d7","line":160,"updated":"2024-10-18 15:35:59.000000000","message":"here we could probably call cleanup_access_log_options to update access_log_prefix of the copy of proxy config for logger","commit_id":"3453d4ee6e260e78161a730dab1f052397977338"},{"author":{"_account_id":36606,"name":"Yan Xiao","display_name":"Yan","email":"yanxiao@nvidia.com","username":"yanxiao"},"change_message_id":"17b5992f79b48896f06cb6919ce31ceef807c16f","unresolved":true,"context_lines":[{"line_number":165,"context_line":"            conf, \u0027log_\u0027, self.access_logger)"},{"line_number":166,"context_line":"        cleanup_statsd_client_options("},{"line_number":167,"context_line":"            conf, \u0027access_log_\u0027, self.access_logger)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        self.reveal_sensitive_prefix \u003d int("},{"line_number":170,"context_line":"            conf.get(\u0027reveal_sensitive_prefix\u0027, 16))"},{"line_number":171,"context_line":"        self.check_log_msg_template_validity()"}],"source_content_type":"text/x-python","patch_set":14,"id":"d9e8b938_81877296","line":168,"updated":"2024-10-18 15:35:59.000000000","message":"here we would call get_statsd_client with the copy of proxy config for statsd, which would handle the deprecating of log_ prefix options","commit_id":"3453d4ee6e260e78161a730dab1f052397977338"}],"swift/common/statsd_client.py":[{"author":{"_account_id":36606,"name":"Yan Xiao","display_name":"Yan","email":"yanxiao@nvidia.com","username":"yanxiao"},"change_message_id":"817b36d0f61f39893f532ae091ef7d6098039c33","unresolved":true,"context_lines":[{"line_number":47,"context_line":"                             \u0027statsd_port\u0027,"},{"line_number":48,"context_line":"                             \u0027statsd_metric_prefix\u0027,"},{"line_number":49,"context_line":"                             \u0027statsd_default_sample_rate\u0027,"},{"line_number":50,"context_line":"                             \u0027statsd_sample_rate_factor\u0027)"},{"line_number":51,"context_line":"    for key in supported_statsd_keys:"},{"line_number":52,"context_line":"        value \u003d conf.get(key, conf.get(deprecated_prefix + key))"},{"line_number":53,"context_line":"        if value:"}],"source_content_type":"text/x-python","patch_set":8,"id":"0a48dc18_a8fd1575","line":50,"updated":"2024-07-30 21:22:10.000000000","message":"should these be module level consts?","commit_id":"2bf74940870a493d44425dcd9ed10816ff0f0bd7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"34a706412dce49d7acf1f7fdc8fb51717d69bdf5","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                             \u0027statsd_port\u0027,"},{"line_number":48,"context_line":"                             \u0027statsd_metric_prefix\u0027,"},{"line_number":49,"context_line":"                             \u0027statsd_default_sample_rate\u0027,"},{"line_number":50,"context_line":"                             \u0027statsd_sample_rate_factor\u0027)"},{"line_number":51,"context_line":"    for key in supported_statsd_keys:"},{"line_number":52,"context_line":"        value \u003d conf.get(key, conf.get(deprecated_prefix + key))"},{"line_number":53,"context_line":"        if value:"}],"source_content_type":"text/x-python","patch_set":8,"id":"2f0a290a_aeb23531","line":50,"in_reply_to":"0a48dc18_a8fd1575","updated":"2024-07-31 09:46:04.000000000","message":"Done","commit_id":"2bf74940870a493d44425dcd9ed10816ff0f0bd7"},{"author":{"_account_id":36606,"name":"Yan Xiao","display_name":"Yan","email":"yanxiao@nvidia.com","username":"yanxiao"},"change_message_id":"817b36d0f61f39893f532ae091ef7d6098039c33","unresolved":true,"context_lines":[{"line_number":59,"context_line":"    if deprecated_used and logger:"},{"line_number":60,"context_line":"        logger.warning("},{"line_number":61,"context_line":"            \u0027%s options are deprecated and support may be removed in a future \u0027"},{"line_number":62,"context_line":"            \u0027release; configure %s instead\u0027"},{"line_number":63,"context_line":"            % (deprecated_used, [key[prefix_len:] for key in deprecated_used]))"},{"line_number":64,"context_line":"    deprecated_and_supported_used \u003d ["},{"line_number":65,"context_line":"        key for key in deprecated_keys"}],"source_content_type":"text/x-python","patch_set":8,"id":"1df587de_e821bfa2","line":62,"updated":"2024-07-30 21:22:10.000000000","message":"should we mention [DEFAULTS] or [filter:] sections here?","commit_id":"2bf74940870a493d44425dcd9ed10816ff0f0bd7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"34a706412dce49d7acf1f7fdc8fb51717d69bdf5","unresolved":true,"context_lines":[{"line_number":59,"context_line":"    if deprecated_used and logger:"},{"line_number":60,"context_line":"        logger.warning("},{"line_number":61,"context_line":"            \u0027%s options are deprecated and support may be removed in a future \u0027"},{"line_number":62,"context_line":"            \u0027release; configure %s instead\u0027"},{"line_number":63,"context_line":"            % (deprecated_used, [key[prefix_len:] for key in deprecated_used]))"},{"line_number":64,"context_line":"    deprecated_and_supported_used \u003d ["},{"line_number":65,"context_line":"        key for key in deprecated_keys"}],"source_content_type":"text/x-python","patch_set":8,"id":"d2684065_f2e45857","line":62,"in_reply_to":"1df587de_e821bfa2","updated":"2024-07-31 09:46:04.000000000","message":"here we don\u0027t know which section the op may be choosing to configure so we can\u0027t be prescriptive","commit_id":"2bf74940870a493d44425dcd9ed10816ff0f0bd7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1e18fb114d89a4fefaba25235e71dad849807c46","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    if deprecated_used and logger:"},{"line_number":60,"context_line":"        logger.warning("},{"line_number":61,"context_line":"            \u0027%s options are deprecated and support may be removed in a future \u0027"},{"line_number":62,"context_line":"            \u0027release; configure %s instead\u0027"},{"line_number":63,"context_line":"            % (deprecated_used, [key[prefix_len:] for key in deprecated_used]))"},{"line_number":64,"context_line":"    deprecated_and_supported_used \u003d ["},{"line_number":65,"context_line":"        key for key in deprecated_keys"}],"source_content_type":"text/x-python","patch_set":8,"id":"536abc9f_a1211854","line":62,"in_reply_to":"d2684065_f2e45857","updated":"2024-08-12 11:16:38.000000000","message":"Done","commit_id":"2bf74940870a493d44425dcd9ed10816ff0f0bd7"},{"author":{"_account_id":36606,"name":"Yan Xiao","display_name":"Yan","email":"yanxiao@nvidia.com","username":"yanxiao"},"change_message_id":"817b36d0f61f39893f532ae091ef7d6098039c33","unresolved":true,"context_lines":[{"line_number":99,"context_line":"    :raises ValueError: if conf contains both deprecated and supported versions"},{"line_number":100,"context_line":"        of the same option."},{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":"    conf \u003d cleanup_statsd_client_options(conf, \u0027log_\u0027, logger)"},{"line_number":103,"context_line":"    host \u003d conf.get(\u0027statsd_host\u0027, conf.get(\u0027log_statsd_host\u0027))"},{"line_number":104,"context_line":"    port \u003d int(conf.get(\u0027statsd_port\u0027, conf.get(\u0027log_statsd_port\u0027, 8125)))"},{"line_number":105,"context_line":"    base_prefix \u003d conf.get(\u0027statsd_metric_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"d0d67d20_ac05f36d","line":102,"updated":"2024-07-30 21:22:10.000000000","message":"seems that cleanup_statsd_client_options() is not necessary here as it\u0027s already called in proxy_logging __init__?","commit_id":"2bf74940870a493d44425dcd9ed10816ff0f0bd7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1e18fb114d89a4fefaba25235e71dad849807c46","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    :raises ValueError: if conf contains both deprecated and supported versions"},{"line_number":100,"context_line":"        of the same option."},{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":"    conf \u003d cleanup_statsd_client_options(conf, \u0027log_\u0027, logger)"},{"line_number":103,"context_line":"    host \u003d conf.get(\u0027statsd_host\u0027, conf.get(\u0027log_statsd_host\u0027))"},{"line_number":104,"context_line":"    port \u003d int(conf.get(\u0027statsd_port\u0027, conf.get(\u0027log_statsd_port\u0027, 8125)))"},{"line_number":105,"context_line":"    base_prefix \u003d conf.get(\u0027statsd_metric_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"52c80081_94c4811e","line":102,"in_reply_to":"3aa2f8c3_1b63b335","updated":"2024-08-12 11:16:38.000000000","message":"Done","commit_id":"2bf74940870a493d44425dcd9ed10816ff0f0bd7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"34a706412dce49d7acf1f7fdc8fb51717d69bdf5","unresolved":true,"context_lines":[{"line_number":99,"context_line":"    :raises ValueError: if conf contains both deprecated and supported versions"},{"line_number":100,"context_line":"        of the same option."},{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":"    conf \u003d cleanup_statsd_client_options(conf, \u0027log_\u0027, logger)"},{"line_number":103,"context_line":"    host \u003d conf.get(\u0027statsd_host\u0027, conf.get(\u0027log_statsd_host\u0027))"},{"line_number":104,"context_line":"    port \u003d int(conf.get(\u0027statsd_port\u0027, conf.get(\u0027log_statsd_port\u0027, 8125)))"},{"line_number":105,"context_line":"    base_prefix \u003d conf.get(\u0027statsd_metric_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aa2f8c3_1b63b335","line":102,"in_reply_to":"d0d67d20_ac05f36d","updated":"2024-07-31 09:46:04.000000000","message":"``proxy_logging`` is not going to be the only caller of this method, so we need to call this here for the general case.\n\nWe also need to use this method in the special case of ``proxy_logging`` because of the need to cleanup the access_log_ prefix.","commit_id":"2bf74940870a493d44425dcd9ed10816ff0f0bd7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"34a706412dce49d7acf1f7fdc8fb51717d69bdf5","unresolved":true,"context_lines":[{"line_number":100,"context_line":"        of the same option."},{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":"    conf \u003d cleanup_statsd_client_options(conf, \u0027log_\u0027, logger)"},{"line_number":103,"context_line":"    host \u003d conf.get(\u0027statsd_host\u0027, conf.get(\u0027log_statsd_host\u0027))"},{"line_number":104,"context_line":"    port \u003d int(conf.get(\u0027statsd_port\u0027, conf.get(\u0027log_statsd_port\u0027, 8125)))"},{"line_number":105,"context_line":"    base_prefix \u003d conf.get(\u0027statsd_metric_prefix\u0027,"},{"line_number":106,"context_line":"                           conf.get(\u0027log_statsd_metric_prefix\u0027, \u0027\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"93da7a8c_a5731309","line":103,"updated":"2024-07-31 09:46:04.000000000","message":"-1 it\u0027s no longer necessary to fallback to the deprecated keys here","commit_id":"2bf74940870a493d44425dcd9ed10816ff0f0bd7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1fc7beb5dae42bb090ae1e4fab7a52e10fa08e56","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        of the same option."},{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":"    conf \u003d cleanup_statsd_client_options(conf, \u0027log_\u0027, logger)"},{"line_number":103,"context_line":"    host \u003d conf.get(\u0027statsd_host\u0027, conf.get(\u0027log_statsd_host\u0027))"},{"line_number":104,"context_line":"    port \u003d int(conf.get(\u0027statsd_port\u0027, conf.get(\u0027log_statsd_port\u0027, 8125)))"},{"line_number":105,"context_line":"    base_prefix \u003d conf.get(\u0027statsd_metric_prefix\u0027,"},{"line_number":106,"context_line":"                           conf.get(\u0027log_statsd_metric_prefix\u0027, \u0027\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"e713f87c_0dcb0ba6","line":103,"in_reply_to":"93da7a8c_a5731309","updated":"2024-08-06 11:46:55.000000000","message":"Done","commit_id":"2bf74940870a493d44425dcd9ed10816ff0f0bd7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    conf \u003d conf or {}"},{"line_number":51,"context_line":"    clean_conf \u003d {}"},{"line_number":52,"context_line":"    for key in SUPPORTED_STATSD_OPTIONS:"},{"line_number":53,"context_line":"        value \u003d conf.get(key, conf.get(deprecated_prefix + key))"},{"line_number":54,"context_line":"        if value:"},{"line_number":55,"context_line":"            clean_conf[key] \u003d value"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"e36571f5_d7ad4a71","line":53,"updated":"2024-08-14 14:14:57.000000000","message":"it looks like we\u0027re already getting the precedent of supported vs deprecated values correct","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"896f345b5d8d0130de7d8225f55983936fd21d6e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    conf \u003d conf or {}"},{"line_number":51,"context_line":"    clean_conf \u003d {}"},{"line_number":52,"context_line":"    for key in SUPPORTED_STATSD_OPTIONS:"},{"line_number":53,"context_line":"        value \u003d conf.get(key, conf.get(deprecated_prefix + key))"},{"line_number":54,"context_line":"        if value:"},{"line_number":55,"context_line":"            clean_conf[key] \u003d value"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"02944b2f_65cf26c1","line":53,"in_reply_to":"7d45aecd_6f84c186","updated":"2024-09-02 14:32:50.000000000","message":"Acknowledged","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"2918dcfe9abbdb4d0f7a7d3fa3c5b88cdc29b333","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    conf \u003d conf or {}"},{"line_number":51,"context_line":"    clean_conf \u003d {}"},{"line_number":52,"context_line":"    for key in SUPPORTED_STATSD_OPTIONS:"},{"line_number":53,"context_line":"        value \u003d conf.get(key, conf.get(deprecated_prefix + key))"},{"line_number":54,"context_line":"        if value:"},{"line_number":55,"context_line":"            clean_conf[key] \u003d value"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7d45aecd_6f84c186","line":53,"in_reply_to":"e36571f5_d7ad4a71","updated":"2024-08-29 14:08:07.000000000","message":"Yep","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    for key in SUPPORTED_STATSD_OPTIONS:"},{"line_number":53,"context_line":"        value \u003d conf.get(key, conf.get(deprecated_prefix + key))"},{"line_number":54,"context_line":"        if value:"},{"line_number":55,"context_line":"            clean_conf[key] \u003d value"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    deprecated_keys \u003d [deprecated_prefix + key"},{"line_number":58,"context_line":"                       for key in SUPPORTED_STATSD_OPTIONS]"}],"source_content_type":"text/x-python","patch_set":11,"id":"4357627f_e3f056ce","line":55,"updated":"2024-08-14 14:14:57.000000000","message":"it looks like we only ever put supported keys in the clean_conf","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"2918dcfe9abbdb4d0f7a7d3fa3c5b88cdc29b333","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    for key in SUPPORTED_STATSD_OPTIONS:"},{"line_number":53,"context_line":"        value \u003d conf.get(key, conf.get(deprecated_prefix + key))"},{"line_number":54,"context_line":"        if value:"},{"line_number":55,"context_line":"            clean_conf[key] \u003d value"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    deprecated_keys \u003d [deprecated_prefix + key"},{"line_number":58,"context_line":"                       for key in SUPPORTED_STATSD_OPTIONS]"}],"source_content_type":"text/x-python","patch_set":11,"id":"54c3f8d8_4d1305e6","line":55,"in_reply_to":"4357627f_e3f056ce","updated":"2024-08-29 14:08:07.000000000","message":"Yep, looks like it","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"896f345b5d8d0130de7d8225f55983936fd21d6e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    for key in SUPPORTED_STATSD_OPTIONS:"},{"line_number":53,"context_line":"        value \u003d conf.get(key, conf.get(deprecated_prefix + key))"},{"line_number":54,"context_line":"        if value:"},{"line_number":55,"context_line":"            clean_conf[key] \u003d value"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    deprecated_keys \u003d [deprecated_prefix + key"},{"line_number":58,"context_line":"                       for key in SUPPORTED_STATSD_OPTIONS]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ffb1d08e_97f5887c","line":55,"in_reply_to":"54c3f8d8_4d1305e6","updated":"2024-09-02 14:32:50.000000000","message":"Acknowledged","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":74,"context_line":"            % ([(key[prefix_len:], key)"},{"line_number":75,"context_line":"                for key in deprecated_and_supported_used],"},{"line_number":76,"context_line":"               [key[prefix_len:]"},{"line_number":77,"context_line":"                for key in deprecated_and_supported_used]))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    return clean_conf"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9ed7ab29_ec1ced04","line":77,"updated":"2024-08-14 14:14:57.000000000","message":"I think we should be able to combine these loops:\n\n```\nfor key in deprecated_used:\n  if key in supported_used:\n    warn(\u0027ignored use of deprecated in favor of supported\u0027)\n  else:\n    warn(\u0027used deprecated; please configure supported\u0027)\n```\n\nand no value errors!","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"2918dcfe9abbdb4d0f7a7d3fa3c5b88cdc29b333","unresolved":true,"context_lines":[{"line_number":74,"context_line":"            % ([(key[prefix_len:], key)"},{"line_number":75,"context_line":"                for key in deprecated_and_supported_used],"},{"line_number":76,"context_line":"               [key[prefix_len:]"},{"line_number":77,"context_line":"                for key in deprecated_and_supported_used]))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    return clean_conf"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"e23a6352_12489ac0","line":77,"in_reply_to":"9ed7ab29_ec1ced04","updated":"2024-08-29 14:08:07.000000000","message":"Tried it and got value error in two test cases: \nFAILED common/middleware/test_proxy_logging.py::TestProxyLogging::test_init_statsd_deprecated_and_supported_options_invalid - AssertionError: ValueError not raised\nFAILED common/test_statsd_client.py::TestModuleFunctions::test_get_statsd_client_modern_and_deprecated_options_disallowed - AssertionError: ValueError not raised\n\nwith:\n\n    supported_used \u003d [key for key in SUPPORTED_STATSD_OPTIONS if key in conf]\n\n\n    for key in deprecated_used:\n        if key in SUPPORTED_STATSD_OPTIONS:\n            warn(\u0027ignored use of deprecated in favor of supported\u0027)\n        else:\n            warn(\u0027used deprecated; please configure supported\u0027)","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"896f345b5d8d0130de7d8225f55983936fd21d6e","unresolved":true,"context_lines":[{"line_number":74,"context_line":"            % ([(key[prefix_len:], key)"},{"line_number":75,"context_line":"                for key in deprecated_and_supported_used],"},{"line_number":76,"context_line":"               [key[prefix_len:]"},{"line_number":77,"context_line":"                for key in deprecated_and_supported_used]))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    return clean_conf"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"f0b81b83_90c4fb46","line":77,"in_reply_to":"e23a6352_12489ac0","updated":"2024-09-02 14:32:50.000000000","message":"reworking this in next patchset to not raise ValueError","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":103,"context_line":"    :raises ValueError: if conf contains both deprecated and supported versions"},{"line_number":104,"context_line":"        of the same option."},{"line_number":105,"context_line":"    \"\"\""},{"line_number":106,"context_line":"    conf \u003d cleanup_statsd_client_options(conf, \u0027log_\u0027, logger)"},{"line_number":107,"context_line":"    host \u003d conf.get(\u0027statsd_host\u0027)"},{"line_number":108,"context_line":"    port \u003d int(conf.get(\u0027statsd_port\u0027, 8125))"},{"line_number":109,"context_line":"    base_prefix \u003d conf.get(\u0027statsd_metric_prefix\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"00d273fa_9d8e774e","line":106,"updated":"2024-08-14 14:14:57.000000000","message":"hrm... I wonder if this could double log about deprecated values when called inside of get_logger and again after in proxy logging.","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"896f345b5d8d0130de7d8225f55983936fd21d6e","unresolved":true,"context_lines":[{"line_number":103,"context_line":"    :raises ValueError: if conf contains both deprecated and supported versions"},{"line_number":104,"context_line":"        of the same option."},{"line_number":105,"context_line":"    \"\"\""},{"line_number":106,"context_line":"    conf \u003d cleanup_statsd_client_options(conf, \u0027log_\u0027, logger)"},{"line_number":107,"context_line":"    host \u003d conf.get(\u0027statsd_host\u0027)"},{"line_number":108,"context_line":"    port \u003d int(conf.get(\u0027statsd_port\u0027, 8125))"},{"line_number":109,"context_line":"    base_prefix \u003d conf.get(\u0027statsd_metric_prefix\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"6a59fc62_baaffeeb","line":106,"in_reply_to":"00d273fa_9d8e774e","updated":"2024-09-02 14:32:50.000000000","message":"I think that is possible. I\u0027m not sure how we\u0027d easily avoid that without pre-parsing the entire conf ini file, or passing around some kind of parsing history that tells us that *this* logger instance has already warned of *this* deprecation.","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"}],"test/unit/common/middleware/test_proxy_logging.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"bb941313238bce270534409c867c74b541cad303","unresolved":true,"context_lines":[{"line_number":422,"context_line":"        }"},{"line_number":423,"context_line":"        # this conf var supports optional leading access_"},{"line_number":424,"context_line":"        for conf_key in [\u0027access_log_statsd_valid_http_methods\u0027,"},{"line_number":425,"context_line":"                         \u0027statsd_valid_http_methods\u0027]:"},{"line_number":426,"context_line":"            for method, exp_method in method_map.items():"},{"line_number":427,"context_line":"                self.logger.clear()"},{"line_number":428,"context_line":"                app \u003d proxy_logging.ProxyLoggingMiddleware(FakeApp(), {"}],"source_content_type":"text/x-python","patch_set":5,"id":"9918f65c_98372373","line":425,"updated":"2024-07-16 11:04:42.000000000","message":"not sure if this should change - it is not a StatsdClient option","commit_id":"a509bb3dd3643e612dcbdd7019941ad85d733301"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1fc7beb5dae42bb090ae1e4fab7a52e10fa08e56","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        }"},{"line_number":423,"context_line":"        # this conf var supports optional leading access_"},{"line_number":424,"context_line":"        for conf_key in [\u0027access_log_statsd_valid_http_methods\u0027,"},{"line_number":425,"context_line":"                         \u0027statsd_valid_http_methods\u0027]:"},{"line_number":426,"context_line":"            for method, exp_method in method_map.items():"},{"line_number":427,"context_line":"                self.logger.clear()"},{"line_number":428,"context_line":"                app \u003d proxy_logging.ProxyLoggingMiddleware(FakeApp(), {"}],"source_content_type":"text/x-python","patch_set":5,"id":"9623ca84_61ed9c2e","line":425,"in_reply_to":"9918f65c_98372373","updated":"2024-08-06 11:46:55.000000000","message":"Acknowledged","commit_id":"a509bb3dd3643e612dcbdd7019941ad85d733301"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":420,"context_line":"            \"(\u0027statsd_sample_rate_factor\u0027, \u0027log_statsd_sample_rate_factor\u0027)]. \""},{"line_number":421,"context_line":"            \"Configure only [\u0027statsd_host\u0027, \u0027statsd_port\u0027, \""},{"line_number":422,"context_line":"            \"\u0027statsd_metric_prefix\u0027, \u0027statsd_default_sample_rate\u0027, \""},{"line_number":423,"context_line":"            \"\u0027statsd_sample_rate_factor\u0027]\", str(cm.exception))"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    def test_init_statsd_options_log_prefix(self):"},{"line_number":426,"context_line":"        conf \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"28a7d9f2_a929f8e6","line":423,"updated":"2024-08-14 14:14:57.000000000","message":"yeah it looks like there\u0027s a lot of ways to get this wrong when you\u0027re just trying to do the right thing.","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"}],"test/unit/common/test_statsd_client.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":885,"context_line":"            \"(\u0027statsd_sample_rate_factor\u0027, \u0027log_statsd_sample_rate_factor\u0027)]. \""},{"line_number":886,"context_line":"            \"Configure only [\u0027statsd_host\u0027, \u0027statsd_port\u0027, \""},{"line_number":887,"context_line":"            \"\u0027statsd_metric_prefix\u0027, \u0027statsd_default_sample_rate\u0027, \""},{"line_number":888,"context_line":"            \"\u0027statsd_sample_rate_factor\u0027]\", str(cm.exception))"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"        conf \u003d {"},{"line_number":891,"context_line":"            \u0027statsd_host\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"f8b230e3_88efd183","line":888,"updated":"2024-08-14 14:14:57.000000000","message":"i love how we log a *warning* \"please use these new config options at your earliest convienence; have a nice day\"\n\n... then we see they *did* so we BLOW UP","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b3234ba42c433dbf43be8f9771de12f631e36583","unresolved":true,"context_lines":[{"line_number":934,"context_line":"             \"\u0027log_statsd_sample_rate_factor\u0027] options are deprecated and \""},{"line_number":935,"context_line":"             \"support may be removed in a future release; configure \""},{"line_number":936,"context_line":"             \"[\u0027statsd_default_sample_rate\u0027, \u0027statsd_sample_rate_factor\u0027] \""},{"line_number":937,"context_line":"             \"instead\"], warn_lines)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1b5f732f_0b04d106","line":937,"updated":"2024-08-14 14:14:57.000000000","message":"LOL, now *this* is the real WTF moment... if I have some `statsd_*` options set in one section/file and I think I\u0027ve got all the options I want with defaults for the rest, but then there\u0027s some other `log_statsd_*` options in another section/file - did I intend to have those options configured or did i want the defaults for the unconfigured `statsd_*` options?\n\nI think this is the right call: use the configured options regardless where they came from and log a warning for use of any deprecated config keys.  i.e. I\u0027m doing what you *said* but is this what you *want*???\n\nBut I think this case is actually MORE ambigous than having (potentially identical) values for BOTH names; when we can clearly assume the new key option is the value they want.  So it\u0027s still surprising to me we blow-up in that case but not here... although we should probably just not blow up in either case.","commit_id":"969efd29b7ac91e5fff1388b4a5d7958467e0597"}]}
