)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"82143c75eb605546419dbbd09b0b60c915a3ca86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"880c738a_65bde0ce","updated":"2026-03-02 06:07:15.000000000","message":"@rosmaita.fossdev@gmail.com, @jobernar@redhat.com and @rajatdhasmana@gmail.com, could please review this patch.","commit_id":"9d6c7806cf3ae2322d1b424d33bd6b609edb3815"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"a7c9687d0d9dbdaf2d6e71453170ab0673b94dca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"746efc90_ee7df339","updated":"2026-03-22 15:11:09.000000000","message":"Run-NetApp CI","commit_id":"9d6c7806cf3ae2322d1b424d33bd6b609edb3815"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"6211a2e39389c30489a2089ec4f4e6fe571188a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"940ffb60_d82ce183","updated":"2026-03-09 06:31:03.000000000","message":"Run-NetApp CI","commit_id":"9d6c7806cf3ae2322d1b424d33bd6b609edb3815"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"c4aa18114ca801e0b9d37cfe615ddb08f73c5d93","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a64369e8_6d3c323e","updated":"2026-02-11 04:52:30.000000000","message":"Run-NetApp CI","commit_id":"9d6c7806cf3ae2322d1b424d33bd6b609edb3815"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"e8078f62d814175e4a1cdcbd36c5e08feae9ae70","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"59029bfa_0ce59d4e","updated":"2026-03-03 16:51:30.000000000","message":"The NetApp CI is failing, has anyone looked at that?","commit_id":"9d6c7806cf3ae2322d1b424d33bd6b609edb3815"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"75adf6879a23aa22be13d922c77da78215c88b9b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4d770076_7db8dbf1","updated":"2026-04-15 15:45:03.000000000","message":"recheck","commit_id":"c173b5b41e756db0f6bd1e8397e941e7e84cc756"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"d9fa47199dcb7288984fe89f5cfcb80b4df42250","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f107a4b3_cd46b54d","updated":"2026-04-14 04:02:23.000000000","message":"recheck","commit_id":"c173b5b41e756db0f6bd1e8397e941e7e84cc756"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"34cf5653cf152ad7521f71bd7b4335ee0553ca78","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bb2e7baa_ee22166e","updated":"2026-04-17 15:43:06.000000000","message":"Remove comment I started to add and then ultimately put in the overall review.","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"185d3d359a5846caf82846af34f27bcac089ade7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"eeadb398_a46f91a3","updated":"2026-04-17 15:26:05.000000000","message":"Run-NetApp CI","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"e0746b53e5693b818aa58ed4bbdd1726dc446849","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"88a972e8_0f4d8082","updated":"2026-04-17 15:40:13.000000000","message":"The idea here is sound, but I do wonder why there isn\u0027t also a synchronization element involved here to prevent clashing altogether.  Even with intervals, you can still end up with collisions eventually.\n\nI do think a cache on rarely changing things is a smart way to go regardless of whether or not you add synchronization - so I have no complaint about that.  I\u0027m just not sure it solves the actual issue as presented in the release notes and commit message.\n\nFurther, I think you should switch to using DDT in the testing as there is a ton of repetition between the tests with small changes that resolve down to single variables mostly (see also the reason for the -1 below, which may make this point moot).  \n\nThe -1 is for the following:\nIt seems to me that the tests are copy/pasted from the code, rather than the tests executing the code itself.  This is ok if the code can never change, but as we all know that\u0027s highly unlikely.  So, as it stands it\u0027s very risky: if you change the code, suddenly the tests are n/a -- made worse by that they\u0027d still pass and you\u0027d have false confidence about where a bug might be.\n\nThis also makes the patch basically an XL instead of the much smaller patch it really is -- I am guessing more reviews would be forthcoming with a smaller patch :-).","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"70681f11452de7a20e18355be98393d8600d9a87","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"22d00cb9_b0412310","updated":"2026-04-17 04:15:41.000000000","message":"recheck","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"96041240b8159f46c2aca79910af60edb3f18f5f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3aac2bfb_8e6fdf52","updated":"2026-04-17 09:45:43.000000000","message":"recheck","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7b20b097fd179f1a9d7f3a0ebeef0465aa547603","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3f74da9c_3aa2c042","in_reply_to":"88a972e8_0f4d8082","updated":"2026-06-09 06:27:50.000000000","message":"I have incorporated most of the comments, we have similar patch https://review.opendev.org/c/openstack/cinder/+/964191, which customer already applied on their production setup and it is working fine.","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"0910f5b3d5644883f2e4c58ada4b4505d88dc7e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"53d775ad_9e521ec9","updated":"2026-06-11 12:04:01.000000000","message":"LGTM","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b44855eb_2192457a","updated":"2026-06-28 04:16:28.000000000","message":"Nothing major here, just see a few things in the new UT that I\u0027d like you to take a look at.  Mostly just override_config or places where there\u0027s if/else logic where it seems the answer should be known ahead of time (since there\u0027s no DDT involved in those areas (with the tests that use DDT it makes sense).","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7c7b6c2e89c968c6b9431982f5301da545cf779f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a2f9743f_ab51fcab","updated":"2026-06-10 05:07:43.000000000","message":"Run-NetApp CI","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7b20b097fd179f1a9d7f3a0ebeef0465aa547603","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4a3f5910_066d8661","updated":"2026-06-09 06:27:50.000000000","message":"Thanks @anthony.galica@hitachivantara.com for your review comments, I have incorporated most of the review comments. Could you please review the same and reopen the comment if you are not agree on my response.","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a1a7b884_ba7bcd25","updated":"2026-07-01 16:11:31.000000000","message":"Thanks @anthony.galica@hitachivantara.com for your review comments, I have incorporated those, please take a look.","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"6043ba6e1645b2e5a1a7198b11c263f37bc7f787","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"71d1ca0f_7056d151","updated":"2026-06-09 14:32:31.000000000","message":"recheck","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"fd0e8bf72b70c50dc61e3ff22f98daa50d2f5afd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d99b189e_c171c4ee","in_reply_to":"4a3f5910_066d8661","updated":"2026-06-09 11:01:29.000000000","message":"Hi @gawasthi2010@gmail.com,\n\nI am fairly busy at the moment, but I have it in my review list.  I will be at the next festival of reviews and will re-review then if I haven\u0027t gotten to it yet - you may need to remind me then :)\n\nIn the meantime, please make sure the zuul failure isn\u0027t related to your latest changes (doesn\u0027t look to be, but I didn\u0027t investigate fully).","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"29bafa6ff80293de6dab876b38001812d52eb931","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d3e62d98_6fca799e","updated":"2026-07-10 19:08:24.000000000","message":"Thanks @anthony.galica@hitachivantara.com for your review comments. I have incorporated your review comments, please let me know if you have any further comment.","commit_id":"f452a0af73dfea32709f78a6c22c807abc311b4b"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"9a0794239925e345f2f7e00b6b2bcabd766005bf","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"17a73417_480dad03","updated":"2026-07-10 14:47:42.000000000","message":"The -1 is because I\u0027m struggling to understand why the UT can\u0027t be made determinate -- I think that\u0027s the point of the UT, to test that a known condition always behaves as it should (even if it\u0027s fudged with sleeps and whatnot).\n\nOtherwise, the actual code here does look fine based on my first review (and I had another quick look at it).\n\nCan you give a better explanation as to why the tests can\u0027t be determinate via mocks, etc?","commit_id":"f452a0af73dfea32709f78a6c22c807abc311b4b"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"268a8f7865e3435c42b8b41962e068bc76fca789","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2645167d_acdeaaa3","updated":"2026-07-03 10:00:21.000000000","message":"recheck","commit_id":"f452a0af73dfea32709f78a6c22c807abc311b4b"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"bbf80d5096cb1a10bf180bee3174bf14424592ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b46266e0_4a6932e5","updated":"2026-07-02 16:21:03.000000000","message":"recheck","commit_id":"f452a0af73dfea32709f78a6c22c807abc311b4b"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"b4b187e4e8baa216b9ae500afc5fe731f13ccbc3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c02c5c68_aca89226","updated":"2026-07-02 04:22:40.000000000","message":"recheck","commit_id":"f452a0af73dfea32709f78a6c22c807abc311b4b"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"29bafa6ff80293de6dab876b38001812d52eb931","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3f929934_ad7beec0","in_reply_to":"17a73417_480dad03","updated":"2026-07-10 19:08:24.000000000","message":"Thanks for pointing this out. After you pointed it out, I also noticed that a few places in the tests were not deterministic.\n\nNow I have removed mixed/unreachable branching in tests (for example, checks against last_perf_update being None after setting it to a concrete value). I also make sure to apply the changes in all required files. Please take a look and let me know if any further changes are require.","commit_id":"f452a0af73dfea32709f78a6c22c807abc311b4b"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"b41f0b81d197526eef60f6d97d3c5719ee623f14","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e1bfc11d_66c749ed","updated":"2026-07-15 15:44:05.000000000","message":"Looks good. Thanks @gawasthi2010@gmail.com and @anthony.galica@hitachivantara.com for working on this.","commit_id":"9ea8f32d931aef65ee2328e7c16784274f70b9c1"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_block_cmode.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"e0746b53e5693b818aa58ed4bbdd1726dc446849","unresolved":true,"context_lines":[{"line_number":2132,"context_line":""},{"line_number":2133,"context_line":"        # Code under test"},{"line_number":2134,"context_line":"        dedupe_used \u003d 0.0"},{"line_number":2135,"context_line":"        if (self.library.using_cluster_credentials and"},{"line_number":2136,"context_line":"                not self.library.configuration.netapp_disaggregated_platform):"},{"line_number":2137,"context_line":"            dedupe_expiry \u003d ("},{"line_number":2138,"context_line":"                self.library.configuration.netapp_dedupe_cache_expiry_duration"}],"source_content_type":"text/x-python","patch_set":6,"id":"7633db77_b8948757","line":2135,"updated":"2026-04-17 15:40:13.000000000","message":"I will not enforce a -1 for this, but I would like to suggest using DDT and having a single test instead of copy/pasting the same test multiple times with slightly tweaked values.  In particular since the code seems to be almost identical between all of the tests, and the code isn\u0027t a \"simple\" 1-2 liner.\n\nYou can check out my Hitachi driver test files that have some DDT usage for an example if you need.  Rajat initially brought DDT to my attention, and it\u0027s been helpful in my own tests.","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7b20b097fd179f1a9d7f3a0ebeef0465aa547603","unresolved":false,"context_lines":[{"line_number":2132,"context_line":""},{"line_number":2133,"context_line":"        # Code under test"},{"line_number":2134,"context_line":"        dedupe_used \u003d 0.0"},{"line_number":2135,"context_line":"        if (self.library.using_cluster_credentials and"},{"line_number":2136,"context_line":"                not self.library.configuration.netapp_disaggregated_platform):"},{"line_number":2137,"context_line":"            dedupe_expiry \u003d ("},{"line_number":2138,"context_line":"                self.library.configuration.netapp_dedupe_cache_expiry_duration"}],"source_content_type":"text/x-python","patch_set":6,"id":"ae6b5a05_67d76216","line":2135,"in_reply_to":"7633db77_b8948757","updated":"2026-06-09 06:27:50.000000000","message":"Done","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"e0746b53e5693b818aa58ed4bbdd1726dc446849","unresolved":true,"context_lines":[{"line_number":2151,"context_line":"                        dedupe_used \u003d current_pool.get("},{"line_number":2152,"context_line":"                            \u0027netapp_dedupe_used_percent\u0027)"},{"line_number":2153,"context_line":"                        break"},{"line_number":2154,"context_line":"        pool[\u0027netapp_dedupe_used_percent\u0027] \u003d na_utils.round_down(dedupe_used)"},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"        # Assert fresh fetch was called"},{"line_number":2157,"context_line":"        client \u003d self.library.zapi_client"}],"source_content_type":"text/x-python","patch_set":6,"id":"8ae965b1_d519e148","line":2154,"updated":"2026-04-17 15:40:13.000000000","message":"You don\u0027t need to change this, but is there a reason why you don\u0027t just assertEqual against ```na_utils.round_down(dedupe_used)``` instead of setting it in the pool map and later validating against the pool map (that doesn\u0027t seem to do anything else other than collect this value for comparison)?","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7b20b097fd179f1a9d7f3a0ebeef0465aa547603","unresolved":false,"context_lines":[{"line_number":2151,"context_line":"                        dedupe_used \u003d current_pool.get("},{"line_number":2152,"context_line":"                            \u0027netapp_dedupe_used_percent\u0027)"},{"line_number":2153,"context_line":"                        break"},{"line_number":2154,"context_line":"        pool[\u0027netapp_dedupe_used_percent\u0027] \u003d na_utils.round_down(dedupe_used)"},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"        # Assert fresh fetch was called"},{"line_number":2157,"context_line":"        client \u003d self.library.zapi_client"}],"source_content_type":"text/x-python","patch_set":6,"id":"82faac32_1915fb04","line":2154,"in_reply_to":"8ae965b1_d519e148","updated":"2026-06-09 06:27:50.000000000","message":"Done","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_nfs_cmode.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"e0746b53e5693b818aa58ed4bbdd1726dc446849","unresolved":true,"context_lines":[{"line_number":2542,"context_line":""},{"line_number":2543,"context_line":"        # Run the code snippet logic"},{"line_number":2544,"context_line":"        self.driver.last_perf_update \u003d None"},{"line_number":2545,"context_line":"        if self.driver.last_perf_update is None:"},{"line_number":2546,"context_line":"            self.driver.perf_library.update_performance_cache("},{"line_number":2547,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":2548,"context_line":"            self.driver.last_perf_update \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"46566153_02495345","line":2545,"updated":"2026-04-17 15:40:13.000000000","message":"I would recommend cleaning this up as it does appear this if statement is extraneous and the code path will always be followed.\n\nMaking it simpler should make it easier to read (though I\u0027m probably preaching to the choir here :-)","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7b20b097fd179f1a9d7f3a0ebeef0465aa547603","unresolved":false,"context_lines":[{"line_number":2542,"context_line":""},{"line_number":2543,"context_line":"        # Run the code snippet logic"},{"line_number":2544,"context_line":"        self.driver.last_perf_update \u003d None"},{"line_number":2545,"context_line":"        if self.driver.last_perf_update is None:"},{"line_number":2546,"context_line":"            self.driver.perf_library.update_performance_cache("},{"line_number":2547,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":2548,"context_line":"            self.driver.last_perf_update \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"618d6624_02ac30a4","line":2545,"in_reply_to":"46566153_02495345","updated":"2026-06-09 06:27:50.000000000","message":"Removed the unwanted code.","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"e0746b53e5693b818aa58ed4bbdd1726dc446849","unresolved":true,"context_lines":[{"line_number":2568,"context_line":"        perf_cache_expiry \u003d ("},{"line_number":2569,"context_line":"            self.driver.configuration.netapp_performance_cache_expiry_duration"},{"line_number":2570,"context_line":"        )"},{"line_number":2571,"context_line":"        if self.driver.last_perf_update is None:"},{"line_number":2572,"context_line":"            self.driver.perf_library.update_performance_cache("},{"line_number":2573,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":2574,"context_line":"            self.driver.last_perf_update \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"1788dfbd_4f358437","line":2571,"updated":"2026-04-17 15:40:13.000000000","message":"Again, I\u0027m not sure we need this check here or else statement?  \n\nI\u0027m seeing similar checks between these tests, so perhaps DDT would find some usage in this arena as well.","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7b20b097fd179f1a9d7f3a0ebeef0465aa547603","unresolved":false,"context_lines":[{"line_number":2568,"context_line":"        perf_cache_expiry \u003d ("},{"line_number":2569,"context_line":"            self.driver.configuration.netapp_performance_cache_expiry_duration"},{"line_number":2570,"context_line":"        )"},{"line_number":2571,"context_line":"        if self.driver.last_perf_update is None:"},{"line_number":2572,"context_line":"            self.driver.perf_library.update_performance_cache("},{"line_number":2573,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":2574,"context_line":"            self.driver.last_perf_update \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"abebd84a_c4485d21","line":2571,"in_reply_to":"1788dfbd_4f358437","updated":"2026-06-09 06:27:50.000000000","message":"Corrected it.","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":true,"context_lines":[{"line_number":2557,"context_line":"        # Set last update to 1000"},{"line_number":2558,"context_line":"        self.driver.last_perf_update \u003d 1000"},{"line_number":2559,"context_line":"        (self.driver."},{"line_number":2560,"context_line":"         configuration).netapp_performance_cache_expiry_duration \u003d 300"},{"line_number":2561,"context_line":""},{"line_number":2562,"context_line":"        # Current time is 1200 (less than 1000 + 300)"},{"line_number":2563,"context_line":"        mock_utcnow.return_value.timestamp.return_value \u003d 1200"}],"source_content_type":"text/x-python","patch_set":7,"id":"d876e9bb_e1fa3f4d","line":2560,"updated":"2026-06-28 04:16:28.000000000","message":"You should use override_config here to avoid threading issues with multiple tests running - you will always want to do this with configuration items in the driver.","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[{"line_number":2557,"context_line":"        # Set last update to 1000"},{"line_number":2558,"context_line":"        self.driver.last_perf_update \u003d 1000"},{"line_number":2559,"context_line":"        (self.driver."},{"line_number":2560,"context_line":"         configuration).netapp_performance_cache_expiry_duration \u003d 300"},{"line_number":2561,"context_line":""},{"line_number":2562,"context_line":"        # Current time is 1200 (less than 1000 + 300)"},{"line_number":2563,"context_line":"        mock_utcnow.return_value.timestamp.return_value \u003d 1200"}],"source_content_type":"text/x-python","patch_set":7,"id":"fb535a37_ee719901","line":2560,"in_reply_to":"d876e9bb_e1fa3f4d","updated":"2026-07-01 16:11:31.000000000","message":"Done","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":true,"context_lines":[{"line_number":2566,"context_line":"        perf_cache_expiry \u003d ("},{"line_number":2567,"context_line":"            self.driver.configuration.netapp_performance_cache_expiry_duration"},{"line_number":2568,"context_line":"        )"},{"line_number":2569,"context_line":"        if ((mock_utcnow.return_value.timestamp() -"},{"line_number":2570,"context_line":"             self.driver.last_perf_update) \u003e perf_cache_expiry):"},{"line_number":2571,"context_line":"            self.driver.perf_library.update_performance_cache("},{"line_number":2572,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"}],"source_content_type":"text/x-python","patch_set":7,"id":"a37f20ed_55a6d29d","line":2569,"updated":"2026-06-28 04:16:28.000000000","message":"Shouldn\u0027t we know if this will happen or not?","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[{"line_number":2566,"context_line":"        perf_cache_expiry \u003d ("},{"line_number":2567,"context_line":"            self.driver.configuration.netapp_performance_cache_expiry_duration"},{"line_number":2568,"context_line":"        )"},{"line_number":2569,"context_line":"        if ((mock_utcnow.return_value.timestamp() -"},{"line_number":2570,"context_line":"             self.driver.last_perf_update) \u003e perf_cache_expiry):"},{"line_number":2571,"context_line":"            self.driver.perf_library.update_performance_cache("},{"line_number":2572,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"}],"source_content_type":"text/x-python","patch_set":7,"id":"66f4d166_cfa8b5f9","line":2569,"in_reply_to":"a37f20ed_55a6d29d","updated":"2026-07-01 16:11:31.000000000","message":"this executing otherwise, below assert call can fail\n self.driver.perf_library.update_performance_cache.assert_not_called()\n         \nAnyway I have added extra check to make sure this part of the code should be executed.","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":true,"context_lines":[{"line_number":2583,"context_line":"    def test_perf_update_when_interval_passed(self, mock_log, mock_utcnow):"},{"line_number":2584,"context_line":"        # Set last update to 1000"},{"line_number":2585,"context_line":"        self.driver.last_perf_update \u003d 1000"},{"line_number":2586,"context_line":"        (self.driver."},{"line_number":2587,"context_line":"         configuration).netapp_performance_cache_expiry_duration \u003d 300"},{"line_number":2588,"context_line":""},{"line_number":2589,"context_line":"        # Current time is 1401 (greater than 1000 + 300)"}],"source_content_type":"text/x-python","patch_set":7,"id":"38a2ab72_4f04a7b5","line":2586,"updated":"2026-06-28 04:16:28.000000000","message":"override_config","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[{"line_number":2583,"context_line":"    def test_perf_update_when_interval_passed(self, mock_log, mock_utcnow):"},{"line_number":2584,"context_line":"        # Set last update to 1000"},{"line_number":2585,"context_line":"        self.driver.last_perf_update \u003d 1000"},{"line_number":2586,"context_line":"        (self.driver."},{"line_number":2587,"context_line":"         configuration).netapp_performance_cache_expiry_duration \u003d 300"},{"line_number":2588,"context_line":""},{"line_number":2589,"context_line":"        # Current time is 1401 (greater than 1000 + 300)"}],"source_content_type":"text/x-python","patch_set":7,"id":"81ded1a8_bea2af27","line":2586,"in_reply_to":"38a2ab72_4f04a7b5","updated":"2026-07-01 16:11:31.000000000","message":"Done","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":true,"context_lines":[{"line_number":2593,"context_line":"        perf_cache_expiry \u003d ("},{"line_number":2594,"context_line":"            self.driver.configuration.netapp_performance_cache_expiry_duration"},{"line_number":2595,"context_line":"        )"},{"line_number":2596,"context_line":"        if self.driver.last_perf_update is None:"},{"line_number":2597,"context_line":"            self.driver.perf_library.update_performance_cache("},{"line_number":2598,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":2599,"context_line":"            self.driver.last_perf_update \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"b06a8a8e_a9e5d28c","line":2596,"updated":"2026-06-28 04:16:28.000000000","message":"I\u0027m not sure this if block can ever execute?","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"9a0794239925e345f2f7e00b6b2bcabd766005bf","unresolved":true,"context_lines":[{"line_number":2593,"context_line":"        perf_cache_expiry \u003d ("},{"line_number":2594,"context_line":"            self.driver.configuration.netapp_performance_cache_expiry_duration"},{"line_number":2595,"context_line":"        )"},{"line_number":2596,"context_line":"        if self.driver.last_perf_update is None:"},{"line_number":2597,"context_line":"            self.driver.perf_library.update_performance_cache("},{"line_number":2598,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":2599,"context_line":"            self.driver.last_perf_update \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"c22fc075_936e0249","line":2596,"in_reply_to":"297e27a5_349eca3b","updated":"2026-07-10 14:47:42.000000000","message":"Hi Gireesh,\n\nWhat I mean here is that you check ```if self.driver.last_perf_update is None```, but above you set ```self.driver.last_perf_update \u003d 1000```.  \n\nSo, is this a value that changes in the background in a thread or something?  And is there a way to make it determinate?\n\nI feel that if the test can have multiple possible outcomes that there should be two tests that can test each outcome definitively, not one test that tests one path sometimes, and another path other times depending on how slow or fast the machine is.\n\nI would think this would be possible in a couple ways (though I don\u0027t know the code fully, so it\u0027s hard to say):\n* maybe via mocks\n* timeout test by setting a very small value and sleeping\n* non-timeout test by setting a huge value\n* etc \nBut if you have a better explanation as to why not, let me know!\n\nThis applies to all such instances where the tests do not appear to be determinate.","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[{"line_number":2593,"context_line":"        perf_cache_expiry \u003d ("},{"line_number":2594,"context_line":"            self.driver.configuration.netapp_performance_cache_expiry_duration"},{"line_number":2595,"context_line":"        )"},{"line_number":2596,"context_line":"        if self.driver.last_perf_update is None:"},{"line_number":2597,"context_line":"            self.driver.perf_library.update_performance_cache("},{"line_number":2598,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":2599,"context_line":"            self.driver.last_perf_update \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"297e27a5_349eca3b","line":2596,"in_reply_to":"b06a8a8e_a9e5d28c","updated":"2026-07-01 16:11:31.000000000","message":"Same as above","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"29bafa6ff80293de6dab876b38001812d52eb931","unresolved":false,"context_lines":[{"line_number":2593,"context_line":"        perf_cache_expiry \u003d ("},{"line_number":2594,"context_line":"            self.driver.configuration.netapp_performance_cache_expiry_duration"},{"line_number":2595,"context_line":"        )"},{"line_number":2596,"context_line":"        if self.driver.last_perf_update is None:"},{"line_number":2597,"context_line":"            self.driver.perf_library.update_performance_cache("},{"line_number":2598,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":2599,"context_line":"            self.driver.last_perf_update \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"f03d3cbd_d9b7488c","line":2596,"in_reply_to":"c22fc075_936e0249","updated":"2026-07-10 19:08:24.000000000","message":"ohh, I miss this last time and thanks for pointing this again. I have make the require changes in this file as well as other places also. Please take look and let me know if I need to make any changes again.","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":true,"context_lines":[{"line_number":2598,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":2599,"context_line":"            self.driver.last_perf_update \u003d ("},{"line_number":2600,"context_line":"                mock_utcnow.return_value.timestamp())"},{"line_number":2601,"context_line":"        elif (mock_utcnow.return_value.timestamp() -"},{"line_number":2602,"context_line":"              self.driver.last_perf_update) \u003e perf_cache_expiry:"},{"line_number":2603,"context_line":"            mock_log.debug.assert_not_called()  # Before running code"},{"line_number":2604,"context_line":"            mock_log.debug(\"Updating perf cache for cluster.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"1b5113ea_fb3fb1e6","line":2601,"updated":"2026-06-28 04:16:28.000000000","message":"And shouldn\u0027t we know if this will ever happen or not?","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[{"line_number":2598,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":2599,"context_line":"            self.driver.last_perf_update \u003d ("},{"line_number":2600,"context_line":"                mock_utcnow.return_value.timestamp())"},{"line_number":2601,"context_line":"        elif (mock_utcnow.return_value.timestamp() -"},{"line_number":2602,"context_line":"              self.driver.last_perf_update) \u003e perf_cache_expiry:"},{"line_number":2603,"context_line":"            mock_log.debug.assert_not_called()  # Before running code"},{"line_number":2604,"context_line":"            mock_log.debug(\"Updating perf cache for cluster.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"43306a90_b066578c","line":2601,"in_reply_to":"1b5113ea_fb3fb1e6","updated":"2026-07-01 16:11:31.000000000","message":"Same as above","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_nvme_library.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":true,"context_lines":[{"line_number":1434,"context_line":"        # Set last update to 1000"},{"line_number":1435,"context_line":"        self.library.last_perf_update \u003d 1000"},{"line_number":1436,"context_line":"        (self.library."},{"line_number":1437,"context_line":"         configuration).netapp_performance_cache_expiry_duration \u003d 300"},{"line_number":1438,"context_line":""},{"line_number":1439,"context_line":"        # Current time is 1200 (less than 1000 + 300)"},{"line_number":1440,"context_line":"        mock_utcnow.return_value.timestamp.return_value \u003d 1200"}],"source_content_type":"text/x-python","patch_set":7,"id":"0ea641b5_5fcd1389","line":1437,"updated":"2026-06-28 04:16:28.000000000","message":"override_config","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[{"line_number":1434,"context_line":"        # Set last update to 1000"},{"line_number":1435,"context_line":"        self.library.last_perf_update \u003d 1000"},{"line_number":1436,"context_line":"        (self.library."},{"line_number":1437,"context_line":"         configuration).netapp_performance_cache_expiry_duration \u003d 300"},{"line_number":1438,"context_line":""},{"line_number":1439,"context_line":"        # Current time is 1200 (less than 1000 + 300)"},{"line_number":1440,"context_line":"        mock_utcnow.return_value.timestamp.return_value \u003d 1200"}],"source_content_type":"text/x-python","patch_set":7,"id":"ddc32db7_39ce15c5","line":1437,"in_reply_to":"0ea641b5_5fcd1389","updated":"2026-07-01 16:11:31.000000000","message":"Done","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":true,"context_lines":[{"line_number":1441,"context_line":"        config \u003d self.library.configuration"},{"line_number":1442,"context_line":"        perf_cache_expiry \u003d config.netapp_performance_cache_expiry_duration"},{"line_number":1443,"context_line":"        # Run the code snippet logic"},{"line_number":1444,"context_line":"        if (mock_utcnow.return_value.timestamp() -"},{"line_number":1445,"context_line":"                self.library.last_perf_update \u003e perf_cache_expiry):"},{"line_number":1446,"context_line":"            self.library.perf_library.update_performance_cache("},{"line_number":1447,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"}],"source_content_type":"text/x-python","patch_set":7,"id":"85933850_b5eb95f5","line":1444,"updated":"2026-06-28 04:16:28.000000000","message":"Is the if statement redundant?","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[{"line_number":1441,"context_line":"        config \u003d self.library.configuration"},{"line_number":1442,"context_line":"        perf_cache_expiry \u003d config.netapp_performance_cache_expiry_duration"},{"line_number":1443,"context_line":"        # Run the code snippet logic"},{"line_number":1444,"context_line":"        if (mock_utcnow.return_value.timestamp() -"},{"line_number":1445,"context_line":"                self.library.last_perf_update \u003e perf_cache_expiry):"},{"line_number":1446,"context_line":"            self.library.perf_library.update_performance_cache("},{"line_number":1447,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"}],"source_content_type":"text/x-python","patch_set":7,"id":"d907cbd8_fdd20486","line":1444,"in_reply_to":"85933850_b5eb95f5","updated":"2026-07-01 16:11:31.000000000","message":"This is require as we have same logic in our code.","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":true,"context_lines":[{"line_number":1459,"context_line":"        # Set last update to 1000"},{"line_number":1460,"context_line":"        self.library.last_perf_update \u003d 1000"},{"line_number":1461,"context_line":"        (self.library."},{"line_number":1462,"context_line":"         configuration).netapp_performance_cache_expiry_duration \u003d 300"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"        # Current time is 1401 (greater than 1000 + 300)"},{"line_number":1465,"context_line":"        mock_utcnow.return_value.timestamp.return_value \u003d 1401"}],"source_content_type":"text/x-python","patch_set":7,"id":"9e927302_7004c675","line":1462,"updated":"2026-06-28 04:16:28.000000000","message":"override_config","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[{"line_number":1459,"context_line":"        # Set last update to 1000"},{"line_number":1460,"context_line":"        self.library.last_perf_update \u003d 1000"},{"line_number":1461,"context_line":"        (self.library."},{"line_number":1462,"context_line":"         configuration).netapp_performance_cache_expiry_duration \u003d 300"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"        # Current time is 1401 (greater than 1000 + 300)"},{"line_number":1465,"context_line":"        mock_utcnow.return_value.timestamp.return_value \u003d 1401"}],"source_content_type":"text/x-python","patch_set":7,"id":"099cd3ea_6343ae0d","line":1462,"in_reply_to":"9e927302_7004c675","updated":"2026-07-01 16:11:31.000000000","message":"Done","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":true,"context_lines":[{"line_number":1467,"context_line":"        # Run the code snippet logic"},{"line_number":1468,"context_line":"        config \u003d self.library.configuration"},{"line_number":1469,"context_line":"        perf_cache_expiry \u003d config.netapp_performance_cache_expiry_duration"},{"line_number":1470,"context_line":"        if self.library.last_perf_update is None:"},{"line_number":1471,"context_line":"            self.library.perf_library.update_performance_cache("},{"line_number":1472,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":1473,"context_line":"            self.library.last_perf_update \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"6842d60e_33321a8c","line":1470,"updated":"2026-06-28 04:16:28.000000000","message":"Can this actually happen?","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[{"line_number":1467,"context_line":"        # Run the code snippet logic"},{"line_number":1468,"context_line":"        config \u003d self.library.configuration"},{"line_number":1469,"context_line":"        perf_cache_expiry \u003d config.netapp_performance_cache_expiry_duration"},{"line_number":1470,"context_line":"        if self.library.last_perf_update is None:"},{"line_number":1471,"context_line":"            self.library.perf_library.update_performance_cache("},{"line_number":1472,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":1473,"context_line":"            self.library.last_perf_update \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"b0721ab9_c84682f0","line":1470,"in_reply_to":"6842d60e_33321a8c","updated":"2026-07-01 16:11:31.000000000","message":"Already explained same in nfs test.","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6c11898df36f76200ba54f14ba1ce12fe8ad8cfe","unresolved":true,"context_lines":[{"line_number":1472,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":1473,"context_line":"            self.library.last_perf_update \u003d ("},{"line_number":1474,"context_line":"                mock_utcnow.return_value.timestamp())"},{"line_number":1475,"context_line":"        elif (mock_utcnow.return_value.timestamp() -"},{"line_number":1476,"context_line":"              self.library.last_perf_update) \u003e perf_cache_expiry:"},{"line_number":1477,"context_line":"            mock_log.debug.assert_not_called()  # Before running code"},{"line_number":1478,"context_line":"            mock_log.debug(\"Updating perf cache for cluster.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"71bd5c82_4d27d08e","line":1475,"updated":"2026-06-28 04:16:28.000000000","message":"Shouldn\u0027t we know if this will happen or not?","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"01324af3ce2c83cc84566427e2aaa250c177b929","unresolved":false,"context_lines":[{"line_number":1472,"context_line":"                fake.FAKE_CMODE_POOL_MAP.keys())"},{"line_number":1473,"context_line":"            self.library.last_perf_update \u003d ("},{"line_number":1474,"context_line":"                mock_utcnow.return_value.timestamp())"},{"line_number":1475,"context_line":"        elif (mock_utcnow.return_value.timestamp() -"},{"line_number":1476,"context_line":"              self.library.last_perf_update) \u003e perf_cache_expiry:"},{"line_number":1477,"context_line":"            mock_log.debug.assert_not_called()  # Before running code"},{"line_number":1478,"context_line":"            mock_log.debug(\"Updating perf cache for cluster.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"ea4435f1_b933f30b","line":1475,"in_reply_to":"71bd5c82_4d27d08e","updated":"2026-07-01 16:11:31.000000000","message":"Same as above.","commit_id":"11eb8295fab5f71028254db49b7f5463a4dbc70d"}],"cinder/volume/drivers/netapp/dataontap/nfs_cmode.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"e0746b53e5693b818aa58ed4bbdd1726dc446849","unresolved":true,"context_lines":[{"line_number":455,"context_line":"                else:"},{"line_number":456,"context_line":"                    LOG.debug(\"Get the current dedupe stats from pool %s\","},{"line_number":457,"context_line":"                              ssc_vol_name)"},{"line_number":458,"context_line":"                    assert isinstance(self._stats, dict)"},{"line_number":459,"context_line":"                    for current_pool in self._stats.get(\u0027pools\u0027, []):"},{"line_number":460,"context_line":"                        if current_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":461,"context_line":"                            dedupe_used \u003d current_pool.get("}],"source_content_type":"text/x-python","patch_set":6,"id":"7571bf71_65c1442e","line":458,"updated":"2026-04-17 15:40:13.000000000","message":"Are we sure we want an assert here instead of just a check/log?","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7b20b097fd179f1a9d7f3a0ebeef0465aa547603","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                else:"},{"line_number":456,"context_line":"                    LOG.debug(\"Get the current dedupe stats from pool %s\","},{"line_number":457,"context_line":"                              ssc_vol_name)"},{"line_number":458,"context_line":"                    assert isinstance(self._stats, dict)"},{"line_number":459,"context_line":"                    for current_pool in self._stats.get(\u0027pools\u0027, []):"},{"line_number":460,"context_line":"                        if current_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":461,"context_line":"                            dedupe_used \u003d current_pool.get("}],"source_content_type":"text/x-python","patch_set":6,"id":"7af4a59c_c6376026","line":458,"in_reply_to":"7571bf71_65c1442e","updated":"2026-06-09 06:27:50.000000000","message":"We have below patch similar to this patch only the difference is below patch is for iSCSI while this patch is for NVMe and NFS. Alan Bishop suggested to add this so I have added.\nThe patch below is similar to the this one, with the key difference being that it adds support for iSCSI, whereas the this patch addressed NVMe and NFS. This change was suggested by Alan Bishop.\nhttps://review.opendev.org/c/openstack/cinder/+/964191/18?tab\u003dcomments\n\n\nWe are using this to make sure below line is safe \nself._stats.get(\u0027pools\u0027, [])","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"}],"cinder/volume/drivers/netapp/dataontap/nvme_library.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"e0746b53e5693b818aa58ed4bbdd1726dc446849","unresolved":true,"context_lines":[{"line_number":626,"context_line":"                else:"},{"line_number":627,"context_line":"                    LOG.debug(\"Get the current dedupe stats from pool %s\","},{"line_number":628,"context_line":"                              ssc_vol_name)"},{"line_number":629,"context_line":"                    assert isinstance(self._stats, dict)"},{"line_number":630,"context_line":"                    for current_pool in self._stats.get(\u0027pools\u0027, []):"},{"line_number":631,"context_line":"                        if current_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":632,"context_line":"                            dedupe_used \u003d current_pool.get("}],"source_content_type":"text/x-python","patch_set":6,"id":"e393be26_af209876","line":629,"updated":"2026-04-17 15:40:13.000000000","message":"Again, not sure I would use an assert like this.","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7b20b097fd179f1a9d7f3a0ebeef0465aa547603","unresolved":false,"context_lines":[{"line_number":626,"context_line":"                else:"},{"line_number":627,"context_line":"                    LOG.debug(\"Get the current dedupe stats from pool %s\","},{"line_number":628,"context_line":"                              ssc_vol_name)"},{"line_number":629,"context_line":"                    assert isinstance(self._stats, dict)"},{"line_number":630,"context_line":"                    for current_pool in self._stats.get(\u0027pools\u0027, []):"},{"line_number":631,"context_line":"                        if current_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":632,"context_line":"                            dedupe_used \u003d current_pool.get("}],"source_content_type":"text/x-python","patch_set":6,"id":"eb2cb1be_92fcff47","line":629,"in_reply_to":"e393be26_af209876","updated":"2026-06-09 06:27:50.000000000","message":"We have below patch similar to this patch only the difference is below patch is for iSCSI while this patch is for NVMe and NFS. Alan Bishop suggested to add this so I have added.\nThe patch below is similar to the this one, with the key difference being that it adds support for iSCSI, whereas the this patch addressed NVMe and NFS. This change was suggested by Alan Bishop.\nhttps://review.opendev.org/c/openstack/cinder/+/964191/18?tab\u003dcomments\n\n\nWe are using this to make sure below line is safe \nself._stats.get(\u0027pools\u0027, [])","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"}],"cinder/volume/drivers/netapp/dataontap/performance/perf_cmode.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"c35edecb3e076ff0fdf1a99989b2045f61e28f52","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        self._aggr_node_cache \u003d {"},{"line_number":36,"context_line":"            \u0027aggr_names\u0027: set(),"},{"line_number":37,"context_line":"            \u0027node_names\u0027: set(),"},{"line_number":38,"context_line":"            \u0027aggr_node_map\u0027: {}"},{"line_number":39,"context_line":"        }"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _init_counter_info(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df1f9821_ed5b7b71","line":38,"updated":"2025-12-02 08:25:38.000000000","message":"We can optimise just using the aggr_node_map? Why do we need aggr_names","commit_id":"33b68b8027488402ac47338b29979099fec03634"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"c188bdc0fd736b8a50d26e65f604cc875bb716f7","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self._aggr_node_cache \u003d {"},{"line_number":36,"context_line":"            \u0027aggr_names\u0027: set(),"},{"line_number":37,"context_line":"            \u0027node_names\u0027: set(),"},{"line_number":38,"context_line":"            \u0027aggr_node_map\u0027: {}"},{"line_number":39,"context_line":"        }"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _init_counter_info(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"b9422ed2_c4a4add0","line":38,"in_reply_to":"df1f9821_ed5b7b71","updated":"2026-01-07 05:23:40.000000000","message":"Done","commit_id":"33b68b8027488402ac47338b29979099fec03634"}],"releasenotes/notes/bug-2132785-fix-optimize-pool-stats-update-nfs-nvme-44f62ecd6350b8bf.yaml":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2b9bd8351fdb15a68baa2bc10d4f9ebc61ee6af3","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    User can use below options to control the frequency of performance"},{"line_number":9,"context_line":"    and deduplication data retrieval from ONTAP"},{"line_number":10,"context_line":"    netapp_performance_cache_expiry_duration and"},{"line_number":11,"context_line":"    netapp_dedupe_cache_expiry_duration."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    These options are needed to fine-tune the frequency of querying"},{"line_number":14,"context_line":"    performance and deduplication metrics, as these queries occur both"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"d1aa6cb9_ad8914cc","line":11,"updated":"2026-04-29 17:46:02.000000000","message":"nit: if you put the option names in double-backticks, they will display in monospace HTML.","commit_id":"9d6c7806cf3ae2322d1b424d33bd6b609edb3815"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7b20b097fd179f1a9d7f3a0ebeef0465aa547603","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    User can use below options to control the frequency of performance"},{"line_number":9,"context_line":"    and deduplication data retrieval from ONTAP"},{"line_number":10,"context_line":"    netapp_performance_cache_expiry_duration and"},{"line_number":11,"context_line":"    netapp_dedupe_cache_expiry_duration."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    These options are needed to fine-tune the frequency of querying"},{"line_number":14,"context_line":"    performance and deduplication metrics, as these queries occur both"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"076b655f_77fc7eac","line":11,"in_reply_to":"d1aa6cb9_ad8914cc","updated":"2026-06-09 06:27:50.000000000","message":"Done","commit_id":"9d6c7806cf3ae2322d1b424d33bd6b609edb3815"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"e0746b53e5693b818aa58ed4bbdd1726dc446849","unresolved":true,"context_lines":[{"line_number":10,"context_line":"    netapp_performance_cache_expiry_duration and"},{"line_number":11,"context_line":"    netapp_dedupe_cache_expiry_duration."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    These options are needed to fine-tune the frequency of querying"},{"line_number":14,"context_line":"    performance and deduplication metrics, as these queries occur both"},{"line_number":15,"context_line":"    during the delete volume workflow and in the update_volume_stats"},{"line_number":16,"context_line":"    method, which is triggered by the periodic interval task. Users can"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"2ca8aa86_4f2d6742","line":13,"updated":"2026-04-17 15:40:13.000000000","message":"I like the","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"34cf5653cf152ad7521f71bd7b4335ee0553ca78","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    netapp_performance_cache_expiry_duration and"},{"line_number":11,"context_line":"    netapp_dedupe_cache_expiry_duration."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    These options are needed to fine-tune the frequency of querying"},{"line_number":14,"context_line":"    performance and deduplication metrics, as these queries occur both"},{"line_number":15,"context_line":"    during the delete volume workflow and in the update_volume_stats"},{"line_number":16,"context_line":"    method, which is triggered by the periodic interval task. Users can"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7a4087ef_584be88f","line":13,"in_reply_to":"2ca8aa86_4f2d6742","updated":"2026-04-17 15:43:06.000000000","message":"Done","commit_id":"ae7b5b4cc9480f16d42e5a7f5b10794b84b20693"}]}
