From 35ba1b122cd373313e507cae1f6cd70bb03973bb Mon Sep 17 00:00:00 2001 From: Vijay Soni Date: Sat, 10 Jan 2026 01:05:06 -0600 Subject: [PATCH 1/3] deleted txn.handle.remove() call Signed-off-by: Vijay Soni --- acapy_agent/wallet/anoncreds_upgrade.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/acapy_agent/wallet/anoncreds_upgrade.py b/acapy_agent/wallet/anoncreds_upgrade.py index bda250c709..c3723ca726 100644 --- a/acapy_agent/wallet/anoncreds_upgrade.py +++ b/acapy_agent/wallet/anoncreds_upgrade.py @@ -404,7 +404,8 @@ async def upgrade_and_delete_rev_entry_records( for cred_rev_record in rev_list_upgrade_obj.cred_rev_records: if int(cred_rev_record.tags.get("cred_rev_id")) > next_index: next_index = int(cred_rev_record.tags.get("cred_rev_id")) - await txn.handle.remove(IssuerCredRevRecord.RECORD_TYPE, cred_rev_record.id) + + # Preserve issuer cred rev records so revocation metadata survives the upgrade await txn.handle.insert( CATEGORY_REV_LIST, From c89454912798b63fcbb0ebf62071911eb467b81e Mon Sep 17 00:00:00 2001 From: Vijay Soni Date: Sat, 10 Jan 2026 01:05:21 -0600 Subject: [PATCH 2/3] added regression test post txn.handle.remove() removal Signed-off-by: Vijay Soni --- .../wallet/tests/test_anoncreds_upgrade.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/acapy_agent/wallet/tests/test_anoncreds_upgrade.py b/acapy_agent/wallet/tests/test_anoncreds_upgrade.py index 5810d1477d..947866f7b9 100644 --- a/acapy_agent/wallet/tests/test_anoncreds_upgrade.py +++ b/acapy_agent/wallet/tests/test_anoncreds_upgrade.py @@ -1,4 +1,5 @@ import asyncio +import json from time import time from unittest import IsolatedAsyncioTestCase @@ -23,6 +24,8 @@ ) from ...tests import mock from ...utils.testing import create_test_profile +from ...anoncreds.models.revocation import RevList +from ...revocation.models.issuer_cred_rev_record import IssuerCredRevRecord from .. import anoncreds_upgrade @@ -403,3 +406,42 @@ async def test_failed_upgrade(self): ) # Storage type should not be updated assert storage_type_record.value == "askar" + + async def test_upgrade_preserves_issuer_cred_rev_records(self): + cred_ex_id = "legacy-cred-ex-1" + rev_reg_id = "rev-reg-1" + cred_rev_id = "1" + async with self.profile.session() as session: + record = IssuerCredRevRecord( + cred_ex_id=cred_ex_id, + rev_reg_id=rev_reg_id, + cred_rev_id=cred_rev_id, + ) + await record.save(session) + storage_record = StorageRecord( + IssuerCredRevRecord.RECORD_TYPE, + json.dumps(record.serialize()), + tags={"cred_rev_id": cred_rev_id}, + id=record.record_id, + ) + rev_list = RevList( + issuer_id="issuer", + rev_reg_def_id=rev_reg_id, + revocation_list=[0], + current_accumulator="accum", + ) + rev_list_upgrade_obj = anoncreds_upgrade.RevListUpgradeObj( + rev_list=rev_list, + pending=None, + rev_reg_def_id=rev_reg_id, + cred_rev_records=[storage_record], + ) + await anoncreds_upgrade.upgrade_and_delete_rev_entry_records( + session, rev_list_upgrade_obj + ) + + async with self.profile.session() as session: + retrieved = await IssuerCredRevRecord.retrieve_by_cred_ex_id( + session, cred_ex_id + ) + assert retrieved.cred_rev_id == cred_rev_id From 7492d12ec36c506476dfa620df7f5b62b8945dbf Mon Sep 17 00:00:00 2001 From: Vijay Soni Date: Sat, 10 Jan 2026 01:07:47 -0600 Subject: [PATCH 3/3] linting Signed-off-by: Vijay Soni --- acapy_agent/wallet/tests/test_anoncreds_upgrade.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/acapy_agent/wallet/tests/test_anoncreds_upgrade.py b/acapy_agent/wallet/tests/test_anoncreds_upgrade.py index 947866f7b9..1860b75491 100644 --- a/acapy_agent/wallet/tests/test_anoncreds_upgrade.py +++ b/acapy_agent/wallet/tests/test_anoncreds_upgrade.py @@ -7,6 +7,7 @@ from aries_askar import AskarError from ...anoncreds.issuer import CATEGORY_CRED_DEF_PRIVATE +from ...anoncreds.models.revocation import RevList from ...askar.profile import AskarProfileSession from ...cache.base import BaseCache from ...indy.credx.issuer import CATEGORY_CRED_DEF_KEY_PROOF @@ -15,6 +16,7 @@ from ...messaging.schemas.util import SCHEMA_SENT_RECORD_TYPE from ...multitenant.base import BaseMultitenantManager from ...multitenant.manager import MultitenantManager +from ...revocation.models.issuer_cred_rev_record import IssuerCredRevRecord from ...storage.base import BaseStorage from ...storage.record import StorageRecord from ...storage.type import ( @@ -24,8 +26,6 @@ ) from ...tests import mock from ...utils.testing import create_test_profile -from ...anoncreds.models.revocation import RevList -from ...revocation.models.issuer_cred_rev_record import IssuerCredRevRecord from .. import anoncreds_upgrade