framework
framework copied to clipboard
DatabaseUuidFailedJobProvider doesn't work with Postgres Unix Socket
- Laravel Version: 9.40.1
- PHP Version: 8.1.11
- Database Driver & Version: Postgres
Description:
Using unix sockets instead of a network address such as 127.0.0.1 has performance benefits when the Postgres instance is located on the same machine. This database configuration works normally, EXCEPT when inserting failed jobs.
DB_DRIVER=pgsql
DB_HOST=/var/run/postgresql
DB_DATABASE=foo
DB_USERNAME=bar
DB_PASSWORD=null
DB_PORT=null
DB_PREFIX=null
When using this configuration, failed jobs give rise to the following exception, and nothing is inserted in the failed_jobs table:
[2022-11-25 09:21:20] production.ERROR: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for /var/run/postgresql failed: Name or service not known (SQL: delete from `failed_jobs` where `failed_at` < 2022-11-24 09:21:20 limit 1000) [{"capturer":"$this->reportable"}]
[2022-11-25 09:21:20] production.ERROR: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for /var/run/postgresql failed: Name or service not known (SQL: delete from `failed_jobs` where `failed_at` < 2022-11-24 09:21:20 limit 1000) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 2002): SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for /var/run/postgresql failed: Name or service not known (SQL: delete from `failed_jobs` where `failed_at` < 2022-11-24 09:21:20 limit 1000) at /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php:760)
[stacktrace]
#0 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(899): Illuminate\\Database\\Connection->runQueryCallback()
#1 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(879): Illuminate\\Database\\Connection->tryAgainIfCausedByLostConnection()
#2 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(723): Illuminate\\Database\\Connection->handleQueryException()
#3 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(577): Illuminate\\Database\\Connection->run()
#4 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(522): Illuminate\\Database\\Connection->affectingStatement()
#5 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3456): Illuminate\\Database\\Connection->delete()
#6 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Queue/Failed/DatabaseUuidFailedJobProvider.php(138): Illuminate\\Database\\Query\\Builder->delete()
#7 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php(49): Illuminate\\Queue\\Failed\\DatabaseUuidFailedJobProvider->prune()
#8 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Queue\\Console\\PruneFailedJobsCommand->handle()
#9 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#10 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#11 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#12 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/Container.php(651): Illuminate\\Container\\BoundMethod::call()
#13 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Console/Command.php(178): Illuminate\\Container\\Container->call()
#14 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Command/Command.php(308): Illuminate\\Console\\Command->execute()
#15 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Console/Command.php(148): Symfony\\Component\\Console\\Command\\Command->run()
#16 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Application.php(1014): Illuminate\\Console\\Command->run()
#17 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Application.php(301): Symfony\\Component\\Console\\Application->doRunCommand()
#18 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun()
#19 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Console/Application.php(102): Symfony\\Component\\Console\\Application->run()
#20 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(155): Illuminate\\Console\\Application->run()
#21 /home/forge/fintable.io/releases/20221124172709/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle()
#22 {main}
[previous exception] [object] (PDOException(code: 2002): SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for /var/run/postgresql failed: Name or service not known at /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70)
[stacktrace]
#0 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(70): PDO->__construct()
#1 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(100): Illuminate\\Database\\Connectors\\Connector->createPdoConnection()
#2 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(50): Illuminate\\Database\\Connectors\\Connector->tryAgainIfCausedByLostConnection()
#3 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php(24): Illuminate\\Database\\Connectors\\Connector->createConnection()
#4 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(184): Illuminate\\Database\\Connectors\\MySqlConnector->connect()
#5 [internal function]: Illuminate\\Database\\Connectors\\ConnectionFactory->Illuminate\\Database\\Connectors\\{closure}()
#6 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(1171): call_user_func()
#7 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(566): Illuminate\\Database\\Connection->getPdo()
#8 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(753): Illuminate\\Database\\Connection->Illuminate\\Database\\{closure}()
#9 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(899): Illuminate\\Database\\Connection->runQueryCallback()
#10 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(879): Illuminate\\Database\\Connection->tryAgainIfCausedByLostConnection()
#11 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(723): Illuminate\\Database\\Connection->handleQueryException()
#12 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(577): Illuminate\\Database\\Connection->run()
#13 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(522): Illuminate\\Database\\Connection->affectingStatement()
#14 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3456): Illuminate\\Database\\Connection->delete()
#15 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Queue/Failed/DatabaseUuidFailedJobProvider.php(138): Illuminate\\Database\\Query\\Builder->delete()
#16 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php(49): Illuminate\\Queue\\Failed\\DatabaseUuidFailedJobProvider->prune()
#17 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Queue\\Console\\PruneFailedJobsCommand->handle()
#18 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#19 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#20 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#21 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/Container.php(651): Illuminate\\Container\\BoundMethod::call()
#22 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Console/Command.php(178): Illuminate\\Container\\Container->call()
#23 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Command/Command.php(308): Illuminate\\Console\\Command->execute()
#24 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Console/Command.php(148): Symfony\\Component\\Console\\Command\\Command->run()
#25 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Application.php(1014): Illuminate\\Console\\Command->run()
#26 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Application.php(301): Symfony\\Component\\Console\\Application->doRunCommand()
#27 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun()
#28 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Console/Application.php(102): Symfony\\Component\\Console\\Application->run()
#29 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(155): Illuminate\\Console\\Application->run()
#30 /home/forge/fintable.io/releases/20221124172709/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle()
#31 {main}
[previous exception] [object] (PDOException(code: 0): PDO::__construct(): php_network_getaddresses: getaddrinfo for /var/run/postgresql failed: Name or service not known at /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70)
[stacktrace]
#0 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(70): PDO->__construct()
#1 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(100): Illuminate\\Database\\Connectors\\Connector->createPdoConnection()
#2 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(50): Illuminate\\Database\\Connectors\\Connector->tryAgainIfCausedByLostConnection()
#3 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php(24): Illuminate\\Database\\Connectors\\Connector->createConnection()
#4 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(184): Illuminate\\Database\\Connectors\\MySqlConnector->connect()
#5 [internal function]: Illuminate\\Database\\Connectors\\ConnectionFactory->Illuminate\\Database\\Connectors\\{closure}()
#6 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(1171): call_user_func()
#7 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(566): Illuminate\\Database\\Connection->getPdo()
#8 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(753): Illuminate\\Database\\Connection->Illuminate\\Database\\{closure}()
#9 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(899): Illuminate\\Database\\Connection->runQueryCallback()
#10 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(879): Illuminate\\Database\\Connection->tryAgainIfCausedByLostConnection()
#11 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(723): Illuminate\\Database\\Connection->handleQueryException()
#12 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(577): Illuminate\\Database\\Connection->run()
#13 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Connection.php(522): Illuminate\\Database\\Connection->affectingStatement()
#14 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3456): Illuminate\\Database\\Connection->delete()
#15 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Queue/Failed/DatabaseUuidFailedJobProvider.php(138): Illuminate\\Database\\Query\\Builder->delete()
#16 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php(49): Illuminate\\Queue\\Failed\\DatabaseUuidFailedJobProvider->prune()
#17 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Queue\\Console\\PruneFailedJobsCommand->handle()
#18 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#19 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#20 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#21 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Container/Container.php(651): Illuminate\\Container\\BoundMethod::call()
#22 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Console/Command.php(178): Illuminate\\Container\\Container->call()
#23 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Command/Command.php(308): Illuminate\\Console\\Command->execute()
#24 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Console/Command.php(148): Symfony\\Component\\Console\\Command\\Command->run()
#25 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Application.php(1014): Illuminate\\Console\\Command->run()
#26 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Application.php(301): Symfony\\Component\\Console\\Application->doRunCommand()
#27 /home/forge/fintable.io/releases/20221124172709/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun()
#28 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Console/Application.php(102): Symfony\\Component\\Console\\Application->run()
#29 /home/forge/fintable.io/releases/20221124172709/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(155): Illuminate\\Console\\Application->run()
#30 /home/forge/fintable.io/releases/20221124172709/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle()
#31 {main}
"}
Illuminate\Database\QueryException
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for /var/run/postgresql failed: Name or service not known (SQL: delete from `failed_jobs` where `failed_at` < 2022-11-24 09:21:20 limit 1000)
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:760
756▕ // If an exception occurs when attempting to run a query, we'll format the error
757▕ // message to include the bindings with SQL, which will make this exception a
758▕ // lot more helpful to the developer instead of just the database's errors.
759▕ catch (Exception $e) {
➜ 760▕ throw new QueryException(
761▕ $query, $this->prepareBindings($bindings), $e
762▕ );
763▕ }
764▕ }
+31 vendor frames
32 artisan:37
Illuminate\Foundation\Console\Kernel::handle()
Steps To Reproduce:
- Use a unix socket address instead of a network address for DB_HOST, for example
DB_HOST=/var/run/postgresql - Let a job fail
- Run the
php artisan queue:prune-failed --hours=0command - The exception above is thrown.
For now, a temporary workaround I am using to prevent these exceptions from being raised is by setting QUEUE_FAILED_DRIVER=null, however then I have no tracking of my failed jobs.
Thank you for reporting this issue!
As Laravel is an open source project, we rely on the community to help us diagnose and fix issues as it is not possible to research and fix every issue reported to us via GitHub. If possible, please make a pull request fixing the issue you have described, along with corresponding tests. All pull requests are promptly reviewed by the Laravel team.
Thank you!
Hey @ibnIrshad ✋
I was playing around with this issue on my local. And unfortunately i cant re-produce it.
I`ve tested many different ways, but everything works fine.
One thing which I`ve changed though - its something related to the .env file , in my case creds for DB looks like this:
DB_CONNECTION=pgsql
DB_HOST=/var/run/postgresql/
DB_DATABASE=foo
DB_USERNAME=bar
DB_PASSWORD=null
DB_PREFIX=null
Can you provide more details of your configuration and how you set everything up?
Thank you!
@ibnIrshad feel free to continue the discussion here.
Thanks @dyriavin