)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"abb9beca5309ed0d92321688b5b850c39ef0277d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9cfd6e5a_e3a31288","updated":"2026-10-08 15:32:03.000000000","message":"run Everpure CI","commit_id":"b6afae849a747b041fb2d0dd3bcb9782df386292"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"278762a437f28c0c8134b0255b82b8782fd9871c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0c65a347_d47041f6","updated":"2026-10-10 12:11:08.000000000","message":"recheck","commit_id":"5d45808a7dba08e429a0ff3cce5123669b4b4a64"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"1792ed1381404bd13609c5abf6ee243894fda08f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7b558b6c_e2cee77b","updated":"2026-10-10 14:56:37.000000000","message":"recheck","commit_id":"5d45808a7dba08e429a0ff3cce5123669b4b4a64"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"37ef2a988e82033c69a5c0d2b35baff9d2e8f5be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b08c3dad_820284d3","updated":"2026-10-16 23:51:21.000000000","message":"recheck","commit_id":"99bcb30b4370fadd90b04e34236cbfaaad4ebe90"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"f5cfd851414736dbc9837fe6c4672008d090c823","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f2ee1c8b_1686122f","updated":"2026-10-16 21:14:08.000000000","message":"recheck py314 timeout","commit_id":"99bcb30b4370fadd90b04e34236cbfaaad4ebe90"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"b11700f9baed15d3e30217dbea4fab61d27547b3","unresolved":true,"context_lines":[{"line_number":921,"context_line":"        for target in self._replication_target_arrays:"},{"line_number":922,"context_line":"            if target.replication_type !\u003d REPLICATION_TYPE_ASYNC:"},{"line_number":923,"context_line":"                continue"},{"line_number":924,"context_line":"            res \u003d target.get_pods(names\u003dnames)"},{"line_number":925,"context_line":"            found \u003d {}"},{"line_number":926,"context_line":"            if res.status_code \u003d\u003d 200:"},{"line_number":927,"context_line":"                found \u003d {pod.name: pod for pod in list(res.items)}"}],"source_content_type":"text/x-python","patch_set":4,"id":"0d27d124_afab8cdb","line":924,"updated":"2026-10-25 14:43:15.000000000","message":"A non-200 get_pods leaves found empty, so every configured pod is reported as \"do not exist\", with no status and no error body. A destroyed pod hits the same sentence. The message says to create the pods with a quota, but quota_limit is never read. Primary setup rejects a pod with no quota (886) because _get_pod_pool_stats reports that pod with zero capacity (2045). After failover the current array is the target, so a target pod with no quota becomes a zero-capacity pool.\n\nOn failure, VolumeManager._init_host (manager.py:525) logs \"Failed to initialize driver.\" and returns before set_initialized() (624). The process keeps running and retries; this backend stays uninitialized","commit_id":"99bcb30b4370fadd90b04e34236cbfaaad4ebe90"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"45f2043a7ff0f7cee0a437ef0f745049d588847f","unresolved":false,"context_lines":[{"line_number":921,"context_line":"        for target in self._replication_target_arrays:"},{"line_number":922,"context_line":"            if target.replication_type !\u003d REPLICATION_TYPE_ASYNC:"},{"line_number":923,"context_line":"                continue"},{"line_number":924,"context_line":"            res \u003d target.get_pods(names\u003dnames)"},{"line_number":925,"context_line":"            found \u003d {}"},{"line_number":926,"context_line":"            if res.status_code \u003d\u003d 200:"},{"line_number":927,"context_line":"                found \u003d {pod.name: pod for pod in list(res.items)}"}],"source_content_type":"text/x-python","patch_set":4,"id":"d1e0b410_56374750","line":924,"in_reply_to":"0d27d124_afab8cdb","updated":"2026-10-25 17:31:04.000000000","message":"Done","commit_id":"99bcb30b4370fadd90b04e34236cbfaaad4ebe90"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"b11700f9baed15d3e30217dbea4fab61d27547b3","unresolved":true,"context_lines":[{"line_number":4491,"context_line":"        model_updates \u003d []"},{"line_number":4492,"context_line":"        if secondary_array.replication_type \u003d\u003d REPLICATION_TYPE_ASYNC:"},{"line_number":4493,"context_line":"            kwargs \u003d {}"},{"line_number":4494,"context_line":"            pod_pg_snaps \u003d self._get_pod_pool_pg_snaps(secondary_array)"},{"line_number":4495,"context_line":"            if pod_pg_snaps:"},{"line_number":4496,"context_line":"                kwargs[\u0027pod_pg_snaps\u0027] \u003d pod_pg_snaps"},{"line_number":4497,"context_line":"            model_updates \u003d self._async_failover_host("}],"source_content_type":"text/x-python","patch_set":4,"id":"96967d1e_08d71651","line":4494,"updated":"2026-10-25 14:43:15.000000000","message":"_get_pod_pool_pg_snaps() is called again here with no try, on every async failover, including when secondary_id is set. _get_latest_replicated_pg_snap returns None when the transfer list is empty or on AttributeError (pure.py:4754). Any other exception propagates. That aborts failover() before _async_failover_host, so the array-level snapshot already stored in pg_snap is never promoted. VolumeManager.failover (manager.py:4582) then sets the service disabled and failover-error and does not apply per-volume updates.","commit_id":"99bcb30b4370fadd90b04e34236cbfaaad4ebe90"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"45f2043a7ff0f7cee0a437ef0f745049d588847f","unresolved":false,"context_lines":[{"line_number":4491,"context_line":"        model_updates \u003d []"},{"line_number":4492,"context_line":"        if secondary_array.replication_type \u003d\u003d REPLICATION_TYPE_ASYNC:"},{"line_number":4493,"context_line":"            kwargs \u003d {}"},{"line_number":4494,"context_line":"            pod_pg_snaps \u003d self._get_pod_pool_pg_snaps(secondary_array)"},{"line_number":4495,"context_line":"            if pod_pg_snaps:"},{"line_number":4496,"context_line":"                kwargs[\u0027pod_pg_snaps\u0027] \u003d pod_pg_snaps"},{"line_number":4497,"context_line":"            model_updates \u003d self._async_failover_host("}],"source_content_type":"text/x-python","patch_set":4,"id":"25c55e2d_26230f34","line":4494,"in_reply_to":"96967d1e_08d71651","updated":"2026-10-25 17:31:04.000000000","message":"Done","commit_id":"99bcb30b4370fadd90b04e34236cbfaaad4ebe90"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"b11700f9baed15d3e30217dbea4fab61d27547b3","unresolved":true,"context_lines":[{"line_number":4995,"context_line":"        # impossible to remove again. Setup requires the pods on every"},{"line_number":4996,"context_line":"        # async target; one that disappeared since is reported once and"},{"line_number":4997,"context_line":"        # its volumes are left in error."},{"line_number":4998,"context_line":"        wanted_pods \u003d {self._get_pod_for_volume(full_name)"},{"line_number":4999,"context_line":"                       for full_name, _vol in pending.values()}"},{"line_number":5000,"context_line":"        wanted_pods.discard(None)"},{"line_number":5001,"context_line":"        present_pods \u003d set()"}],"source_content_type":"text/x-python","patch_set":4,"id":"d928354f_5cd036e5","line":4998,"updated":"2026-10-25 14:43:15.000000000","message":"pending.pop(bare_name) runs before post_volumes. _raise_if_failed (1032) raises PureDriverException on HTTP 400. That exception leaves this function, and VolumeManager.failover marks the service failover-error without applying the updates for volumes already created earlier in this loop. The same order existed in the old loop (vol_names.remove before the create). It now also covers pod-pool creates, while the missing-pod path just above leaves the volume in error instead of raising. Pop only after a successful create, and on failure log and continue so the volume stays in pending and is reported error","commit_id":"99bcb30b4370fadd90b04e34236cbfaaad4ebe90"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"45f2043a7ff0f7cee0a437ef0f745049d588847f","unresolved":false,"context_lines":[{"line_number":4995,"context_line":"        # impossible to remove again. Setup requires the pods on every"},{"line_number":4996,"context_line":"        # async target; one that disappeared since is reported once and"},{"line_number":4997,"context_line":"        # its volumes are left in error."},{"line_number":4998,"context_line":"        wanted_pods \u003d {self._get_pod_for_volume(full_name)"},{"line_number":4999,"context_line":"                       for full_name, _vol in pending.values()}"},{"line_number":5000,"context_line":"        wanted_pods.discard(None)"},{"line_number":5001,"context_line":"        present_pods \u003d set()"}],"source_content_type":"text/x-python","patch_set":4,"id":"d93cd875_e99d0f08","line":4998,"in_reply_to":"d928354f_5cd036e5","updated":"2026-10-25 17:31:04.000000000","message":"Done","commit_id":"99bcb30b4370fadd90b04e34236cbfaaad4ebe90"}]}
