)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"79b0a35ab5e5d73e480165a13671ede1367c9cd7","unresolved":true,"context_lines":[{"line_number":54,"context_line":"This first is an incremented if the container DB\u0027s freelist page percent"},{"line_number":55,"context_line":"is between 70% and 80%. The second is an account whose freelist page"},{"line_number":56,"context_line":"size is between 50MB and 55MB."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"These should give us a basic gauge of the bloatiness of the metadata"},{"line_number":59,"context_line":"layer in swift."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"797254d5_f7da1650","line":57,"updated":"2024-05-28 19:43:49.000000000","message":"Okay. What if only one is non-zero? What if both are?","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"92e76007384bd3a73e97646fcea7062b6a1d3a68","unresolved":true,"context_lines":[{"line_number":54,"context_line":"This first is an incremented if the container DB\u0027s freelist page percent"},{"line_number":55,"context_line":"is between 70% and 80%. The second is an account whose freelist page"},{"line_number":56,"context_line":"size is between 50MB and 55MB."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"These should give us a basic gauge of the bloatiness of the metadata"},{"line_number":59,"context_line":"layer in swift."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"316bd205_9935b661","line":57,"in_reply_to":"797254d5_f7da1650","updated":"2024-06-04 04:45:12.000000000","message":"Ahh, I\u0027ve specifcally made these metrics fire everytime, regardless of what you have the threshhold you set (even disabled). As this would give us a glimpse of how \"bloated\" the metadata layer is and might give an op a good threshold to start at.\n\nI\u0027ll note that in the commit message.","commit_id":"86664263f19bc946f237caae02db0783dc9da072"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"369c2303d4f3c99b0ead356f5a645d18924ed7c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8c598a1f_ae70dda3","updated":"2024-04-30 00:18:02.000000000","message":"Good calls, I fix those up, thanks Tim. yeah some timings are what I\u0027ll work on next, great suggestions!","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"77a413891726cd00ed8457ce977569b623401543","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a4edfb5d_87eda942","updated":"2024-04-30 00:10:22.000000000","message":"This looks really slick! I\u0027d love to get some performance numbers around it, all pre- vs post-vacuum:\n\n- object listing performance\n- shard range GET performance\n- object write performance\n- shard range write performance\n- approximate wall-time required to vacuum (presumably will be a function of remaining, live pages?)\n\nAs well as characterizing behaviors *during* the vacuum. (Surely writes will have to wait until we\u0027re done -- can we at least still get some reads in?)","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"500888c14eece963f36e6625befb79c15cc519a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"779335bb_a1855057","updated":"2024-05-15 16:21:38.000000000","message":"I like the idea of doing it in the auditor with a default of off is not too bad!","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"138b021e2d8d3f020437c35b9ad6c2a78b55c004","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c402bf1d_f607d859","updated":"2024-06-04 06:09:53.000000000","message":"recheck","commit_id":"341ca6dec861435a9c0ab17ec9250bc596f6978c"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"cbd7bde3836f8b4bea82a4ef2c19dff1abaf49c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"327c7149_f0a997e8","updated":"2024-06-05 03:00:29.000000000","message":"I continue to think that you are unnecessarily verbose as well as redundant in the description of the parameters.","commit_id":"4d9c4724e245249270a2b7dd3876485112a17fb5"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"9c578713372b926ffedde9aecae839ed2f92bc5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"84a246e7_68549c26","in_reply_to":"327c7149_f0a997e8","updated":"2024-08-04 23:10:14.000000000","message":"kk, will fix this in the next patchset. Just trying to get some more useful metrics as we\u0027ll carry this patch in our prod to get an idea of the \"bloatiness\" of our container dbs.\n\nI\u0027ll get something up today.","commit_id":"4d9c4724e245249270a2b7dd3876485112a17fb5"}],"doc/source/config/container_server_config.rst":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"79b0a35ab5e5d73e480165a13671ede1367c9cd7","unresolved":true,"context_lines":[{"line_number":625,"context_line":"                                             Should be tuned according to individual"},{"line_number":626,"context_line":"                                             system specs. 0 is unlimited."},{"line_number":627,"context_line":"recon_cache_path          /var/cache/swift   Path to recon cache"},{"line_number":628,"context_line":"vacuum_threshold_size     0                  As an SQLite database rows are deleted"},{"line_number":629,"context_line":"                                             the file can become more sparse and"},{"line_number":630,"context_line":"                                             fragmented. A good indicator of"},{"line_number":631,"context_line":"                                             sparsness in the file is the freelist"},{"line_number":632,"context_line":"                                             page count. The higher this number,"},{"line_number":633,"context_line":"                                             the more sparse the file is getting."},{"line_number":634,"context_line":"                                             Using the sqlite page_size we can"},{"line_number":635,"context_line":"                                             determine how much space we\u0027re using, so"},{"line_number":636,"context_line":"                                             we can monitor this number and when it"},{"line_number":637,"context_line":"                                             gets high enough we can trigger a vacuum."},{"line_number":638,"context_line":"                                             The vacuum_threshold_size, in bytes, is at"},{"line_number":639,"context_line":"                                             what point a vacuum would be triggered. a"},{"line_number":640,"context_line":"                                             value of 0 means we never vacuum."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5875ca18_aca10d0a","line":637,"range":{"start_line":628,"start_character":45,"end_line":637,"end_character":86},"updated":"2024-05-28 19:43:49.000000000","message":"IMHO this is not a good place for such a long explanation. Using it twice as a boilerplane is even worse.","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"92e76007384bd3a73e97646fcea7062b6a1d3a68","unresolved":true,"context_lines":[{"line_number":625,"context_line":"                                             Should be tuned according to individual"},{"line_number":626,"context_line":"                                             system specs. 0 is unlimited."},{"line_number":627,"context_line":"recon_cache_path          /var/cache/swift   Path to recon cache"},{"line_number":628,"context_line":"vacuum_threshold_size     0                  As an SQLite database rows are deleted"},{"line_number":629,"context_line":"                                             the file can become more sparse and"},{"line_number":630,"context_line":"                                             fragmented. A good indicator of"},{"line_number":631,"context_line":"                                             sparsness in the file is the freelist"},{"line_number":632,"context_line":"                                             page count. The higher this number,"},{"line_number":633,"context_line":"                                             the more sparse the file is getting."},{"line_number":634,"context_line":"                                             Using the sqlite page_size we can"},{"line_number":635,"context_line":"                                             determine how much space we\u0027re using, so"},{"line_number":636,"context_line":"                                             we can monitor this number and when it"},{"line_number":637,"context_line":"                                             gets high enough we can trigger a vacuum."},{"line_number":638,"context_line":"                                             The vacuum_threshold_size, in bytes, is at"},{"line_number":639,"context_line":"                                             what point a vacuum would be triggered. a"},{"line_number":640,"context_line":"                                             value of 0 means we never vacuum."}],"source_content_type":"text/x-rst","patch_set":5,"id":"b58aa09f_e58364b3","line":637,"range":{"start_line":628,"start_character":45,"end_line":637,"end_character":86},"in_reply_to":"5875ca18_aca10d0a","updated":"2024-06-04 04:45:12.000000000","message":"yeah, true, but I want to information for people to read, and not everyone uses the sample config files.\n\nSo I wonder what the best thing to do here? try and simplify it and make an overview_vacuum doc? Simply it here and have more info in only one place (like the sample config)?\n\nNeed the think about this. But agree probably should be resolved before we land it.","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"aaffc14df68583aa1e4621c2c8dbaaabda3aaa09","unresolved":false,"context_lines":[{"line_number":625,"context_line":"                                             Should be tuned according to individual"},{"line_number":626,"context_line":"                                             system specs. 0 is unlimited."},{"line_number":627,"context_line":"recon_cache_path          /var/cache/swift   Path to recon cache"},{"line_number":628,"context_line":"vacuum_threshold_size     0                  As an SQLite database rows are deleted"},{"line_number":629,"context_line":"                                             the file can become more sparse and"},{"line_number":630,"context_line":"                                             fragmented. A good indicator of"},{"line_number":631,"context_line":"                                             sparsness in the file is the freelist"},{"line_number":632,"context_line":"                                             page count. The higher this number,"},{"line_number":633,"context_line":"                                             the more sparse the file is getting."},{"line_number":634,"context_line":"                                             Using the sqlite page_size we can"},{"line_number":635,"context_line":"                                             determine how much space we\u0027re using, so"},{"line_number":636,"context_line":"                                             we can monitor this number and when it"},{"line_number":637,"context_line":"                                             gets high enough we can trigger a vacuum."},{"line_number":638,"context_line":"                                             The vacuum_threshold_size, in bytes, is at"},{"line_number":639,"context_line":"                                             what point a vacuum would be triggered. a"},{"line_number":640,"context_line":"                                             value of 0 means we never vacuum."}],"source_content_type":"text/x-rst","patch_set":5,"id":"87e7f225_b8c5b637","line":637,"range":{"start_line":628,"start_character":45,"end_line":637,"end_character":86},"in_reply_to":"86fe81eb_801b6bee","updated":"2024-08-12 23:43:03.000000000","message":"Done","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"cbd7bde3836f8b4bea82a4ef2c19dff1abaf49c4","unresolved":true,"context_lines":[{"line_number":625,"context_line":"                                             Should be tuned according to individual"},{"line_number":626,"context_line":"                                             system specs. 0 is unlimited."},{"line_number":627,"context_line":"recon_cache_path          /var/cache/swift   Path to recon cache"},{"line_number":628,"context_line":"vacuum_threshold_size     0                  As an SQLite database rows are deleted"},{"line_number":629,"context_line":"                                             the file can become more sparse and"},{"line_number":630,"context_line":"                                             fragmented. A good indicator of"},{"line_number":631,"context_line":"                                             sparsness in the file is the freelist"},{"line_number":632,"context_line":"                                             page count. The higher this number,"},{"line_number":633,"context_line":"                                             the more sparse the file is getting."},{"line_number":634,"context_line":"                                             Using the sqlite page_size we can"},{"line_number":635,"context_line":"                                             determine how much space we\u0027re using, so"},{"line_number":636,"context_line":"                                             we can monitor this number and when it"},{"line_number":637,"context_line":"                                             gets high enough we can trigger a vacuum."},{"line_number":638,"context_line":"                                             The vacuum_threshold_size, in bytes, is at"},{"line_number":639,"context_line":"                                             what point a vacuum would be triggered. a"},{"line_number":640,"context_line":"                                             value of 0 means we never vacuum."}],"source_content_type":"text/x-rst","patch_set":5,"id":"86fe81eb_801b6bee","line":637,"range":{"start_line":628,"start_character":45,"end_line":637,"end_character":86},"in_reply_to":"b58aa09f_e58364b3","updated":"2024-06-05 03:00:29.000000000","message":"Just drop the obvious would be my approach.\nThe important information is the units of the size.\nSo:\n\"The size in bytes of the data on the freelist in the audited database file, above which vacuum is triggered. Zero means never vacuum.\"\nand\n\"Ratio of data on the freelist to the total size of the audited database file, above which vacuum is triggered. Zero means never vacuum.\"","commit_id":"86664263f19bc946f237caae02db0783dc9da072"}],"etc/account-server.conf-sample":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"79b0a35ab5e5d73e480165a13671ede1367c9cd7","unresolved":true,"context_lines":[{"line_number":249,"context_line":"# a value of 0 means we never vacuum."},{"line_number":250,"context_line":"# vacuum_threshold_size \u003d 0"},{"line_number":251,"context_line":"#"},{"line_number":252,"context_line":"# Another way we can trigger a vacuum is by monitoring the ratio of used and"},{"line_number":253,"context_line":"# freelist pages and use this as a percentage to trigger a vacuum."},{"line_number":254,"context_line":"# The vacuum_threshold_percent, is at what percentage of freelist pages there needs"},{"line_number":255,"context_line":"# to be to trigger a vacuum. A value of 0 means we never vacuum."}],"source_content_type":"application/octet-stream","patch_set":5,"id":"bd4465ca_4b67b180","line":252,"updated":"2024-05-28 19:43:49.000000000","message":"At least this says \"another way\", so we clearly can expect the vacuum to happen if only one of them is set.","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"92e76007384bd3a73e97646fcea7062b6a1d3a68","unresolved":false,"context_lines":[{"line_number":249,"context_line":"# a value of 0 means we never vacuum."},{"line_number":250,"context_line":"# vacuum_threshold_size \u003d 0"},{"line_number":251,"context_line":"#"},{"line_number":252,"context_line":"# Another way we can trigger a vacuum is by monitoring the ratio of used and"},{"line_number":253,"context_line":"# freelist pages and use this as a percentage to trigger a vacuum."},{"line_number":254,"context_line":"# The vacuum_threshold_percent, is at what percentage of freelist pages there needs"},{"line_number":255,"context_line":"# to be to trigger a vacuum. A value of 0 means we never vacuum."}],"source_content_type":"application/octet-stream","patch_set":5,"id":"fdd747ae_ae8317bf","line":252,"in_reply_to":"bd4465ca_4b67b180","updated":"2024-06-04 04:45:12.000000000","message":"yup, good point. Will fix","commit_id":"86664263f19bc946f237caae02db0783dc9da072"}],"etc/container-server.conf-sample":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"77a413891726cd00ed8457ce977569b623401543","unresolved":true,"context_lines":[{"line_number":299,"context_line":"# freelist pages and use this as a percentage to trigger a vacuum."},{"line_number":300,"context_line":"# The freelist_vacuum_percent, is at what percentage of freelist pages there needs"},{"line_number":301,"context_line":"# to be to trigger a vacuum. A value of 0 means we never vacuum."},{"line_number":302,"context_line":"# freelist_vacuum_percent \u003d 0"},{"line_number":303,"context_line":"#"},{"line_number":304,"context_line":"# You can set scheduling priority of processes. Niceness values range from -20"},{"line_number":305,"context_line":"# (most favorable to the process) to 19 (least favorable to the process)."}],"source_content_type":"application/octet-stream","patch_set":3,"id":"338a9fdb_74ebbdd0","line":302,"updated":"2024-04-30 00:10:22.000000000","message":"Maybe better as `vacuum_threshold_size` and `vacuum_threshold_percent`?","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"93c9fe0371a39120c9d021c4e9126e7277f15a5d","unresolved":false,"context_lines":[{"line_number":299,"context_line":"# freelist pages and use this as a percentage to trigger a vacuum."},{"line_number":300,"context_line":"# The freelist_vacuum_percent, is at what percentage of freelist pages there needs"},{"line_number":301,"context_line":"# to be to trigger a vacuum. A value of 0 means we never vacuum."},{"line_number":302,"context_line":"# freelist_vacuum_percent \u003d 0"},{"line_number":303,"context_line":"#"},{"line_number":304,"context_line":"# You can set scheduling priority of processes. Niceness values range from -20"},{"line_number":305,"context_line":"# (most favorable to the process) to 19 (least favorable to the process)."}],"source_content_type":"application/octet-stream","patch_set":3,"id":"3002c2fa_69e815cf","line":302,"in_reply_to":"0658d1ba_a42f5a11","updated":"2024-04-30 07:13:08.000000000","message":"Done","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"369c2303d4f3c99b0ead356f5a645d18924ed7c4","unresolved":true,"context_lines":[{"line_number":299,"context_line":"# freelist pages and use this as a percentage to trigger a vacuum."},{"line_number":300,"context_line":"# The freelist_vacuum_percent, is at what percentage of freelist pages there needs"},{"line_number":301,"context_line":"# to be to trigger a vacuum. A value of 0 means we never vacuum."},{"line_number":302,"context_line":"# freelist_vacuum_percent \u003d 0"},{"line_number":303,"context_line":"#"},{"line_number":304,"context_line":"# You can set scheduling priority of processes. Niceness values range from -20"},{"line_number":305,"context_line":"# (most favorable to the process) to 19 (least favorable to the process)."}],"source_content_type":"application/octet-stream","patch_set":3,"id":"0658d1ba_a42f5a11","line":302,"in_reply_to":"338a9fdb_74ebbdd0","updated":"2024-04-30 00:18:02.000000000","message":"Yes! thankyou! yeah I need a better name!","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"}],"swift/common/db.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"77a413891726cd00ed8457ce977569b623401543","unresolved":true,"context_lines":[{"line_number":1221,"context_line":"            with self.get() as conn:"},{"line_number":1222,"context_line":"                conn.execute(\u0027VACUUM\u0027)"},{"line_number":1223,"context_line":"            return True"},{"line_number":1224,"context_line":"        except sqlite3.OperationalError:"},{"line_number":1225,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"6fd47901_b97b9cc5","line":1224,"updated":"2024-04-30 00:10:22.000000000","message":"Should we log the failure or anything?","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"93c9fe0371a39120c9d021c4e9126e7277f15a5d","unresolved":false,"context_lines":[{"line_number":1221,"context_line":"            with self.get() as conn:"},{"line_number":1222,"context_line":"                conn.execute(\u0027VACUUM\u0027)"},{"line_number":1223,"context_line":"            return True"},{"line_number":1224,"context_line":"        except sqlite3.OperationalError:"},{"line_number":1225,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"3acaad26_cab30a8a","line":1224,"in_reply_to":"65a7e637_7243fa4c","updated":"2024-04-30 07:13:08.000000000","message":"I guess rather then passing a false I should just let the OperationalError be thrown/raised back up. That\u0027s what we already do in other parts of db.py. And then log it out when we call vacuum.","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"369c2303d4f3c99b0ead356f5a645d18924ed7c4","unresolved":true,"context_lines":[{"line_number":1221,"context_line":"            with self.get() as conn:"},{"line_number":1222,"context_line":"                conn.execute(\u0027VACUUM\u0027)"},{"line_number":1223,"context_line":"            return True"},{"line_number":1224,"context_line":"        except sqlite3.OperationalError:"},{"line_number":1225,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"65a7e637_7243fa4c","line":1224,"in_reply_to":"6fd47901_b97b9cc5","updated":"2024-04-30 00:18:02.000000000","message":"Yup, probably should. One day we\u0027ll want to know why it\u0027s failing 😊","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"79b0a35ab5e5d73e480165a13671ede1367c9cd7","unresolved":true,"context_lines":[{"line_number":1200,"context_line":"            freelist_count \u003d self._get_pragma_value(\u0027freelist_count\u0027)"},{"line_number":1201,"context_line":"            return freelist_count * page_size"},{"line_number":1202,"context_line":"        except DatabasePragmaException:"},{"line_number":1203,"context_line":"            raise ValueError(\u0027Failed to calulate freelist size\u0027)"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def get_freelist_percent(self):"},{"line_number":1206,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"86df2223_181a5c60","line":1203,"updated":"2024-05-28 19:43:49.000000000","message":"\"calculate\"","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"92e76007384bd3a73e97646fcea7062b6a1d3a68","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"            freelist_count \u003d self._get_pragma_value(\u0027freelist_count\u0027)"},{"line_number":1201,"context_line":"            return freelist_count * page_size"},{"line_number":1202,"context_line":"        except DatabasePragmaException:"},{"line_number":1203,"context_line":"            raise ValueError(\u0027Failed to calulate freelist size\u0027)"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def get_freelist_percent(self):"},{"line_number":1206,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"11b962af_f4b754a6","line":1203,"in_reply_to":"86df2223_181a5c60","updated":"2024-06-04 04:45:12.000000000","message":"opps, fixed","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"cbd7bde3836f8b4bea82a4ef2c19dff1abaf49c4","unresolved":true,"context_lines":[{"line_number":1217,"context_line":"            page_size \u003d self._get_pragma_value(\u0027page_size\u0027)"},{"line_number":1218,"context_line":"            freelist_count \u003d self._get_pragma_value(\u0027freelist_count\u0027)"},{"line_number":1219,"context_line":"            return freelist_count * page_size"},{"line_number":1220,"context_line":"        except DatabasePragmaException:"},{"line_number":1221,"context_line":"            raise ValueError(\u0027Failed to calculate freelist size\u0027)"},{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"    def get_freelist_percent(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"64cc2bff_45fe26a2","line":1220,"updated":"2024-06-05 03:00:29.000000000","message":"This looks a little weird, because I went into a pain of reporting the failed pragma in _get_pragma_value, only to discard it here. At the very least there\u0027s some dead code. Or perhaps you had something else in mind?","commit_id":"4d9c4724e245249270a2b7dd3876485112a17fb5"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"aaffc14df68583aa1e4621c2c8dbaaabda3aaa09","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"            page_size \u003d self._get_pragma_value(\u0027page_size\u0027)"},{"line_number":1218,"context_line":"            freelist_count \u003d self._get_pragma_value(\u0027freelist_count\u0027)"},{"line_number":1219,"context_line":"            return freelist_count * page_size"},{"line_number":1220,"context_line":"        except DatabasePragmaException:"},{"line_number":1221,"context_line":"            raise ValueError(\u0027Failed to calculate freelist size\u0027)"},{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"    def get_freelist_percent(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"a48e724e_5bb565ef","line":1220,"in_reply_to":"64cc2bff_45fe26a2","updated":"2024-08-12 23:43:03.000000000","message":"Done","commit_id":"4d9c4724e245249270a2b7dd3876485112a17fb5"}],"swift/common/db_auditor.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"77a413891726cd00ed8457ce977569b623401543","unresolved":true,"context_lines":[{"line_number":66,"context_line":"        self.max_freelist_size \u003d non_negative_int("},{"line_number":67,"context_line":"            conf.get(\u0027freelist_vacuum_size\u0027, 0))"},{"line_number":68,"context_line":"        self.max_freelist_percent \u003d config_percent_value("},{"line_number":69,"context_line":"            conf.get(\u0027freelist_vacuum_percent\u0027, 0)) * 100"},{"line_number":70,"context_line":"        self.datadir \u003d \u0027{}s\u0027.format(self.server_type)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _one_audit_pass(self, reported):"}],"source_content_type":"text/x-python","patch_set":3,"id":"6ab77471_f9cf30ec","line":69,"range":{"start_line":69,"start_character":52,"end_line":69,"end_character":57},"updated":"2024-04-30 00:10:22.000000000","message":"nit: Could just use `config_float_value` -- or switch the code to think in terms of `freelist_frac`","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"369c2303d4f3c99b0ead356f5a645d18924ed7c4","unresolved":true,"context_lines":[{"line_number":66,"context_line":"        self.max_freelist_size \u003d non_negative_int("},{"line_number":67,"context_line":"            conf.get(\u0027freelist_vacuum_size\u0027, 0))"},{"line_number":68,"context_line":"        self.max_freelist_percent \u003d config_percent_value("},{"line_number":69,"context_line":"            conf.get(\u0027freelist_vacuum_percent\u0027, 0)) * 100"},{"line_number":70,"context_line":"        self.datadir \u003d \u0027{}s\u0027.format(self.server_type)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _one_audit_pass(self, reported):"}],"source_content_type":"text/x-python","patch_set":3,"id":"c5153494_ab51c283","line":69,"range":{"start_line":69,"start_character":52,"end_line":69,"end_character":57},"in_reply_to":"6ab77471_f9cf30ec","updated":"2024-04-30 00:18:02.000000000","message":"true, I think I used percent_value assuming it\u0027ll do what I want and when it didn\u0027t I fixed it here in debug :P\n\nYeah will clean this up","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"93c9fe0371a39120c9d021c4e9126e7277f15a5d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.max_freelist_size \u003d non_negative_int("},{"line_number":67,"context_line":"            conf.get(\u0027freelist_vacuum_size\u0027, 0))"},{"line_number":68,"context_line":"        self.max_freelist_percent \u003d config_percent_value("},{"line_number":69,"context_line":"            conf.get(\u0027freelist_vacuum_percent\u0027, 0)) * 100"},{"line_number":70,"context_line":"        self.datadir \u003d \u0027{}s\u0027.format(self.server_type)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _one_audit_pass(self, reported):"}],"source_content_type":"text/x-python","patch_set":3,"id":"970b2cd0_bfab8ccf","line":69,"range":{"start_line":69,"start_character":52,"end_line":69,"end_character":57},"in_reply_to":"c5153494_ab51c283","updated":"2024-04-30 07:13:08.000000000","message":"Done","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"79b0a35ab5e5d73e480165a13671ede1367c9cd7","unresolved":true,"context_lines":[{"line_number":147,"context_line":"        self.logger.increment(size_stat)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        percent_bucket \u003d get_percent_bucket(broker.get_freelist_percent(), 10)"},{"line_number":150,"context_line":"        percent_stat \u003d \"%s.freelist.percent.%d-%d\" % ("},{"line_number":151,"context_line":"            self.server_type, percent_bucket, percent_bucket + 10)"},{"line_number":152,"context_line":"        self.logger.increment(percent_stat)"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"891aa16a_9b6e19a7","line":150,"updated":"2024-05-28 19:43:49.000000000","message":"If get_freelist_percent returns 100%, you report the percent.100-110 bucket. It\u0027s not very likely and technically probably correct, but I suspect someone is going to be surprised, especially since the 90-100 bucket also exists.","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"92e76007384bd3a73e97646fcea7062b6a1d3a68","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        self.logger.increment(size_stat)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        percent_bucket \u003d get_percent_bucket(broker.get_freelist_percent(), 10)"},{"line_number":150,"context_line":"        percent_stat \u003d \"%s.freelist.percent.%d-%d\" % ("},{"line_number":151,"context_line":"            self.server_type, percent_bucket, percent_bucket + 10)"},{"line_number":152,"context_line":"        self.logger.increment(percent_stat)"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ae579ccb_d6ce47a8","line":150,"in_reply_to":"891aa16a_9b6e19a7","updated":"2024-06-04 04:45:12.000000000","message":"Ahh, good point. Maybe I need to special case 100%. Hmm, or probably better, knowing the increment is really exclusive, maybe I should make it something like:\n\n    percent_stat \u003d \"%s.freelist.percent.%d-%d\" % (self.server_type, percent_bucket, percent_bucket + 9)\n    \nSo it\u0027s actually inclusive. Maybe that\u0027s less confusing. Then although 100% is in 100-109%, the previous bucket is 90-99 and known not to contain the 100 percentile.","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"79b0a35ab5e5d73e480165a13671ede1367c9cd7","unresolved":true,"context_lines":[{"line_number":165,"context_line":"                err \u003d self._audit(info, broker)"},{"line_number":166,"context_line":"                if err:"},{"line_number":167,"context_line":"                    raise err"},{"line_number":168,"context_line":"                self.generate_freepage_stats(broker)"},{"line_number":169,"context_line":"                vacuum_db \u003d False"},{"line_number":170,"context_line":"                if self.max_freelist_size:"},{"line_number":171,"context_line":"                    # vacuuming is done when freelist_size gets bigger"}],"source_content_type":"text/x-python","patch_set":5,"id":"89f1ec8b_599101df","line":168,"updated":"2024-05-28 19:43:49.000000000","message":"If only generate_freepage_stats returned a tuple or a dict with the stats, you would not need to poke broker again.","commit_id":"86664263f19bc946f237caae02db0783dc9da072"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"92e76007384bd3a73e97646fcea7062b6a1d3a68","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                err \u003d self._audit(info, broker)"},{"line_number":166,"context_line":"                if err:"},{"line_number":167,"context_line":"                    raise err"},{"line_number":168,"context_line":"                self.generate_freepage_stats(broker)"},{"line_number":169,"context_line":"                vacuum_db \u003d False"},{"line_number":170,"context_line":"                if self.max_freelist_size:"},{"line_number":171,"context_line":"                    # vacuuming is done when freelist_size gets bigger"}],"source_content_type":"text/x-python","patch_set":5,"id":"5c6fde25_ab2fde46","line":168,"in_reply_to":"89f1ec8b_599101df","updated":"2024-06-04 04:45:12.000000000","message":"oh that\u0027s a great idea! And it\u0027ll then be the same snapsho of values what we then use to trigger below.","commit_id":"86664263f19bc946f237caae02db0783dc9da072"}],"test/unit/common/test_db.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"77a413891726cd00ed8457ce977569b623401543","unresolved":true,"context_lines":[{"line_number":1688,"context_line":""},{"line_number":1689,"context_line":"        remove_rows()"},{"line_number":1690,"context_line":""},{"line_number":1691,"context_line":"        # We have got to have some free pages now (8 on my machine at home)"},{"line_number":1692,"context_line":"        self.assertEqual(broker.get_freelist_count(), 30)"},{"line_number":1693,"context_line":"        self.assertGreater(broker.get_freelist_percent(), 71.0)"},{"line_number":1694,"context_line":"        self.assertEqual(broker.get_freelist_size(), 30720)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ece75472_328cd6fa","line":1691,"range":{"start_line":1691,"start_character":51,"end_line":1691,"end_character":74},"updated":"2024-04-30 00:10:22.000000000","message":"Does this predate the `initialize` override or something? \u0027Cause it sure looks like we get 30 now :P","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"93c9fe0371a39120c9d021c4e9126e7277f15a5d","unresolved":false,"context_lines":[{"line_number":1688,"context_line":""},{"line_number":1689,"context_line":"        remove_rows()"},{"line_number":1690,"context_line":""},{"line_number":1691,"context_line":"        # We have got to have some free pages now (8 on my machine at home)"},{"line_number":1692,"context_line":"        self.assertEqual(broker.get_freelist_count(), 30)"},{"line_number":1693,"context_line":"        self.assertGreater(broker.get_freelist_percent(), 71.0)"},{"line_number":1694,"context_line":"        self.assertEqual(broker.get_freelist_size(), 30720)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfa7e8a9_9dc92b33","line":1691,"range":{"start_line":1691,"start_character":51,"end_line":1691,"end_character":74},"in_reply_to":"b2344129_f81e028b","updated":"2024-04-30 07:13:08.000000000","message":"Done","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"369c2303d4f3c99b0ead356f5a645d18924ed7c4","unresolved":true,"context_lines":[{"line_number":1688,"context_line":""},{"line_number":1689,"context_line":"        remove_rows()"},{"line_number":1690,"context_line":""},{"line_number":1691,"context_line":"        # We have got to have some free pages now (8 on my machine at home)"},{"line_number":1692,"context_line":"        self.assertEqual(broker.get_freelist_count(), 30)"},{"line_number":1693,"context_line":"        self.assertGreater(broker.get_freelist_percent(), 71.0)"},{"line_number":1694,"context_line":"        self.assertEqual(broker.get_freelist_size(), 30720)"}],"source_content_type":"text/x-python","patch_set":3,"id":"b2344129_f81e028b","line":1691,"range":{"start_line":1691,"start_character":51,"end_line":1691,"end_character":74},"in_reply_to":"ece75472_328cd6fa","updated":"2024-04-30 00:18:02.000000000","message":"yup, good call. it was 8 at 4096 page size.. so yeah predates the initialize override","commit_id":"3d48a03a22b48e1d830e83ea08beb6679ee1b546"}]}
