dfelton / kobens-gemini

Application for facilitating trades on the Gemini exchange.
9 stars 1 forks source link

Notice: PDO::beginTransaction(): send of 22 bytes failed with errno=104 Connection reset by peer #176

Open dfelton opened 3 years ago

dfelton commented 3 years ago
Shutdown Enabled at: 2021-03-28 09:12:22
Exception: Exception
Code: 0
Message: Notice: PDO::beginTransaction(): send of 22 bytes failed with errno=104 Connection reset by peer in vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Connection.php on line 306
Strace:
#0 [internal function]: Kobens\Core\ErrorHandler->handler(8, 'PDO::beginTrans...', '...', 306, Array)
#1 vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Connection.php(306): PDO->beginTransaction()
#2 src/TradeRepeater/Model/Resource/Trade/Action/SellPlaced.php(29): Zend\Db\Adapter\Driver\Pdo\Connection->beginTransaction()
#3 src/Command/Command/TradeRepeater/FillMonitor/WebSocket.php(171): Kobens\Gemini\TradeRepeater\Model\Resource\Trade\Action\SellPlaced->setNextState(6304)
#4 src/Command/Command/TradeRepeater/FillMonitor/WebSocket.php(147): Kobens\Gemini\Command\Command\TradeRepeater\FillMonitor\WebSocket->processCompletedTradeRepeaterOrder(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#5 src/Command/Command/TradeRepeater/FillMonitor/WebSocket.php(121): Kobens\Gemini\Command\Command\TradeRepeater\FillMonitor\WebSocket->processMessage(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#6 [internal function]: Kobens\Gemini\Command\Command\TradeRepeater\FillMonitor\WebSocket->Kobens\Gemini\Command\Command\TradeRepeater\FillMonitor\{closure}('a', NULL)
#7 vendor/amphp/amp/lib/Coroutine.php(105): Generator->send('[{"type":"fill"...')
#8 vendor/amphp/amp/lib/Internal/Placeholder.php(130): Amp\Coroutine->Amp\{closure}(NULL, '[{"type":"fill"...')
#9 vendor/amphp/amp/lib/Coroutine.php(110): Amp\Coroutine->resolve('[{"type":"fill"...')
#10 vendor/amphp/amp/lib/Internal/Placeholder.php(130): Amp\Coroutine->Amp\{closure}(NULL, NULL)
#11 vendor/amphp/amp/lib/Deferred.php(45): class@anonymous->resolve(NULL)
#12 vendor/amphp/byte-stream/lib/IteratorStream.php(57): Amp\Deferred->resolve()
#13 vendor/amphp/amp/lib/Success.php(36): Amp\ByteStream\IteratorStream->Amp\ByteStream\{closure}(NULL, false)
#14 vendor/amphp/amp/lib/Internal/Placeholder.php(125): Amp\Success->onResolve(Object(Closure))
#15 vendor/amphp/amp/lib/Deferred.php(45): class@anonymous->resolve(Object(Amp\Success))
#16 vendor/amphp/amp/lib/Internal/Producer.php(185): Amp\Deferred->resolve(Object(Amp\Success))
#17 vendor/amphp/amp/lib/Emitter.php(57): class@anonymous->complete()
#18 vendor/amphp/websocket/src/Rfc6455Client.php(357): Amp\Emitter->complete()
#19 vendor/amphp/websocket/src/Rfc6455Client.php(966): Amp\Websocket\Rfc6455Client->onData(1, '[{"type":"fill"...', true)
#20 [internal function]: Amp\Websocket\Rfc6455Client->parser()
#21 vendor/amphp/websocket/src/Rfc6455Client.php(271): Generator->send('\x81~\x02Q[{"type":"f...')
#22 [internal function]: Amp\Websocket\Rfc6455Client->read()
#23 vendor/amphp/amp/lib/Coroutine.php(105): Generator->send('\x81~\x02Q[{"type":"f...')
#24 vendor/amphp/amp/lib/Internal/Placeholder.php(130): Amp\Coroutine->Amp\{closure}(NULL, '\x81~\x02Q[{"type":"f...')
#25 vendor/amphp/amp/lib/Deferred.php(45): class@anonymous->resolve('\x81~\x02Q[{"type":"f...')
#26 vendor/amphp/byte-stream/lib/ResourceInputStream.php(101): Amp\Deferred->resolve('\x81~\x02Q[{"type":"f...')
#27 vendor/amphp/amp/lib/Loop/NativeDriver.php(192): Amp\ByteStream\ResourceInputStream::Amp\ByteStream\{closure}('n', Resource id #482, NULL)
#28 vendor/amphp/amp/lib/Loop/NativeDriver.php(97): Amp\Loop\NativeDriver->selectStreams(Array, Array, 1)
#29 vendor/amphp/amp/lib/Loop/Driver.php(134): Amp\Loop\NativeDriver->dispatch(true)
#30 vendor/amphp/amp/lib/Loop/Driver.php(72): Amp\Loop\Driver->tick()
#31 vendor/amphp/amp/lib/Loop.php(84): Amp\Loop\Driver->run()
#32 src/Command/Command/TradeRepeater/FillMonitor/WebSocket.php(92): Amp\Loop::run(Object(Closure))
#33 vendor/symfony/console/Command/Command.php(255): Kobens\Gemini\Command\Command\TradeRepeater\FillMonitor\WebSocket->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#34 vendor/symfony/console/Application.php(1009): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#35 vendor/symfony/console/Application.php(273): Symfony\Component\Console\Application->doRunCommand(Object(Kobens\Gemini\Command\Command\TradeRepeater\FillMonitor\WebSocket), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#36 vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#37 bin/gemini(442): Symfony\Component\Console\Application->run()
#38 {main}
dfelton commented 3 years ago

