)]}'
{"os_loganalyze/wsgi.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7543c724d7404273f74c49b3ad909e1d02599286","unresolved":false,"context_lines":[{"line_number":313,"context_line":"    except Exception:"},{"line_number":314,"context_line":"        return None"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    return obj[1].split(\u0027\\n\u0027)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def application(environ, start_response, root_path\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2FcyA%3D","line":316,"updated":"2014-03-17 20:34:39.000000000","message":"so this is pretty concerning, because this means we\u0027re pulling the whole object into memory, then doing a split.\n\nFor reference, a nova-cpu log from a run is 20MB uncompressed plain text (~ 100k lines long). This split would then create a 100k item array, and presumably be much larger than 20MB. This was actually what the wsgi generator approach was trying to avoid.","commit_id":"c0abc4ef6bd2d69d1f86da76cb817bfeb8c95b16"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7860e2c58b73251c44018c12b3d64dedd3221311","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        flines_generator \u003d fileinput.FileInput("},{"line_number":360,"context_line":"            logpath, openhook\u003dfileinput.hook_compressed)"},{"line_number":361,"context_line":"    else:"},{"line_number":362,"context_line":"        flines_generator \u003d get_swift_object_generator(logname, config)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    if not flines_generator:"},{"line_number":365,"context_line":"        status \u003d \"404 Not Found\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FWtc%3D","line":362,"updated":"2014-03-18 12:28:08.000000000","message":"this is definitely not going to do the right thing. Some tests could be provided to prove that. Because the processor really requires line oriented output, and you are handing it 4k blocks.","commit_id":"5cdcdbf1f16a5c50b7ffddfede6bc49e711c3f03"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"58a6607be93ffe951d589cf1edcc531d06101888","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        flines_generator \u003d fileinput.FileInput("},{"line_number":360,"context_line":"            logpath, openhook\u003dfileinput.hook_compressed)"},{"line_number":361,"context_line":"    else:"},{"line_number":362,"context_line":"        flines_generator \u003d get_swift_object_generator(logname, config)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    if not flines_generator:"},{"line_number":365,"context_line":"        status \u003d \"404 Not Found\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FPgM%3D","line":362,"in_reply_to":"AAAAWH%2F%2FWtc%3D","updated":"2014-03-19 06:40:20.000000000","message":"Right, I wasn\u0027t thinking and saw this as going straight to the response. Fixing and testing properly in new patchset.","commit_id":"5cdcdbf1f16a5c50b7ffddfede6bc49e711c3f03"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"580da105e1aa24e8226f43505cf64e516469ac47","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import fileinput"},{"line_number":21,"context_line":"import os.path"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":"import swiftclient"},{"line_number":24,"context_line":"import sys"},{"line_number":25,"context_line":"import types"},{"line_number":26,"context_line":"import wsgiref.util"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BaxE%3D","line":23,"updated":"2014-03-26 22:41:08.000000000","message":"can we make the import optional so it still works without it?","commit_id":"522bee62cc0a1c7fdd6fc20e34729d2b5dc66a48"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"6ebe19ab1aa3fa29bd482975afdc65420484ecd5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import fileinput"},{"line_number":21,"context_line":"import os.path"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":"import swiftclient"},{"line_number":24,"context_line":"import sys"},{"line_number":25,"context_line":"import types"},{"line_number":26,"context_line":"import wsgiref.util"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Bapo%3D","line":23,"in_reply_to":"AAAAWH%2F%2BaxE%3D","updated":"2014-03-27 01:55:31.000000000","message":"Done","commit_id":"522bee62cc0a1c7fdd6fc20e34729d2b5dc66a48"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"580da105e1aa24e8226f43505cf64e516469ac47","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    (KEY_COMPONENT, DATEFMT, STATUSFMT)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"# Set the size of the chunks to read from swift (in Bytes)"},{"line_number":42,"context_line":"SWIFT_CHUNK_SIZE \u003d 2 ^ 6"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"SEVS \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Bays%3D","line":42,"updated":"2014-03-26 22:41:08.000000000","message":"this should probably be in the conf file","commit_id":"522bee62cc0a1c7fdd6fc20e34729d2b5dc66a48"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"6ebe19ab1aa3fa29bd482975afdc65420484ecd5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    (KEY_COMPONENT, DATEFMT, STATUSFMT)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"# Set the size of the chunks to read from swift (in Bytes)"},{"line_number":42,"context_line":"SWIFT_CHUNK_SIZE \u003d 2 ^ 6"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"SEVS \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Bapk%3D","line":42,"in_reply_to":"AAAAWH%2F%2Bays%3D","updated":"2014-03-27 01:55:31.000000000","message":"Done","commit_id":"522bee62cc0a1c7fdd6fc20e34729d2b5dc66a48"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"ab8bfda50c67ed5077870fec2cbc6b050215df3a","unresolved":false,"context_lines":[{"line_number":313,"context_line":"    that we are very sad."},{"line_number":314,"context_line":"    \"\"\""},{"line_number":315,"context_line":"    if log_name:"},{"line_number":316,"context_line":"        newpath \u003d os.path.abspath(os.path.join(root, log_name))"},{"line_number":317,"context_line":"        if newpath.find(root) \u003d\u003d 0:"},{"line_number":318,"context_line":"            return newpath"},{"line_number":319,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXX%2F%2F3J8%3D","line":316,"updated":"2014-04-25 18:15:07.000000000","message":"log_name here will shadow def log_name above. Is that intentional?","commit_id":"a940ac9f2f00b4337977c1d55888d00ff094ecc3"}],"requirements.txt":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"580da105e1aa24e8226f43505cf64e516469ac47","unresolved":false,"context_lines":[{"line_number":1,"context_line":"pbr\u003e\u003d0.5.21,\u003c1.0"},{"line_number":2,"context_line":"Babel\u003e\u003d0.9.6"},{"line_number":3,"context_line":"python-swiftclient\u003e\u003d1.6"},{"line_number":4,"context_line":"python-keystoneclient\u003e\u003d0.4.2"}],"source_content_type":"text/plain","patch_set":5,"id":"AAAAWH%2F%2BaxM%3D","line":3,"updated":"2014-03-26 22:41:08.000000000","message":"this should probably be in test-requirements, not requirements, as you can use it with swift.","commit_id":"522bee62cc0a1c7fdd6fc20e34729d2b5dc66a48"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"6ebe19ab1aa3fa29bd482975afdc65420484ecd5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"pbr\u003e\u003d0.5.21,\u003c1.0"},{"line_number":2,"context_line":"Babel\u003e\u003d0.9.6"},{"line_number":3,"context_line":"python-swiftclient\u003e\u003d1.6"},{"line_number":4,"context_line":"python-keystoneclient\u003e\u003d0.4.2"}],"source_content_type":"text/plain","patch_set":5,"id":"AAAAWH%2F%2Baps%3D","line":3,"in_reply_to":"AAAAWH%2F%2BaxM%3D","updated":"2014-03-27 01:55:31.000000000","message":"I assume you mean \u0027without swift\u0027?","commit_id":"522bee62cc0a1c7fdd6fc20e34729d2b5dc66a48"}]}
