)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fd17d6af58fb07110e2892fda453aab4fb7f5b9f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make getting token revocation list 9x faster on Mysql"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"For Mysql, (valid, expires) key is better than (expires, valid)"},{"line_number":10,"context_line":"for getting token revocation list query."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"If both exist, it will pick up (valid, expires):"},{"line_number":13,"context_line":"explain SELECT token.id AS token_id, token.expires AS token_expires FROM"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a26ad4f_b7f08968","line":10,"updated":"2015-11-02 12:25:48.000000000","message":"could you pls explain a little bit why index of (valid, expires) is better than (expires, valid)?  i know it\u0027s hard to prove by the testcase but it will be helpful if given some explanation here. \n\nSeem like this depends on what\u0027s the value of token.valid and token.expires?","commit_id":"5f030ffc37df596480fa2d9d1d4f02995db32182"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fd17d6af58fb07110e2892fda453aab4fb7f5b9f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003d 0;"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"1 SIMPLE  token range ix_token_expires_valid,ix_token_valid_expires"},{"line_number":18,"context_line":"ix_token_valid_expires  6 NULL  49  Using where; Using index"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Did a real test on a one million token table node, it is about:"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a26ad4f_f71e01ba","line":18,"updated":"2015-11-02 12:25:48.000000000","message":"what does these statements means?","commit_id":"5f030ffc37df596480fa2d9d1d4f02995db32182"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"958009a2e6a71253d2d9b381e61bed7e1a2ae0dd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"1 SIMPLE  token range ix_token_expires_valid,ix_token_valid_expires"},{"line_number":18,"context_line":"ix_token_valid_expires  6 NULL  49  Using where; Using index"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Did a real test on a one million token table node, it is about:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"70ms vs 600ms"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9a8ffd7b_fab5e230","line":20,"updated":"2015-12-01 11:36:53.000000000","message":"How was the table ? What type of tokens were there ? I think we need more information about how the tests were performed.\n\nI believe Matt Fischer (mfisch) and Dolph Mathews (dolphm) in #openstack-keystone are great resources to ask about how to properly setup token performance tests and post your results for supporting you commit message.","commit_id":"0a46565527264c43b00290f480dd8c0d70162680"},{"author":{"_account_id":18981,"name":"Fangzhou Xu","email":"fangxu@ebaysf.com","username":"fangxu"},"change_message_id":"b21e725eeafebeec08fce9b5c91308da0fb4b759","unresolved":false,"context_lines":[{"line_number":17,"context_line":"1 SIMPLE  token range ix_token_expires_valid,ix_token_valid_expires"},{"line_number":18,"context_line":"ix_token_valid_expires  6 NULL  49  Using where; Using index"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Did a real test on a one million token table node, it is about:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"70ms vs 600ms"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7a740942_31a1e6f8","line":20,"in_reply_to":"9a8ffd7b_fab5e230","updated":"2015-12-11 22:25:38.000000000","message":"It is the token table, token type is PKIZ. You can check the test program and result here:\n\nhttps://gist.github.com/arkxu/a2cd8b24d9196552798c\n\nLet me know if you have any further questions.","commit_id":"0a46565527264c43b00290f480dd8c0d70162680"}],"keystone/common/sql/migrate_repo/versions/087_switch_index_order_in_token_table.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"86054f11010f4fe2110c158d121c9b4fb19acfa8","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    sql.Index(\u0027ix_token_expires_valid\u0027, token.c.expires,"},{"line_number":25,"context_line":"              token.c.valid).drop()"},{"line_number":26,"context_line":"    sql.Index(\u0027ix_token_valid_expires\u0027, token.c.valid,"},{"line_number":27,"context_line":"              token.c.expires).create()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_e1702f42","line":27,"range":{"start_line":26,"start_character":3,"end_line":27,"end_character":39},"updated":"2016-01-06 17:41:25.000000000","message":"will this lock the table?","commit_id":"05fa5fd95652a362f775222d4e92e96e2318a94c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"1859d5e3644c5b4fb56bdc2f90a7cde315b6aaa8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    sql.Index(\u0027ix_token_expires_valid\u0027, token.c.expires,"},{"line_number":25,"context_line":"              token.c.valid).drop()"},{"line_number":26,"context_line":"    sql.Index(\u0027ix_token_valid_expires\u0027, token.c.valid,"},{"line_number":27,"context_line":"              token.c.expires).create()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_a4456243","line":27,"in_reply_to":"fa69d971_e1702f42","updated":"2016-01-06 19:30:22.000000000","message":"For writes, certainly. Not sure about reads (might depend on if they\u0027re trying to hit this index or not?).","commit_id":"05fa5fd95652a362f775222d4e92e96e2318a94c"},{"author":{"_account_id":18981,"name":"Fangzhou Xu","email":"fangxu@ebaysf.com","username":"fangxu"},"change_message_id":"0894a19d51f17b067a69f1390e6da3dc98756720","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    sql.Index(\u0027ix_token_expires_valid\u0027, token.c.expires,"},{"line_number":25,"context_line":"              token.c.valid).drop()"},{"line_number":26,"context_line":"    sql.Index(\u0027ix_token_valid_expires\u0027, token.c.valid,"},{"line_number":27,"context_line":"              token.c.expires).create()"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_0395a585","line":27,"range":{"start_line":26,"start_character":3,"end_line":27,"end_character":39},"in_reply_to":"fa69d971_e1702f42","updated":"2016-02-24 01:31:12.000000000","message":"create index is fast. the total time in a million records takes about one second.","commit_id":"05fa5fd95652a362f775222d4e92e96e2318a94c"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f984acabd573c84e2986f54b441c94f76d926082","unresolved":false,"context_lines":[{"line_number":648,"context_line":"        table \u003d sqlalchemy.Table(\u0027token\u0027, self.metadata, autoload\u003dTrue)"},{"line_number":649,"context_line":"        index_data \u003d [(idx.name, list(idx.columns.keys()))"},{"line_number":650,"context_line":"                      for idx in table.indexes]"},{"line_number":651,"context_line":"        self.assertNotIn((\u0027ix_token_expires_valid\u0027, [\u0027expires\u0027, \u0027valid\u0027]),"},{"line_number":652,"context_line":"                         index_data)"},{"line_number":653,"context_line":"        self.assertIn((\u0027ix_token_valid_expires\u0027, [\u0027valid\u0027, \u0027expires\u0027]),"},{"line_number":654,"context_line":"                      index_data)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a26ad4f_3da138aa","line":651,"updated":"2015-10-28 02:35:12.000000000","message":"maybe also add an \"assertIn(ix_token_expires_valid)\" before the migration?","commit_id":"5f030ffc37df596480fa2d9d1d4f02995db32182"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"958009a2e6a71253d2d9b381e61bed7e1a2ae0dd","unresolved":false,"context_lines":[{"line_number":808,"context_line":"        self.assertTableDoesNotExist(\u0027endpoint_group\u0027)"},{"line_number":809,"context_line":"        self.assertTableDoesNotExist(\u0027project_endpoint_group\u0027)"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    def test_switch_index_order_in_token_table(self):"},{"line_number":812,"context_line":"        self.upgrade(86)"},{"line_number":813,"context_line":"        table \u003d sqlalchemy.Table(\u0027token\u0027, self.metadata, autoload\u003dTrue)"},{"line_number":814,"context_line":"        index_data \u003d [(idx.name, list(idx.columns.keys()))"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a8ffd7b_9feda890","line":811,"updated":"2015-12-01 11:36:53.000000000","message":"Assert the old order before upgrade","commit_id":"0a46565527264c43b00290f480dd8c0d70162680"},{"author":{"_account_id":18981,"name":"Fangzhou Xu","email":"fangxu@ebaysf.com","username":"fangxu"},"change_message_id":"b21e725eeafebeec08fce9b5c91308da0fb4b759","unresolved":false,"context_lines":[{"line_number":808,"context_line":"        self.assertTableDoesNotExist(\u0027endpoint_group\u0027)"},{"line_number":809,"context_line":"        self.assertTableDoesNotExist(\u0027project_endpoint_group\u0027)"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    def test_switch_index_order_in_token_table(self):"},{"line_number":812,"context_line":"        self.upgrade(86)"},{"line_number":813,"context_line":"        table \u003d sqlalchemy.Table(\u0027token\u0027, self.metadata, autoload\u003dTrue)"},{"line_number":814,"context_line":"        index_data \u003d [(idx.name, list(idx.columns.keys()))"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a8ffd7b_b7d3cc37","line":811,"in_reply_to":"9a8ffd7b_9feda890","updated":"2015-12-11 22:25:38.000000000","message":"Thanks for the feedback. I am not sure it is the right place to test previous migration function. If it has to be tested, it should be done in version 44, but hostly I don\u0027t think it is necessary (I don\u0027t see any test cases for 44 either).","commit_id":"0a46565527264c43b00290f480dd8c0d70162680"}]}
