)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"01379d7b2c2679bd1d3d9288e9e5f682cd2d7a97","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     yuliyang \u003cyuliyang@cmss.chinamobile.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-27 23:32:50 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add pigz support for cinder-backup swift driver compress"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I8b5381a22488a5b97b453fb8918053a3b2d4b1eb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ffe62b97_cdae6397","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":56},"updated":"2017-03-27 15:46:29.000000000","message":"Also extend commit message and add at least the aim of this change.","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"78f23a716d32df0cf0e18cf90cfa821cc6875e24","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     yuliyang \u003cyuliyang@cmss.chinamobile.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-27 23:32:50 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add pigz support for cinder-backup swift driver compress"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I8b5381a22488a5b97b453fb8918053a3b2d4b1eb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ffe62b97_8dd85b7f","line":7,"updated":"2017-03-27 15:40:08.000000000","message":"add \u003d\u003e Add\n\nPlease, file a blueprint","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"de179cbca56e073eff466442695edff4528f1194","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add pigz support for cinder-backup chunked driver compression"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I8b5381a22488a5b97b453fb8918053a3b2d4b1eb"},{"line_number":10,"context_line":"the python lib zlib used in chunked driver is too slow and"},{"line_number":11,"context_line":"we use pigz to speed up"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ffe62b97_b7bfbea8","line":11,"range":{"start_line":10,"start_character":1,"end_line":11,"end_character":22},"updated":"2017-03-28 13:06:47.000000000","message":"This should be above the Change-Id line.","commit_id":"0bbfd601564fb9f1f186b69d5a42fd566e0d9aaf"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"a8734f9be7d7d73ef3dee25cb942288ca5007d0f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"the python lib zlib used in chunked driver is too slow and"},{"line_number":10,"context_line":"we use pigz to speed up"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I8b5381a22488a5b97b453fb8918053a3b2d4b1eb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"dfeb2761_30744d35","line":11,"updated":"2017-03-31 19:29:51.000000000","message":"This change should probably have a blueprint associated with it since you are introducing a new type of compression.","commit_id":"faf796f480dde16cc6465d80bc3bad3a888d70eb"},{"author":{"_account_id":21224,"name":"jiaopengju","email":"jiaopengju_yewu@cmss.chinamobile.com","username":"jiaopengju"},"change_message_id":"5c1302aa631a07909448f5624f851d461d4664ed","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"the python lib zlib used in chunked driver is too slow and"},{"line_number":10,"context_line":"we use pigz to speed up"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I8b5381a22488a5b97b453fb8918053a3b2d4b1eb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"5ff73747_bb57b958","line":11,"updated":"2017-04-27 09:58:20.000000000","message":"add Implements blueprint xxxx in commit message","commit_id":"102538eea095ecae752781f61cef805e15a6ceaa"}],"add_parameter_to_enable_or_disable_pigz_in_cinder_backup__we_add_parameter_to_enable_or_di.patch":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"80ff9cb8f15dacd6b8dbfdecc8270dce543f8d50","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Index: cinder/cinder/backup/chunkeddriver.py"},{"line_number":2,"context_line":"IDEA additional info:"},{"line_number":3,"context_line":"Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP"},{"line_number":4,"context_line":"\u003c+\u003eUTF-8"}],"source_content_type":"text/x-diff","patch_set":3,"id":"ffe62b97_89bdb6d9","line":1,"updated":"2017-03-28 15:46:11.000000000","message":"Added by accident?","commit_id":"2e843bd3e3ad03adb82cbaf6a50645855cace2e1"}],"cinder/backup/chunkeddriver.py":[{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"01379d7b2c2679bd1d3d9288e9e5f682cd2d7a97","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        if self.compressor is None:"},{"line_number":345,"context_line":"            return \u0027none\u0027, data"},{"line_number":346,"context_line":"        data_size_bytes \u003d len(data)"},{"line_number":347,"context_line":"        if CONF.backup_swift_enable_pigz:"},{"line_number":348,"context_line":"            import subprocess"},{"line_number":349,"context_line":"            import fcntl"},{"line_number":350,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_cdb543cf","line":347,"range":{"start_line":347,"start_character":0,"end_line":347,"end_character":41},"updated":"2017-03-27 15:46:29.000000000","message":"Agree with other comment, please format code according to community hacking rules.","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"78f23a716d32df0cf0e18cf90cfa821cc6875e24","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        if self.compressor is None:"},{"line_number":345,"context_line":"            return \u0027none\u0027, data"},{"line_number":346,"context_line":"        data_size_bytes \u003d len(data)"},{"line_number":347,"context_line":"        if CONF.backup_swift_enable_pigz:"},{"line_number":348,"context_line":"            import subprocess"},{"line_number":349,"context_line":"            import fcntl"},{"line_number":350,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_0d2c4b97","line":347,"updated":"2017-03-27 15:40:08.000000000","message":"Please, don\u0027t put swift-specific code into the chunkeddriver","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e929f33266a3af4501dd487d34770e42d711c8e3","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        if self.compressor is None:"},{"line_number":345,"context_line":"            return \u0027none\u0027, data"},{"line_number":346,"context_line":"        data_size_bytes \u003d len(data)"},{"line_number":347,"context_line":"        if CONF.backup_swift_enable_pigz:"},{"line_number":348,"context_line":"            import subprocess"},{"line_number":349,"context_line":"            import fcntl"},{"line_number":350,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_0ded6b24","line":347,"updated":"2017-03-27 15:41:32.000000000","message":"Swift is not the only chunked backup driver, so the config option should not be defined there and used here.","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"78f23a716d32df0cf0e18cf90cfa821cc6875e24","unresolved":false,"context_lines":[{"line_number":345,"context_line":"            return \u0027none\u0027, data"},{"line_number":346,"context_line":"        data_size_bytes \u003d len(data)"},{"line_number":347,"context_line":"        if CONF.backup_swift_enable_pigz:"},{"line_number":348,"context_line":"            import subprocess"},{"line_number":349,"context_line":"            import fcntl"},{"line_number":350,"context_line":"            try:"},{"line_number":351,"context_line":"                p1 \u003d subprocess.Popen(\"pigz -9 -p 16 -k -c --zlib \", shell\u003dTrue, stdin\u003dsubprocess.PIPE,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_8d373be4","line":348,"updated":"2017-03-27 15:40:08.000000000","message":"import  should be in the top of file","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"01379d7b2c2679bd1d3d9288e9e5f682cd2d7a97","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            import subprocess"},{"line_number":349,"context_line":"            import fcntl"},{"line_number":350,"context_line":"            try:"},{"line_number":351,"context_line":"                p1 \u003d subprocess.Popen(\"pigz -9 -p 16 -k -c --zlib \", shell\u003dTrue, stdin\u003dsubprocess.PIPE,"},{"line_number":352,"context_line":"                                      stdout\u003dsubprocess.PIPE,"},{"line_number":353,"context_line":"                                      stderr\u003dsubprocess.PIPE)"},{"line_number":354,"context_line":"            except OSError as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_8dccdb61","line":351,"range":{"start_line":351,"start_character":38,"end_line":351,"end_character":65},"updated":"2017-03-27 15:46:29.000000000","message":"And add some notes about this command. For me it\u0027s not obvious what does the number 9 o 16 mean","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"78f23a716d32df0cf0e18cf90cfa821cc6875e24","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            import subprocess"},{"line_number":349,"context_line":"            import fcntl"},{"line_number":350,"context_line":"            try:"},{"line_number":351,"context_line":"                p1 \u003d subprocess.Popen(\"pigz -9 -p 16 -k -c --zlib \", shell\u003dTrue, stdin\u003dsubprocess.PIPE,"},{"line_number":352,"context_line":"                                      stdout\u003dsubprocess.PIPE,"},{"line_number":353,"context_line":"                                      stderr\u003dsubprocess.PIPE)"},{"line_number":354,"context_line":"            except OSError as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_8d3cdbbf","line":351,"updated":"2017-03-27 15:40:08.000000000","message":"Please, use oslo lib to execute enything","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e929f33266a3af4501dd487d34770e42d711c8e3","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            import subprocess"},{"line_number":349,"context_line":"            import fcntl"},{"line_number":350,"context_line":"            try:"},{"line_number":351,"context_line":"                p1 \u003d subprocess.Popen(\"pigz -9 -p 16 -k -c --zlib \", shell\u003dTrue, stdin\u003dsubprocess.PIPE,"},{"line_number":352,"context_line":"                                      stdout\u003dsubprocess.PIPE,"},{"line_number":353,"context_line":"                                      stderr\u003dsubprocess.PIPE)"},{"line_number":354,"context_line":"            except OSError as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_0d09ebdb","line":351,"updated":"2017-03-27 15:41:32.000000000","message":"This actual should follow the same pattern as the other compressors and be added in the _get_compressor() call.","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"81a306246eaff51cf571859d49fcf0f66575792a","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            import subprocess"},{"line_number":349,"context_line":"            import fcntl"},{"line_number":350,"context_line":"            try:"},{"line_number":351,"context_line":"                p1 \u003d subprocess.Popen(\"pigz -9 -p 16 -k -c --zlib \", shell\u003dTrue, stdin\u003dsubprocess.PIPE,"},{"line_number":352,"context_line":"                                      stdout\u003dsubprocess.PIPE,"},{"line_number":353,"context_line":"                                      stderr\u003dsubprocess.PIPE)"},{"line_number":354,"context_line":"            except OSError as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_a6dfae38","line":351,"range":{"start_line":351,"start_character":38,"end_line":351,"end_character":65},"in_reply_to":"ffe62b97_8dccdb61","updated":"2017-03-27 21:19:41.000000000","message":"Using compression level of -9 here is probably not the right answer.\n\nNeither is assuming there are 16 cores.","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e929f33266a3af4501dd487d34770e42d711c8e3","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                                      stdout\u003dsubprocess.PIPE,"},{"line_number":353,"context_line":"                                      stderr\u003dsubprocess.PIPE)"},{"line_number":354,"context_line":"            except OSError as e:"},{"line_number":355,"context_line":"                print e"},{"line_number":356,"context_line":"                raise"},{"line_number":357,"context_line":"            flags \u003d fcntl.fcntl(p1.stdout, fcntl.F_GETFL) \u0026 (~os.O_NONBLOCK)"},{"line_number":358,"context_line":"            fcntl.fcntl(p1.stdout, fcntl.F_SETFL, flags)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_0dd68b50","line":355,"updated":"2017-03-27 15:41:32.000000000","message":"Do not use print statements, especially in the old format, in driver code.","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"78f23a716d32df0cf0e18cf90cfa821cc6875e24","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                                      stdout\u003dsubprocess.PIPE,"},{"line_number":353,"context_line":"                                      stderr\u003dsubprocess.PIPE)"},{"line_number":354,"context_line":"            except OSError as e:"},{"line_number":355,"context_line":"                print e"},{"line_number":356,"context_line":"                raise"},{"line_number":357,"context_line":"            flags \u003d fcntl.fcntl(p1.stdout, fcntl.F_GETFL) \u0026 (~os.O_NONBLOCK)"},{"line_number":358,"context_line":"            fcntl.fcntl(p1.stdout, fcntl.F_SETFL, flags)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_2d770fa3","line":355,"updated":"2017-03-27 15:40:08.000000000","message":"print \u003d\u003e LOG.exception","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"de179cbca56e073eff466442695edff4528f1194","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    cfg.StrOpt(\u0027backup_compression_algorithm\u0027,"},{"line_number":49,"context_line":"               default\u003d\u0027zlib\u0027,"},{"line_number":50,"context_line":"               help\u003d\u0027Compression algorithm (None to disable)\u0027),"},{"line_number":51,"context_line":"    cfg.BoolOpt(\u0027backup_compression_enable_pigz\u0027,"},{"line_number":52,"context_line":"                default\u003dFalse,"},{"line_number":53,"context_line":"                help\u003d\u0027Enable or Disable pigz to compress data \u0027),"},{"line_number":54,"context_line":"    cfg.IntOpt(\u0027backup_compression_level_pigz\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_f792e656","line":51,"updated":"2017-03-28 13:06:47.000000000","message":"pigz should just be an option for the backup_compression_algorithm config option above.","commit_id":"0bbfd601564fb9f1f186b69d5a42fd566e0d9aaf"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d05e61f701ea5fe10b230c28e16e4a568759e904","unresolved":false,"context_lines":[{"line_number":49,"context_line":"               default\u003d\u0027zlib\u0027,"},{"line_number":50,"context_line":"               help\u003d\u0027Compression algorithm (None to disable)\u0027),"},{"line_number":51,"context_line":"    cfg.IntOpt(\u0027backup_compression_level_pigz\u0027,"},{"line_number":52,"context_line":"               default\u003d9,"},{"line_number":53,"context_line":"               help\u003d\u0027The compression level used by pigz\u0027),"},{"line_number":54,"context_line":"    cfg.IntOpt(\u0027backup_compression_threads_pigz\u0027,"},{"line_number":55,"context_line":"               default\u003d16,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_a4d41fea","line":52,"updated":"2017-03-28 16:03:13.000000000","message":"9 should not be the default. In the general case this will waste a lot of CPU time over the pigz default of 6.\n\nThis should default to None and add the argument if it is set to something other than None.\n\nAlso should use IntOpt params of min\u003d1, max\u003d9.","commit_id":"ab2615b29f8086e09972a2c6e3ef3e573b16cc1c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d05e61f701ea5fe10b230c28e16e4a568759e904","unresolved":false,"context_lines":[{"line_number":52,"context_line":"               default\u003d9,"},{"line_number":53,"context_line":"               help\u003d\u0027The compression level used by pigz\u0027),"},{"line_number":54,"context_line":"    cfg.IntOpt(\u0027backup_compression_threads_pigz\u0027,"},{"line_number":55,"context_line":"               default\u003d16,"},{"line_number":56,"context_line":"               help\u003d\u0027The compression threads used by pigz\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_640cd7a4","line":55,"updated":"2017-03-28 16:03:13.000000000","message":"Better to default this to None and let pigz opt to use its own default, which is the number of CPUs.  We can still have this option for deployers that want to set it differently.\n\nThe command generation below should only inject the \"-p\" argument if this option is not set to None.","commit_id":"ab2615b29f8086e09972a2c6e3ef3e573b16cc1c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b247f12f70e486bb66cd018d581af584800e0ea8","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            def compress(self, data):"},{"line_number":82,"context_line":"                try:"},{"line_number":83,"context_line":"                    # NOTE(yamada-h): processutils.execute causes busy waiting"},{"line_number":84,"context_line":"                    # under eventlet."},{"line_number":85,"context_line":"                    # To avoid wasting CPU resources, it should not be used for"},{"line_number":86,"context_line":"                    # the command which takes long time to execute."},{"line_number":87,"context_line":"                    # For workaround, we replace a subprocess module with"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_c41e03ba","line":84,"updated":"2017-03-28 16:05:28.000000000","message":"Is this really true?  Surprising if so...","commit_id":"ab2615b29f8086e09972a2c6e3ef3e573b16cc1c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cd2a7a02d8936ff994ea4ad7b817a2eb79c789ea","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                        \u0027subprocess\u0027)"},{"line_number":93,"context_line":"                    # pigz -p [compression threads] -k [keep original file] -c"},{"line_number":94,"context_line":"                    # [write all processed output to stdout] --zlib [output"},{"line_number":95,"context_line":"                    # format that python zlib can decompress]"},{"line_number":96,"context_line":"                    if CONF.backup_compression_threads_pigz is not None and CONF.backup_compression_level_pigz is not None:"},{"line_number":97,"context_line":"                        cmd \u003d \"pigz -%d -p %d -k -c --zlib\" % ("},{"line_number":98,"context_line":"                            CONF.backup_compression_level_pigz, CONF.backup_compression_threads_pigz)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_86268e67","line":95,"updated":"2017-03-29 15:09:13.000000000","message":"This can be done much more simply:\n\ncmd \u003d \"pigz -k -c --zlib\"\n\nif compression:\n    cmd +\u003d \" -%d\" % compression\n\nif threads:\n    cmd +\u003d \"-p %d\" % threads\n\n\netc.","commit_id":"f42669bb7d57363bad75897016786544407fe632"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bdf08bbd222244eeaea734ea941bb50846e40b13","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                    _processutils_subprocess \u003d processutils.subprocess"},{"line_number":128,"context_line":"                    processutils.subprocess \u003d eventlet.patcher.original("},{"line_number":129,"context_line":"                        \u0027subprocess\u0027)"},{"line_number":130,"context_line":"                    cmd \u003d \"pigz -d -c --zlib\""},{"line_number":131,"context_line":"                    LOG.debug(\u0027pigz decompress command: %s.\u0027, cmd)"},{"line_number":132,"context_line":"                    return processutils.execute("},{"line_number":133,"context_line":"                        cmd, shell\u003dTrue, process_input\u003ddata)[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_06ef1ee9","line":130,"updated":"2017-03-29 15:11:02.000000000","message":"Should not specify --zlib for decompression command.","commit_id":"f42669bb7d57363bad75897016786544407fe632"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"eda5309848135c3cd10a72da4dddd734585e4619","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    DRIVER_VERSION_MAPPING \u003d {\u00271.0.0\u0027: \u0027_restore_v1\u0027}"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def _get_pigz_compressor(self):"},{"line_number":80,"context_line":"        class _pigz_compressor:"},{"line_number":81,"context_line":"            def compress(self, data):"},{"line_number":82,"context_line":"                try:"},{"line_number":83,"context_line":"                    # NOTE(yamada-h): processutils.execute causes busy waiting"}],"source_content_type":"text/x-python","patch_set":9,"id":"ffe62b97_0c761f3f","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":31},"updated":"2017-03-29 15:51:55.000000000","message":"you still will have pep8 error here","commit_id":"2a44b436ea87d0e4268a36649051ab0f908136fa"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"295ecaca085dfb94f2801e2364909644f51c2924","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    cfg.IntOpt(\u0027backup_compression_level_pigz\u0027,"},{"line_number":52,"context_line":"               default\u003dNone,"},{"line_number":53,"context_line":"               help\u003d\u0027The compression level used by pigz\u0027"},{"line_number":54,"context_line":"                    \u0027 (None to default,Min\u003d1,Max\u003d9)\u0027),"},{"line_number":55,"context_line":"    cfg.IntOpt(\u0027backup_compression_threads_pigz\u0027,"},{"line_number":56,"context_line":"               default\u003dNone,"},{"line_number":57,"context_line":"               help\u003d\u0027The compression threads used by pigz\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_acd00ff9","line":54,"updated":"2017-03-31 14:57:36.000000000","message":"Add max\u003d9 to the IntOpt call here.","commit_id":"faf796f480dde16cc6465d80bc3bad3a888d70eb"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"c8245b080bbcded5a6cf67936ef1cf85eca7e8ab","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _get_pigz_compressor(self):"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        class _Pigz_Compressor(object):"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"            def compress(self, data):"},{"line_number":86,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_8b615108","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":39},"updated":"2017-04-04 14:31:02.000000000","message":"And really, why do we need this class here?\nI think it must be moved somewhere from ChunkedDriver class","commit_id":"faf796f480dde16cc6465d80bc3bad3a888d70eb"},{"author":{"_account_id":21224,"name":"jiaopengju","email":"jiaopengju_yewu@cmss.chinamobile.com","username":"jiaopengju"},"change_message_id":"05c80f709e4a5f97cb991582e0e31823c38582b6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                    # pigz -p [compression threads] -k [keep original file] -c"},{"line_number":98,"context_line":"                    # [write all processed output to stdout] --zlib [output"},{"line_number":99,"context_line":"                    # format that python zlib can decompress]"},{"line_number":100,"context_line":"                    cmd \u003d \"pigz -k -c --zlib\""},{"line_number":101,"context_line":"                    if CONF.backup_compression_threads_pigz:"},{"line_number":102,"context_line":"                        cmd +\u003d \" -p %d\" % CONF.backup_compression_threads_pigz"},{"line_number":103,"context_line":"                    if CONF.backup_compression_level_pigz:"},{"line_number":104,"context_line":"                        cmd +\u003d \" -%d\" % CONF.backup_compression_level_pigz"},{"line_number":105,"context_line":"                    LOG.debug(\u0027pigz compress command: %s.\u0027, cmd)"},{"line_number":106,"context_line":"                    return processutils.execute("},{"line_number":107,"context_line":"                        cmd, shell\u003dTrue, process_input\u003ddata)[0]"}],"source_content_type":"text/x-python","patch_set":11,"id":"5ff73747_969f595e","line":104,"range":{"start_line":100,"start_character":20,"end_line":104,"end_character":74},"updated":"2017-04-26 12:10:39.000000000","message":"I think it should be better to use \" \u0027xxx\u0027.format()\" here instead of \"+\u003d\". Same time you can set default threads and level value in CONF.  \nFYI.","commit_id":"faf796f480dde16cc6465d80bc3bad3a888d70eb"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"295ecaca085dfb94f2801e2364909644f51c2924","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                    LOG.debug(\u0027pigz compress command: %s.\u0027, cmd)"},{"line_number":106,"context_line":"                    return processutils.execute("},{"line_number":107,"context_line":"                        cmd, shell\u003dTrue, process_input\u003ddata)[0]"},{"line_number":108,"context_line":"                except (processutils.ProcessExecutionError, OSError):"},{"line_number":109,"context_line":"                    LOG.error("},{"line_number":110,"context_line":"                        \u0027pigz compress volume data have problem\u0027)"},{"line_number":111,"context_line":"                    msg \u003d _(\u0027pigz compress volume data error\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfeb2761_4cc2a335","line":108,"updated":"2017-03-31 14:57:36.000000000","message":"Doesn\u0027t OSError only occur here if \"pigz\" is not installed?\n\nI think this can be split to generate a more specific error message.","commit_id":"faf796f480dde16cc6465d80bc3bad3a888d70eb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"210822c8a9bcc66ae9e364ee53dbdbbadaf877e6","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        self.az \u003d CONF.storage_availability_zone"},{"line_number":107,"context_line":"        self.backup_compression_algorithm \u003d CONF.backup_compression_algorithm"},{"line_number":108,"context_line":"        self.compressor \u003d \\"},{"line_number":109,"context_line":"            self._get_compressor(CONF.backup_compression_algorithm)"},{"line_number":110,"context_line":"        self.support_force_delete \u003d True"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    # To create your own \"chunked\" backup driver, implement the following"}],"source_content_type":"text/x-python","patch_set":25,"id":"df140735_fc2f5385","line":109,"range":{"start_line":109,"start_character":12,"end_line":109,"end_character":67},"updated":"2017-06-03 01:43:19.000000000","message":"Maybe check and store version here, or maybe there\u0027s a better way that keeps the specifics out of here.","commit_id":"57b9b8d517e8269becc12716ca44bbba0b2c0629"}],"cinder/backup/compressors/pigz.py":[{"author":{"_account_id":25859,"name":"zhangyanmin","email":"xntg@sina.com"},"change_message_id":"0df55b2b773c19e26253dd8768e778384edbd9ae","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Canonical Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ff73747_5be1d529","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2017-04-27 09:45:51.000000000","message":"2017","commit_id":"bcbba1ae682cc78cdf17a3213035acd7f1ff799e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"0c1065e8826bc02e28ad74a3ef4294a1f8e3dec6","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        Compress data in one shot."},{"line_number":66,"context_line":"        \"\"\""},{"line_number":67,"context_line":"    try:"},{"line_number":68,"context_line":"        check_pigz_version()"},{"line_number":69,"context_line":"        _processutils_subprocess \u003d processutils.subprocess"},{"line_number":70,"context_line":"        processutils.subprocess \u003d eventlet.patcher.original("},{"line_number":71,"context_line":"            \u0027subprocess\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5ff73747_0e33fc63","line":68,"updated":"2017-04-27 15:36:32.000000000","message":"This should be split into two blocks of\n\n    try: \n        check_pigz_version()\n    except CompressorError:\n        \u003cstuff\u003e\n\n    try:\n        processutils....\n    except processutils.ProcessExecutionError:","commit_id":"ceecdcc4672b7d8a0342f22aa368b2366f3ab0a6"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"587d94cf2d2c4c296a98ceafb413e394aa81a9fb","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def compress(data):"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    \"\"\""},{"line_number":66,"context_line":"        Compress data in one shot."},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    try:"},{"line_number":70,"context_line":"        check_pigz_version()"}],"source_content_type":"text/x-python","patch_set":19,"id":"5ff73747_cab9fbe9","line":67,"range":{"start_line":64,"start_character":0,"end_line":67,"end_character":11},"updated":"2017-05-03 10:14:53.000000000","message":"Same","commit_id":"3f3f273741aeeaf17a2a75e42059c409b22e2fbe"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"587d94cf2d2c4c296a98ceafb413e394aa81a9fb","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def decompress(data):"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    \"\"\""},{"line_number":100,"context_line":"       Decompress data in one shot."},{"line_number":101,"context_line":"       \"\"\""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    try:"},{"line_number":104,"context_line":"        check_pigz_version()"}],"source_content_type":"text/x-python","patch_set":19,"id":"5ff73747_eab4b7f4","line":101,"range":{"start_line":98,"start_character":0,"end_line":101,"end_character":10},"updated":"2017-05-03 10:14:53.000000000","message":"It could be in one line","commit_id":"3f3f273741aeeaf17a2a75e42059c409b22e2fbe"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dc75fdfba94188c8131d1f85486e64e6b00f71a9","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder.i18n import _"},{"line_number":27,"context_line":"from cinder import utils"},{"line_number":28,"context_line":"from oslo_concurrency import processutils"},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"from oslo_log import log as logging"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"df140735_84b87076","line":30,"range":{"start_line":28,"start_character":0,"end_line":30,"end_character":34},"updated":"2017-05-31 00:59:54.000000000","message":"These should be in a separate third party import group between the standard imports and the local cinder imports.","commit_id":"329a5c997fb85d875e8abfcd07bdaa55bf80bd8c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dc75fdfba94188c8131d1f85486e64e6b00f71a9","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    try:"},{"line_number":68,"context_line":"        check_pigz_version()"},{"line_number":69,"context_line":"    except CompressorError:"},{"line_number":70,"context_line":"        LOG.error("},{"line_number":71,"context_line":"            \u0027pigz is not installed.\u0027)"},{"line_number":72,"context_line":"        msg \u003d _(\u0027pigz is not installed.\u0027)"},{"line_number":73,"context_line":"        raise exception.BackupOperationError(msg)"},{"line_number":74,"context_line":"    try:"},{"line_number":75,"context_line":"        _processutils_subprocess \u003d processutils.subprocess"},{"line_number":76,"context_line":"        processutils.subprocess \u003d eventlet.patcher.original("}],"source_content_type":"text/x-python","patch_set":21,"id":"df140735_a44ff490","line":73,"range":{"start_line":70,"start_character":8,"end_line":73,"end_character":49},"updated":"2017-05-31 00:59:54.000000000","message":"I would rather see all of this in check_pigz_version() and just have it raise the BackupOperationsError from there.\n\nAlso, since it is the same string, just do:\n\nmsg \u003d _(\u0027pigz is not installed\u0027)\nLOG.error(msg)\nraise exception.BackupOperationError(msg)","commit_id":"329a5c997fb85d875e8abfcd07bdaa55bf80bd8c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dc75fdfba94188c8131d1f85486e64e6b00f71a9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        return processutils.execute("},{"line_number":85,"context_line":"            cmd, shell\u003dTrue, process_input\u003ddata)[0]"},{"line_number":86,"context_line":"    except processutils.ProcessExecutionError:"},{"line_number":87,"context_line":"        LOG.error("},{"line_number":88,"context_line":"            \u0027pigz decompress volume data failed\u0027)"},{"line_number":89,"context_line":"        msg \u003d _(\u0027pigz decompress volume data failed\u0027)"},{"line_number":90,"context_line":"        raise exception.BackupOperationError(msg)"},{"line_number":91,"context_line":"    finally:"},{"line_number":92,"context_line":"        processutils.subprocess \u003d _processutils_subprocess"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"df140735_245be454","line":90,"range":{"start_line":87,"start_character":8,"end_line":90,"end_character":48},"updated":"2017-05-31 00:59:54.000000000","message":"Same comment about the duplicate string here.","commit_id":"329a5c997fb85d875e8abfcd07bdaa55bf80bd8c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dc75fdfba94188c8131d1f85486e64e6b00f71a9","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    except processutils.ProcessExecutionError:"},{"line_number":115,"context_line":"        LOG.error("},{"line_number":116,"context_line":"            \u0027pigz decompress volume data failed\u0027)"},{"line_number":117,"context_line":"        msg \u003d _(\u0027pigz decompress volume data failed\u0027)"},{"line_number":118,"context_line":"        raise exception.BackupOperationError(msg)"},{"line_number":119,"context_line":"    finally:"},{"line_number":120,"context_line":"        processutils.subprocess \u003d _processutils_subprocess"}],"source_content_type":"text/x-python","patch_set":21,"id":"df140735_045a204e","line":117,"range":{"start_line":117,"start_character":8,"end_line":117,"end_character":11},"updated":"2017-05-31 00:59:54.000000000","message":"Same.","commit_id":"329a5c997fb85d875e8abfcd07bdaa55bf80bd8c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"568d407fa6519efa9b663eef4177ac3ac3faf6a5","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder.i18n import _"},{"line_number":27,"context_line":"from cinder import utils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from oslo_concurrency import processutils"},{"line_number":30,"context_line":"from oslo_config import cfg"},{"line_number":31,"context_line":"from oslo_log import log as logging"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"df140735_34fe6937","line":31,"range":{"start_line":29,"start_character":0,"end_line":31,"end_character":24},"updated":"2017-05-31 11:13:03.000000000","message":"this needs to move up before the local cinder imports.","commit_id":"f1b52310f29786091a3ece454a6555b0ce636869"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"568d407fa6519efa9b663eef4177ac3ac3faf6a5","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        return processutils.execute("},{"line_number":82,"context_line":"            cmd, shell\u003dTrue, process_input\u003ddata)[0]"},{"line_number":83,"context_line":"    except processutils.ProcessExecutionError:"},{"line_number":84,"context_line":"        LOG.error("},{"line_number":85,"context_line":"            \u0027pigz decompress volume data failed\u0027)"},{"line_number":86,"context_line":"        msg \u003d _(\u0027pigz decompress volume data failed\u0027)"},{"line_number":87,"context_line":"        raise exception.BackupOperationError(msg)"},{"line_number":88,"context_line":"    finally:"},{"line_number":89,"context_line":"        processutils.subprocess \u003d _processutils_subprocess"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"df140735_94a2d54a","line":87,"range":{"start_line":84,"start_character":7,"end_line":87,"end_character":49},"updated":"2017-05-31 11:13:03.000000000","message":"This still needs to change to use one string for both the log and exception.","commit_id":"f1b52310f29786091a3ece454a6555b0ce636869"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"568d407fa6519efa9b663eef4177ac3ac3faf6a5","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        return processutils.execute("},{"line_number":104,"context_line":"            cmd, shell\u003dTrue, process_input\u003ddata)[0]"},{"line_number":105,"context_line":"    except processutils.ProcessExecutionError:"},{"line_number":106,"context_line":"        LOG.error("},{"line_number":107,"context_line":"            \u0027pigz decompress volume data failed\u0027)"},{"line_number":108,"context_line":"        msg \u003d _(\u0027pigz decompress volume data failed\u0027)"},{"line_number":109,"context_line":"        raise exception.BackupOperationError(msg)"},{"line_number":110,"context_line":"    finally:"},{"line_number":111,"context_line":"        processutils.subprocess \u003d _processutils_subprocess"}],"source_content_type":"text/x-python","patch_set":23,"id":"df140735_748981c8","line":109,"range":{"start_line":106,"start_character":8,"end_line":109,"end_character":49},"updated":"2017-05-31 11:13:03.000000000","message":"Here too.","commit_id":"f1b52310f29786091a3ece454a6555b0ce636869"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bf5a6a58fa7f8d420d5daeefb0d537934f04ff29","unresolved":false,"context_lines":[{"line_number":49,"context_line":"CONF.register_opts(chunkedbackup_compressors_opts)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class CompressorError(Exception):"},{"line_number":53,"context_line":"    pass"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"df140735_0e4c1b40","line":52,"range":{"start_line":52,"start_character":6,"end_line":52,"end_character":21},"updated":"2017-06-02 15:13:49.000000000","message":"This doesn\u0027t appear to be used anywhere, should be removed.","commit_id":"ebfd25e66e3f933fd60443826a9c9756185fb749"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"993006c0905bca6edc45e934573c5f605ad4c7cf","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    \"\"\"Compress data in one shot.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    check_pigz_version()"},{"line_number":67,"context_line":"    try:"},{"line_number":68,"context_line":"        _processutils_subprocess \u003d processutils.subprocess"},{"line_number":69,"context_line":"        processutils.subprocess \u003d eventlet.patcher.original("}],"source_content_type":"text/x-python","patch_set":25,"id":"df140735_d9326ff2","line":66,"updated":"2017-06-02 15:36:19.000000000","message":"Won\u0027t running check_pigz_version() for every backup chunk be awful for performance?","commit_id":"57b9b8d517e8269becc12716ca44bbba0b2c0629"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"210822c8a9bcc66ae9e364ee53dbdbbadaf877e6","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    \"\"\"Compress data in one shot.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    check_pigz_version()"},{"line_number":67,"context_line":"    try:"},{"line_number":68,"context_line":"        _processutils_subprocess \u003d processutils.subprocess"},{"line_number":69,"context_line":"        processutils.subprocess \u003d eventlet.patcher.original("}],"source_content_type":"text/x-python","patch_set":25,"id":"df140735_7916b557","line":66,"in_reply_to":"df140735_d9326ff2","updated":"2017-06-03 01:43:19.000000000","message":"Does seem kinda heavy, maybe you could do this once in init of chunkeddrriver.py and set a self var to capture it?","commit_id":"57b9b8d517e8269becc12716ca44bbba0b2c0629"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f7ccbea4ab6e90eb741b85a0a39ea0435b439c3c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               min\u003d1,"},{"line_number":39,"context_line":"               max\u003d9,"},{"line_number":40,"context_line":"               help\u003d\u0027The compression level used by pigz\u0027"},{"line_number":41,"context_line":"                    \u0027 (None to default,Min\u003d1,Max\u003d9)\u0027),"},{"line_number":42,"context_line":"    cfg.IntOpt(\u0027backup_compression_threads_pigz\u0027,"},{"line_number":43,"context_line":"               default\u003dNone,"},{"line_number":44,"context_line":"               help\u003d\u0027The compression threads used by pigz\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"7f231b9d_d8b8742b","line":41,"range":{"start_line":41,"start_character":38,"end_line":41,"end_character":39},"updated":"2017-06-13 16:08:15.000000000","message":"Only if you need to do another update, add spaces after these commas to make this more readable.","commit_id":"ff3f93a618b023aafa0bd8d6bedf504e2c6cae88"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"717e912149d13e8e426c3fbfab544a98038251e0","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    info \u003d utils.execute(\u0027pigz\u0027, \u0027--version\u0027, check_exit_code\u003dFalse)[1]"},{"line_number":54,"context_line":"    pattern \u003d r\"pigz [0-9\\.]*\""},{"line_number":55,"context_line":"    version \u003d re.match(pattern, info)"},{"line_number":56,"context_line":"    if not version:"},{"line_number":57,"context_line":"        msg \u003d _(\u0027pigz is not installed\u0027)"},{"line_number":58,"context_line":"        LOG.error(msg)"},{"line_number":59,"context_line":"        raise exception.BackupOperationError(msg)"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f231b9d_125d1d46","line":56,"updated":"2017-06-19 07:59:57.000000000","message":"OSError will be raised it pigz is not installed:\nhttp://paste.openstack.org/show/613069/","commit_id":"0ad8cbef80d13b6e3fc7b2694408fdf56ce5cacf"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"717e912149d13e8e426c3fbfab544a98038251e0","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def compress(data):"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    \"\"\"Compress data in one shot.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f231b9d_b2330914","line":63,"updated":"2017-06-19 07:59:57.000000000","message":"Please, remove empty line here","commit_id":"0ad8cbef80d13b6e3fc7b2694408fdf56ce5cacf"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"717e912149d13e8e426c3fbfab544a98038251e0","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            cmd, shell\u003dTrue, process_input\u003ddata)[0]"},{"line_number":78,"context_line":"    except processutils.ProcessExecutionError:"},{"line_number":79,"context_line":"        msg \u003d _(\u0027pigz decompress volume data failed\u0027)"},{"line_number":80,"context_line":"        LOG.error(msg)"},{"line_number":81,"context_line":"        raise exception.BackupOperationError(msg)"},{"line_number":82,"context_line":"    finally:"},{"line_number":83,"context_line":"        processutils.subprocess \u003d _processutils_subprocess"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f231b9d_ad7baa89","line":80,"updated":"2017-06-19 07:59:57.000000000","message":"LOG.error \u003d\u003e LOG.exception","commit_id":"0ad8cbef80d13b6e3fc7b2694408fdf56ce5cacf"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"717e912149d13e8e426c3fbfab544a98038251e0","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def decompress(data):"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    \"\"\"Decompress data in one shot.\"\"\""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f231b9d_ada04af5","line":87,"updated":"2017-06-19 07:59:57.000000000","message":"We don\u0027t need this empty line","commit_id":"0ad8cbef80d13b6e3fc7b2694408fdf56ce5cacf"}],"cinder/backup/drivers/swift.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e929f33266a3af4501dd487d34770e42d711c8e3","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                     \u0027default value is True to enable the timer.\u0027),"},{"line_number":129,"context_line":"    cfg.BoolOpt(\u0027backup_swift_enable_pigz\u0027,"},{"line_number":130,"context_line":"                default\u003dFalse,"},{"line_number":131,"context_line":"                help\u003d\u0027Enable or Disable the pigz to compress data \u0027"},{"line_number":132,"context_line":"                     \u0027default value is False to disable the pigz.\u0027),"},{"line_number":133,"context_line":"    cfg.StrOpt(\u0027backup_swift_ca_cert_file\u0027,"},{"line_number":134,"context_line":"               help\u003d\u0027Location of the CA certificate file to use for swift \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_8daa9bcf","line":131,"updated":"2017-03-27 15:41:32.000000000","message":"Change both references of \"the pigz\" to just \"pigz\".\n\nAdd a period after \"data\" and capitalize \"Default\", so it\u0027s \"compress data. Default value is\"","commit_id":"b7fc883d11330428623a256e9b9fc314409bcf19"}],"cinder/tests/unit/backup/drivers/test_backup_swift.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e6e14615bbc77f9a7e68ce7045a969addd1321e2","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        service.backup(backup, self.volume_file)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def test_backup_pigz(self):"},{"line_number":320,"context_line":"        volume_id \u003d \u00275cea0535-b6fb-4531-9a38-000000bea094\u0027"},{"line_number":321,"context_line":"        self._create_backup_db_entry(volume_id\u003dvolume_id)"},{"line_number":322,"context_line":"        self.flags(backup_compression_algorithm\u003d\u0027pigz\u0027)"},{"line_number":323,"context_line":"        service \u003d swift_dr.SwiftBackupDriver(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":33,"id":"df3967d1_3b779e3d","line":320,"updated":"2017-07-31 16:05:05.000000000","message":"Change the UUID to be different from test_backup_zlib, each other test here uses a different id.","commit_id":"dbbea81d8ee2646063ceb916977d89fe04334e51"}],"releasenotes/notes/add-pigz-compress-algorithm-for-cinder-backup-chunked-driver-0cd47c0edee8e08d.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"cd73e6ab1bb5d19a80a5cc829f3386e1b2e9c0be","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Add pigz compress algorithm for cinder backup chunked driver."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"7f231b9d_54a185f7","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":7},"updated":"2017-06-15 15:20:48.000000000","message":"This prelude section should be removed too. This isn\u0027t a major pike release item for Cinder.","commit_id":"11a0167cfae302158f6f4f99acd8e67e453372a3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"cd73e6ab1bb5d19a80a5cc829f3386e1b2e9c0be","unresolved":false,"context_lines":[{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - |"},{"line_number":6,"context_line":"    Add pigz compress algorithm for cinder backup chunked driver"},{"line_number":7,"context_line":"    set compression level of pigz algorithm through backup_compression_level_pigz,"},{"line_number":8,"context_line":"    None to default, Min to 1, Max to 9"},{"line_number":9,"context_line":"    set compression thread of pigz algorithm through backup_compression_threads_pigz"},{"line_number":10,"context_line":"    None to default, which is 8 processors"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"7f231b9d_347ba97b","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":5},"updated":"2017-06-15 15:20:48.000000000","message":"Please start each of these sentences with an upper case letter and end with a period.\n\nConfig options can also be put inside ` characters so they show up formatted in the HTML output.","commit_id":"11a0167cfae302158f6f4f99acd8e67e453372a3"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"29bb5b0ba8c6635a28c51f4e91e6df03905f5330","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    set compression thread of pigz algorithm through backup_compression_threads_pigz"},{"line_number":10,"context_line":"    None to default, which is 8 processors"},{"line_number":11,"context_line":"    enable pigz compress algorithm by set backup_compression_algorithm \u003d pigz"},{"line_number":12,"context_line":"    "}],"source_content_type":"text/x-yaml","patch_set":28,"id":"7f231b9d_f43c11c9","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":4},"updated":"2017-06-15 15:17:26.000000000","message":"just remove it","commit_id":"11a0167cfae302158f6f4f99acd8e67e453372a3"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"6c939c614f84eefa323dcf2e6a06930d451ff522","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add pigz compress algorithm for cinder backup chunked driver."},{"line_number":5,"context_line":"    Set compression level of pigz algorithm through `backup_compression_level_pigz`."},{"line_number":6,"context_line":"    None to default, Min to 1, Max to 9."},{"line_number":7,"context_line":"    Set compression thread of pigz algorithm through `backup_compression_threads_pigz`."}],"source_content_type":"text/x-yaml","patch_set":30,"id":"7f231b9d_7ba7c90c","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":31},"updated":"2017-06-15 19:19:03.000000000","message":"I\u0027m not sure this is appropriate wording for a release note -- the algorithm is just zlib, and pigz is an optimized implementation of it.\n\nThe code and config calls it the \"algorithm\" but this is not really accurate from a deployer\u0027s point of view.","commit_id":"46bcc45d8b4fc07e5599a3e2d42c666549048b25"}]}
