phalcon/cphalcon · error · Phalcon\Queue\Exceptions\Exception

{underlying Storage exception message}

Error message

{underlying Storage exception message}

What it means

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.

Solutions

  1. Read the wrapped message for the root cause (connection refused, AUTH failure, wrong DB index)
  2. Verify Redis host, port, auth, and database index options passed to the factory
  3. Confirm the Redis server is running and reachable
  4. Inspect the previous exception in the chain for full storage-level detail
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at phalcon/Queue/Adapter/Redis/RedisConnectionFactory.zep:97 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of phalcon/cphalcon@b7419de9cd (2026-08-21). Data as JSON: /api/errors/ef715099c58a3f14. Report an issue: GitHub.

Appendix: source

Thrown at phalcon/Queue/Adapter/Redis/RedisConnectionFactory.zep:97

        let adapter = new StorageRedis(
            new SerializerFactory(),
            array_merge(
                options,
                [
                    "prefix"            : "",
                    "defaultSerializer" : "none"
                ]
            )
        );

        /**
         * Surface connect/auth/select failures as a queue exception so every
         * adapter honors the QueueThrowable contract.
         */
        try {
            let redis = adapter->getAdapter();
        } catch StorageException, e {
            throw new Exception(e->getMessage(), (int) e->getCode(), e);
        }

        return new RedisContext(redis, prefix, pollInterval);
    }
}

View on GitHub (pinned to b7419de9cd)