This issue impacts multiple areas. Also does not seem to be necessarily due to connections hanging around for a long time. I state this as it seems to more commonly occur when placing a surge of buy orders after having just recently added a bunch of records to the trade_repeater table. (but not at the start of it, during the middle of orders being placed, which proves the connection was used recently)

Shutdown Enabled at: 2021-04-12 14:07:33
Exception: Exception
Code: 0
Message: Notice: PDO::beginTransaction(): send of 22 bytes failed with errno=104 Connection reset by peer in vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Connection.php on line 306
Strace:
#0 [internal function]: Kobens\Core\ErrorHandler->handler(8, 'PDO::beginTrans...', '...', 306, Array)
#1 vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Connection.php(306): PDO->beginTransaction()
#2 vendor/kobens/kobens-core/src/Http/Request/Throttler/Adapter/MariaDb.php(75): Zend\Db\Adapter\Driver\Pdo\Connection->beginTransaction()
#3 vendor/kobens/kobens-core/src/Http/Request/Throttler.php(35): Kobens\Core\Http\Request\Throttler\Adapter\MariaDb->get('api.gemini.com:...')
#4 src/Api/Rest/PublicEndpoints/Request.php(69): Kobens\Core\Http\Request\Throttler->throttle()
#5 src/Api/Rest/PublicEndpoints/Ticker.php(21): Kobens\Gemini\Api\Rest\PublicEndpoints\Request->getResponse('/v1/pubticker/s...')
#6 src/Api/Market/GetPrice.php(74): Kobens\Gemini\Api\Rest\PublicEndpoints\Ticker->getData('sandusd')
#7 src/Api/Market/GetPrice.php(56): Kobens\Gemini\Api\Market\GetPrice->getPriceViaTicker('sandusd')
#8 src/Api/Market/GetPrice.php(32): Kobens\Gemini\Api\Market\GetPrice->getData('sandusd')
#9 src/Api/Rest/PrivateEndpoints/OrderPlacement/NewOrder/ForceMaker.php(86): Kobens\Gemini\Api\Market\GetPrice->getAsk('sandusd')
#10 src/Api/Rest/PrivateEndpoints/OrderPlacement/NewOrder/ForceMaker.php(65): Kobens\Gemini\Api\Rest\PrivateEndpoints\OrderPlacement\NewOrder\ForceMaker->getNewPrice(Object(Kobens\Gemini\Exchange\Currency\Pair), '0.67745', 'buy')
#11 src/Command/Command/TradeRepeater/Buyer.php(147): Kobens\Gemini\Api\Rest\PrivateEndpoints\OrderPlacement\NewOrder\ForceMaker->place(Object(Kobens\Gemini\Exchange\Currency\Pair), 'buy', '1', '0.67745', 'repeater_7184_b...')
#12 src/Command/Command/TradeRepeater/Buyer.php(116): Kobens\Gemini\Command\Command\TradeRepeater\Buyer->place(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput), Object(Kobens\Gemini\TradeRepeater\Model\Trade), 'repeater_7184_b...')
#13 src/Command/Command/TradeRepeater/Buyer.php(91): Kobens\Gemini\Command\Command\TradeRepeater\Buyer->mainLoop(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#14 vendor/symfony/console/Command/Command.php(255): Kobens\Gemini\Command\Command\TradeRepeater\Buyer->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 vendor/symfony/console/Application.php(1009): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 vendor/symfony/console/Application.php(273): Symfony\Component\Console\Application->doRunCommand(Object(Kobens\Gemini\Command\Command\TradeRepeater\Buyer), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 bin/gemini(443): Symfony\Component\Console\Application->run()
#19 {main}