Last active
July 31, 2018 06:45
-
-
Save fschulze/ccc54548a7e730be5e5cd4dac23d8324 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from devpi_server.main import get_pluginmanager | |
from devpi_server.main import _main | |
import sys | |
def main(): | |
pm = get_pluginmanager() | |
pm.register(Plugin()) | |
_main(pm, sys.argv) | |
class Plugin: | |
def devpiserver_cmdline_run(self, xom): | |
from devpi_server.fileutil import dumps, loads | |
from pprint import pprint | |
keyfs = xom.keyfs | |
devpi_serial = keyfs.get_current_serial() | |
state = {} | |
for keyname in keyfs._keys: | |
state[keyname] = {} | |
raw_size = 0 | |
deleted = 0 | |
for serial in range(devpi_serial + 1): | |
raw_entry = keyfs.tx.conn.get_raw_changelog_entry(serial) | |
raw_size += len(raw_entry) | |
(changes, rel_renames) = loads(raw_entry) | |
for key, (keyname, backserial, value) in changes.items(): | |
if value is None: | |
deleted += 1 | |
del state[keyname][key] | |
else: | |
state[keyname][key] = value | |
raw_state = dumps(state) | |
print("Serials : %16d" % serial) | |
print("Raw size: %16d" % raw_size) | |
print("New size: %16d (%.2f%%) with %s keys (%s deleted)" % ( | |
len(raw_state), | |
100.0 / raw_size * len(raw_state), | |
len(state), | |
deleted)) | |
infos = dict((k, len(state[k])) for k in state) | |
pprint(infos) | |
return 0 | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment