)]}'
{"sushy_tools/emulator/resources/systems/novadriver.py":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"780b180972864ca139860372f89f6b4eebfbc8a6","unresolved":true,"context_lines":[{"line_number":122,"context_line":"        :param logger: Logger instance"},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        try:"},{"line_number":125,"context_line":"            state_dir \u003d config.get(\u0027SUSHY_EMULATOR_STATE_DIR\u0027)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            if cls._rescue_enabled:"},{"line_number":128,"context_line":"                cls._rescue_boot_modes \u003d memoize.PersistentDict()"},{"line_number":129,"context_line":"                cls._rescue_boot_modes.make_permanent("},{"line_number":130,"context_line":"                    state_dir, \u0027rescue_boot_modes\u0027)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"            if cls._rescue_vmedia_enabled:"},{"line_number":133,"context_line":"                # Store per-instance image IDs for rescue operations"},{"line_number":134,"context_line":"                # Unlike PXE rescue (which uses shared iPXE images), each"},{"line_number":135,"context_line":"                # instance gets its own uploaded ISO image"},{"line_number":136,"context_line":"                cls._rescue_vmedia_images \u003d memoize.PersistentDict()"},{"line_number":137,"context_line":"                cls._rescue_vmedia_images.make_permanent("},{"line_number":138,"context_line":"                    state_dir, \u0027rescue_vmedia_images\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"                # Store per-instance vmedia attributes (image URL and local"},{"line_number":141,"context_line":"                # file path). Necessary because Nova blocks metadata updates"},{"line_number":142,"context_line":"                # in RESCUED state"},{"line_number":143,"context_line":"                cls._rescue_vmedia_attrs \u003d memoize.PersistentDict()"},{"line_number":144,"context_line":"                cls._rescue_vmedia_attrs.make_permanent("},{"line_number":145,"context_line":"                    state_dir, \u0027rescue_vmedia_attrs\u0027)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"                # Cache rescue device configuration for vmedia"},{"line_number":148,"context_line":"                cls._rescue_vmedia_device \u003d config.get("},{"line_number":149,"context_line":"                    \u0027SUSHY_EMULATOR_OS_VMEDIA_RESCUE_DEVICE\u0027, \u0027cdrom\u0027)"},{"line_number":150,"context_line":"                cls._rescue_vmedia_bus \u003d config.get("},{"line_number":151,"context_line":"                    \u0027SUSHY_EMULATOR_OS_VMEDIA_RESCUE_BUS\u0027, \u0027sata\u0027)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"                logger.info("},{"line_number":154,"context_line":"                    \u0027Rescue-based vmedia enabled with device\u003d%s, bus\u003d%s\u0027,"},{"line_number":155,"context_line":"                    cls._rescue_vmedia_device, cls._rescue_vmedia_bus"},{"line_number":156,"context_line":"                )"},{"line_number":157,"context_line":"        except sqlite3.OperationalError as e:"},{"line_number":158,"context_line":"            # Handle concurrent initialization in multi-worker environments"},{"line_number":159,"context_line":"            # (e.g., Flask dev server with auto-reload)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f4573ee0_58868b3d","line":156,"range":{"start_line":125,"start_character":0,"end_line":156,"end_character":17},"updated":"2026-03-12 11:34:03.000000000","message":"hmm, reviewing my own patch. I think this should do one \"make_permanent\" in separate try block. We may have a race and end up only creating the first one.","commit_id":"6791b9c9062bfd14f2fb0066b81653e95dcc29a4"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"92f7e7f6913a6f35e724d2f97c59f904efa998fb","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        :param logger: Logger instance"},{"line_number":123,"context_line":"        \"\"\""},{"line_number":124,"context_line":"        try:"},{"line_number":125,"context_line":"            state_dir \u003d config.get(\u0027SUSHY_EMULATOR_STATE_DIR\u0027)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            if cls._rescue_enabled:"},{"line_number":128,"context_line":"                cls._rescue_boot_modes \u003d memoize.PersistentDict()"},{"line_number":129,"context_line":"                cls._rescue_boot_modes.make_permanent("},{"line_number":130,"context_line":"                    state_dir, \u0027rescue_boot_modes\u0027)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"            if cls._rescue_vmedia_enabled:"},{"line_number":133,"context_line":"                # Store per-instance image IDs for rescue operations"},{"line_number":134,"context_line":"                # Unlike PXE rescue (which uses shared iPXE images), each"},{"line_number":135,"context_line":"                # instance gets its own uploaded ISO image"},{"line_number":136,"context_line":"                cls._rescue_vmedia_images \u003d memoize.PersistentDict()"},{"line_number":137,"context_line":"                cls._rescue_vmedia_images.make_permanent("},{"line_number":138,"context_line":"                    state_dir, \u0027rescue_vmedia_images\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"                # Store per-instance vmedia attributes (image URL and local"},{"line_number":141,"context_line":"                # file path). Necessary because Nova blocks metadata updates"},{"line_number":142,"context_line":"                # in RESCUED state"},{"line_number":143,"context_line":"                cls._rescue_vmedia_attrs \u003d memoize.PersistentDict()"},{"line_number":144,"context_line":"                cls._rescue_vmedia_attrs.make_permanent("},{"line_number":145,"context_line":"                    state_dir, \u0027rescue_vmedia_attrs\u0027)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"                # Cache rescue device configuration for vmedia"},{"line_number":148,"context_line":"                cls._rescue_vmedia_device \u003d config.get("},{"line_number":149,"context_line":"                    \u0027SUSHY_EMULATOR_OS_VMEDIA_RESCUE_DEVICE\u0027, \u0027cdrom\u0027)"},{"line_number":150,"context_line":"                cls._rescue_vmedia_bus \u003d config.get("},{"line_number":151,"context_line":"                    \u0027SUSHY_EMULATOR_OS_VMEDIA_RESCUE_BUS\u0027, \u0027sata\u0027)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"                logger.info("},{"line_number":154,"context_line":"                    \u0027Rescue-based vmedia enabled with device\u003d%s, bus\u003d%s\u0027,"},{"line_number":155,"context_line":"                    cls._rescue_vmedia_device, cls._rescue_vmedia_bus"},{"line_number":156,"context_line":"                )"},{"line_number":157,"context_line":"        except sqlite3.OperationalError as e:"},{"line_number":158,"context_line":"            # Handle concurrent initialization in multi-worker environments"},{"line_number":159,"context_line":"            # (e.g., Flask dev server with auto-reload)"}],"source_content_type":"text/x-python","patch_set":1,"id":"6c1e3885_0367c952","line":156,"range":{"start_line":125,"start_character":0,"end_line":156,"end_character":17},"in_reply_to":"f4573ee0_58868b3d","updated":"2026-03-12 12:26:18.000000000","message":"Change updated to have try block for each make_permanent memoize persistentDict.","commit_id":"6791b9c9062bfd14f2fb0066b81653e95dcc29a4"}]}
