Getting the error in driver version 1.14
Bug Report
We have integrated the MongoDB data lake archive into our system.
We are connecting the MongoDB archive connection and listing out the records in it. it is working fine with the driver version 1.13.0, but the same thing is not working in version 1.14. If we try to run any simple find query or aggregate query then not able to retrieve the data. the query just not works.
For now, we have degraded the driver version.
Please guide us for the solution.
Error exception:
[object] (MongoDB\\Driver\\Exception\\RuntimeException(code: 0): at /var/app/current/vendor/mongodb/mongodb/src/Operation/Aggregate.php:391)
#0 /var/app/current/vendor/mongodb/mongodb/src/Operation/Aggregate.php(391): MongoDB\\Driver\\Server->executeReadCommand('bloompost_test', Object(MongoDB\\Driver\\Command), Array)
#1 /var/app/current/vendor/mongodb/mongodb/src/Operation/Aggregate.php(286): MongoDB\\Operation\\Aggregate->executeCommand(Object(MongoDB\\Driver\\Server), Object(MongoDB\\Driver\\Command))
#2 /var/app/current/vendor/mongodb/mongodb/src/Collection.php(246): MongoDB\\Operation\\Aggregate->execute(Object(MongoDB\\Driver\\Server))
#3 [internal function]: MongoDB\\Collection->aggregate(Array)
#4 /var/app/current/vendor/jenssegers/mongodb/src/Collection.php(45): call_user_func_array(Array, Array)
#5 /var/app/current/app/Traits/ArchivedOrderDataTrait.php(239): Jenssegers\\Mongodb\\Collection->__call('aggregate', Array)
#6 [internal function]: App\\Http\\Controllers\\OrderArchiveController->App\\Traits\\{closure}(Object(Jenssegers\\Mongodb\\Collection))
#7 /var/app/current/vendor/jenssegers/mongodb/src/Query/Builder.php(748): call_user_func(Object(Closure), Object(Jenssegers\\Mongodb\\Collection))
#8 /var/app/current/vendor/jenssegers/mongodb/src/Eloquent/Builder.php(170): Jenssegers\\Mongodb\\Query\\Builder->raw(Object(Closure))
#9 /var/app/current/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(23): Jenssegers\\Mongodb\\Eloquent\\Builder->raw(Object(Closure))
#10 /var/app/current/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2229): Illuminate\\Database\\Eloquent\\Model->forwardCallTo(Object(Jenssegers\\Mongodb\\Eloquent\\Builder), 'raw', Array)
#11 /var/app/current/vendor/jenssegers/mongodb/src/Eloquent/Model.php(516): Illuminate\\Database\\Eloquent\\Model->__call('raw', Array)
#12 /var/app/current/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2241): Jenssegers\\Mongodb\\Eloquent\\Model->__call('raw', Array)
#13 /var/app/current/app/Traits/ArchivedOrderDataTrait.php(240): Illuminate\\Database\\Eloquent\\Model::__callStatic('raw', Array)
#14 /var/app/current/app/Http/Controllers/OrderArchiveController.php(109): App\\Http\\Controllers\\OrderArchiveController->getFilteredOrderCollection(Object(Illuminate\\Http\\Request), '5ffc6ee6e24bff2...')
#15 /var/app/current/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\OrderArchiveController->getList(Object(Illuminate\\Http\\Request), '5ffc6ee6e24bff2...')
#16 /var/app/current/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('getList', Array)
#17 /var/app/current/vendor/laravel/framework/src/Illuminate/Routing/Route.php(261): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\OrderArchiveController), 'getList')
#18 /var/app/current/vendor/laravel/framework/src/Illuminate/Routing/Route.php(204): Illuminate\\Routing\\Route->runController()
#19 /var/app/current/vendor/laravel/framework/src/Illuminate/Routing/Router.php(725): Illuminate\\Routing\\Route->run()
#20 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#21 /var/app/current/app/Http/Middleware/Admin.php(23): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#22 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\Admin->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#23 /var/app/current/app/Http/Middleware/PreventBackHistory.php(15): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#24 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\PreventBackHistory->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#25 /var/app/current/app/Http/Middleware/CheckPassWordExpired.php(29): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#26 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\CheckPassWordExpired->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#27 /var/app/current/app/Http/Middleware/LanguageMiddleware.php(24): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#28 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\LanguageMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 /var/app/current/vendor/spatie/laravel-csp/src/AddCspHeaders.php(13): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#30 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Spatie\\Csp\\AddCspHeaders->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#31 /var/app/current/app/Http/Middleware/XssAttackPreventionMiddleware.php(66): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#32 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\XssAttackPreventionMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#33 /var/app/current/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#34 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#35 /var/app/current/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(44): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#36 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Auth\\Middleware\\Authenticate->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#37 /var/app/current/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#38 /var/app/current/app/Http/Middleware/VerifyCsrfToken.php(36): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#39 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#40 /var/app/current/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#42 /var/app/current/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#43 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#44 /var/app/current/app/Http/Middleware/LoginSecurityMiddleware.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#45 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\LoginSecurityMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#46 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#47 /var/app/current/vendor/laravel/framework/src/Illuminate/Routing/Router.php(726): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#48 /var/app/current/vendor/laravel/framework/src/Illuminate/Routing/Router.php(703): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#49 /var/app/current/vendor/laravel/framework/src/Illuminate/Routing/Router.php(667): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#50 /var/app/current/vendor/laravel/framework/src/Illuminate/Routing/Router.php(656): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#51 /var/app/current/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#52 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#53 /var/app/current/vendor/livewire/livewire/src/DisableBrowserCache.php(19): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#54 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Livewire\\DisableBrowserCache->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#55 /var/app/current/app/Http/Middleware/SecureHeaders.php(18): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#56 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\SecureHeaders->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#57 /var/app/current/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#58 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#59 /var/app/current/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#60 /var/app/current/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
#61 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#62 /var/app/current/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#63 /var/app/current/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#64 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#65 /var/app/current/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#66 /var/app/current/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#67 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#68 /var/app/current/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#69 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#70 /var/app/current/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#71 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#72 /var/app/current/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#73 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#74 /var/app/current/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#75 /var/app/current/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#76 /var/app/current/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#77 /var/app/current/public/index.php(61): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#78 {main}
"}
Environment
Test Script
Expected and Actual Behavior
Debug Log
@Jaimin-Devhero it would be helpful to post the actual exception message, along with a minimal aggregation pipeline that triggers this error in 1.14. We can't take a look at this issue without this information. Please note that the bug report template suggests providing this information for this exact reason.
Hello @alcaeus
The error message and stace are given in the issue description and even the simple query like below is now working.
It's not like we face this issue in aggregation only, even a simple Find query is not working.
db.order.aggregate([])
below is our code if that would be helpful to you.
$orders = Order::raw( function ($collection) { $pipeline = []; return $collection->aggregate($pipeline); } );
I can see the trace for the exception, which indicates that the exception occurs when the driver is executing the aggregate command on the server. However, you did not post an exception message that would help pinpoint the issue.
As for find not working, please note that the code you posted above does not run find, but rather aggregate. You can test a find query by calling Order::all or Order::find. To figure out whether this is an issue related to the driver, you should connect to your server using the shell (I recommend mongosh as the legacy mongo shell is no longer distributed with newer server versions) and try running the command that fails in the driver. If it passes in the shell there's definitely a driver issue, but an error in the shell points to something else being the problem.
Another question here: you say downgrading to driver version 1.13 works - are you referring to the version of ext-mongodb? Can you please post both versions (ext-mongodb and mongodb/mongodb) that work or don't work? I'll assume you mean ext-mongoldb, as there is no 1.14 release for mongodb/mongodb (and there won't be as we're skipping 1.14 and jumping straight to 1.15 to avoid this version number confusion in the future).
Hello @alcaeus
If we downgrade Extention ext-mongodb (pecl) to 1.13.0 then it works fine. but whenever we upgrade it to 1.14 it does not work.
We have also tried the below code, but it returns null in the response.
require 'vendor/autoload.php';
$client = new MongoDB\Client($mongodbUri);
$db = $client->bloompost;
$dbs = $client->listDatabases();
$result = $db->order->findOne([]);
var_dump($dbs);
Please find the below image for the error.

