{"record":{"id":"ef715099c58a3f14","repo":"phalcon/cphalcon","slug":"underlying-storage-exception-message","errorCode":null,"errorMessage":"{underlying Storage exception message}","messagePattern":"\\{underlying Storage exception message\\}","errorType":"exception","errorClass":"Phalcon\\Queue\\Exceptions\\Exception","httpStatus":null,"severity":"error","filePath":"phalcon/Queue/Adapter/Redis/RedisConnectionFactory.zep","lineNumber":97,"sourceCode":"        let adapter = new StorageRedis(\n            new SerializerFactory(),\n            array_merge(\n                options,\n                [\n                    \"prefix\"            : \"\",\n                    \"defaultSerializer\" : \"none\"\n                ]\n            )\n        );\n\n        /**\n         * Surface connect/auth/select failures as a queue exception so every\n         * adapter honors the QueueThrowable contract.\n         */\n        try {\n            let redis = adapter->getAdapter();\n        } catch StorageException, e {\n            throw new Exception(e->getMessage(), (int) e->getCode(), e);\n        }\n\n        return new RedisContext(redis, prefix, pollInterval);\n    }\n}\n","sourceCodeStart":79,"sourceCodeEnd":103,"githubUrl":"https://github.com/phalcon/cphalcon/blob/b7419de9cd0a8a3f48441ead84c9f8415d463e25/phalcon/Queue/Adapter/Redis/RedisConnectionFactory.zep#L79-L103","documentation":"Relay guard in RedisConnectionFactory: any Phalcon\\Storage exception raised while obtaining the underlying Redis adapter (connection failure, authentication error, SELECT database failure) is re-thrown as a queue Exception with the storage exception's original message, code, and previous exception. It is a sentinel-style wrapper ensuring every queue adapter failure honors the QueueThrowable contract — the real cause is described by the wrapped storage message.","triggerScenarios":"Thrown at phalcon/Queue/Adapter/Redis/RedisConnectionFactory.zep:97 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the wrapped message for the root cause (connection refused, AUTH failure, wrong DB index)","Verify Redis host, port, auth, and database index options passed to the factory","Confirm the Redis server is running and reachable","Inspect the previous exception in the chain for full storage-level detail"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b7419de9cd0a8a3f48441ead84c9f8415d463e25","analyzedAt":"2026-08-21T06:21:18.811Z","contentChangedAt":"2026-08-21T06:21:18.811Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}