Hi @Jaimin-Devhero,
apologies for not noticing the empty error message sooner. This is indeed strange, but I wasn't able to reproduce it. However, it does point to an internal error with libmongoc returning an empty error struct, which is certainly strange.
To debug this, we'll need some more information, namely debug logs. You can use the mongodb.debug INI setting to enable that.
Using the code you posted above, here's how you can enable the debug log for the aggregate operation only:
require 'vendor/autoload.php';
$client = new MongoDB\Client($mongodbUri);
$db = $client->bloompost;
// Enable debug logging to /tmp/php-mongodb-log/ - ensure the directory exists
ini_set('mongodb.debug', '/tmp/php-mongodb-log/');
$result = $db->order->findOne([]);
// Disable debug logging
ini_set('mongodb.debug', 'off');
After running the corresponding script, you'll find a new log file in the directory specified in the first call to ini_set. Be aware that this log file may contain sensitive information (e.g. credentials)! Please ensure to redact such information before sharing the file, or reach out to me if you need to share the file in a private channel. The debug log will allow us to investigate what's happening behind the scenes to figure out where the empty error is coming from.
Hi @Jaimin-Devhero,
after some more trial and error I was able to reproduce the issue you mentioned. The error is indeed caused by libmongoc. I've reported the bug upstream and will provide an update once this is fixed. If you have a MongoDB Jira account you can subscribe for updates to CDRIVER-4499 to see when the upstream issue is fixed.
CDRIVER-4499, which @alcaeus referenced above, what actually a superficial issue masking a lower-level bug that prevented connections to Atlas Data Lake. That lower-level bug was reported in CDRIVER-4502 and has been fixed and released in libmongoc 1.22.2.
We just tagged 1.14.2, which includes the fix for CDRIVER-4502.
CDRIVER-4499 will be addressed in a future release.