yii2-elasticsearch: Maximum function nesting level of '256' reached, aborting! in /vendor/yiisoft/yii2-elasticsearch/ActiveDataProvider.php:82
On “minimum-stability”: stable work fine !
Infinite loop after Yii2 update: https://github.com/yiisoft/yii2/commit/a5182e5d5eecc52622d8e1a0b3c6cb43641f5ca1
What steps will reproduce the problem?
- php composer.phar create-project --prefer-dist yiisoft/yii2-app-basic basic
- Set elastic componet auth data …
- Changes in composer.json
“minimum-stability”: stable --> dev, “php”: >=5.4.0 --> >=7.0 “require”: add “yiisoft/yii2-elasticsearch”: “~2.1”
Finaly composer.json
{
"name": "yiisoft/yii2-app-basic",
"description": "Yii 2 Basic Project Template",
"keywords": ["yii2", "framework", "basic", "project template"],
"homepage": "http://www.yiiframework.com/",
"type": "project",
"license": "BSD-3-Clause",
"support": {
"issues": "https://github.com/yiisoft/yii2/issues?state=open",
"forum": "http://www.yiiframework.com/forum/",
"wiki": "http://www.yiiframework.com/wiki/",
"irc": "irc://irc.freenode.net/yii",
"source": "https://github.com/yiisoft/yii2"
},
"minimum-stability": "dev",
"require": {
"php": ">=7.0",
"yiisoft/yii2": "~2.0.14",
"yiisoft/yii2-bootstrap": "~2.0.0",
"yiisoft/yii2-swiftmailer": "~2.0.0",
"yiisoft/yii2-elasticsearch": "~2.1"
},
"require-dev": {
"yiisoft/yii2-debug": "~2.0.0",
"yiisoft/yii2-gii": "~2.0.0",
"yiisoft/yii2-faker": "~2.0.0",
"codeception/base": "^2.2.3",
"codeception/verify": "~0.3.1",
"codeception/specify": "~0.4.3"
},
"config": {
"process-timeout": 1800,
"fxp-asset": {
"enabled": false
}
},
"scripts": {
"post-install-cmd": [
"yii\\composer\\Installer::postInstall"
],
"post-create-project-cmd": [
"yii\\composer\\Installer::postCreateProject",
"yii\\composer\\Installer::postInstall"
]
},
"extra": {
"yii\\composer\\Installer::postCreateProject": {
"setPermission": [
{
"runtime": "0777",
"web/assets": "0777",
"yii": "0755"
}
]
},
"yii\\composer\\Installer::postInstall": {
"generateCookieValidationKey": [
"config/web.php"
]
}
},
"repositories": [
{
"type": "composer",
"url": "https://asset-packagist.org"
}
]
}
- \app\controllers\SiteController::actionIndex
/**
* Displays homepage.
* @return string
*/
public function actionIndex()
{
$query = new \yii\elasticsearch\Query();
$query->limit(10);
$query->from('report', 'report');
$provider = new \yii\elasticsearch\ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 2
],
]);
$models = $provider->getModels();
var_dump($models);
die;
return $this->render('index');
}
- php yii serve
- curl -X GET ‘http://localhost:8080’
What’s expected?
\yii\elasticsearch\ActiveDataProvide::getModels() return array
What do you get instead?
[Wed Jan 16 20:17:25 2019] PHP Error: Maximum function nesting level of '256' reached, aborting! in basic/vendor/yiisoft/yii2/base/Component.php on line 307
[Wed Jan 16 20:17:25 2019] PHP Stack trace:
[Wed Jan 16 20:17:25 2019] PHP 1. {main}() basic/web/index.php:0
[Wed Jan 16 20:17:25 2019] PHP 2. yii\web\Application->run() basic/web/index.php:12
[Wed Jan 16 20:17:25 2019] PHP 3. yii\web\Application->handleRequest() basic/vendor/yiisoft/yii2/base/Application.php:386
[Wed Jan 16 20:17:25 2019] PHP 4. yii\web\Application->runAction() basic/vendor/yiisoft/yii2/web/Application.php:103
[Wed Jan 16 20:17:25 2019] PHP 5. app\controllers\SiteController->runAction() basic/vendor/yiisoft/yii2/base/Module.php:528
[Wed Jan 16 20:17:25 2019] PHP 6. yii\base\InlineAction->runWithParams() basic/vendor/yiisoft/yii2/base/Controller.php:157
[Wed Jan 16 20:17:25 2019] PHP 7. call_user_func_array:{basic/vendor/yiisoft/yii2/base/InlineAction.php:57}() basic/vendor/yiisoft/yii2/base/InlineAction.php:57
[Wed Jan 16 20:17:25 2019] PHP 8. app\controllers\SiteController->actionIndex() basic/vendor/yiisoft/yii2/base/InlineAction.php:57
[Wed Jan 16 20:17:25 2019] PHP 9. yii\elasticsearch\ActiveDataProvider->getModels() basic/controllers/SiteController.php:74
[Wed Jan 16 20:17:25 2019] PHP 10. yii\elasticsearch\ActiveDataProvider->prepare() basic/vendor/yiisoft/yii2/data/BaseDataProvider.php:117
[Wed Jan 16 20:17:25 2019] PHP 11. yii\elasticsearch\ActiveDataProvider->prepareModels() basic/vendor/yiisoft/yii2/data/BaseDataProvider.php:104
[Wed Jan 16 20:17:25 2019] PHP 12. yii\elasticsearch\ActiveDataProvider->getPagination() basic/vendor/yiisoft/yii2-elasticsearch/ActiveDataProvider.php:89
[Wed Jan 16 20:17:25 2019] PHP 13. yii\elasticsearch\ActiveDataProvider->prepareTotalCount() basic/vendor/yiisoft/yii2/data/BaseDataProvider.php:199
[Wed Jan 16 20:17:25 2019] PHP 14. yii\elasticsearch\ActiveDataProvider->getQueryResults() basic/vendor/yiisoft/yii2-elasticsearch/ActiveDataProvider.php:117
[Wed Jan 16 20:17:25 2019] PHP 15. yii\elasticsearch\ActiveDataProvider->prepare() basic/vendor/yiisoft/yii2-elasticsearch/ActiveDataProvider.php:50
[Wed Jan 16 20:17:25 2019] PHP 16. yii\elasticsearch\ActiveDataProvider->prepareModels() basic/vendor/yiisoft/yii2/data/BaseDataProvider.php:104
[Wed Jan 16 20:17:25 2019] PHP 17. yii\elasticsearch\ActiveDataProvider->getPagination() basic/vendor/yiisoft/yii2-elasticsearch/ActiveDataProvider.php:89
[Wed Jan 16 20:17:25 2019] PHP 18. yii\elasticsearch\ActiveDataProvider->prepareTotalCount() basic/vendor/yiisoft/yii2/data/BaseDataProvider.php:199
[Wed Jan 16 20:17:25 2019] PHP 19. yii\elasticsearch\ActiveDataProvider->getQueryResults() basic/vendor/yiisoft/yii2-elasticsearch/ActiveDataProvider.php:117
[Wed Jan 16 20:17:25 2019] PHP 20. yii\elasticsearch\ActiveDataProvider->prepare() basic/vendor/yiisoft/yii2-elasticsearch/ActiveDataProvider.php:50
[Wed Jan 16 20:17:25 2019] PHP 21. yii\elasticsearch\ActiveDataProvider->prepareModels() basic/vendor/yiisoft/yii2/data/BaseDataProvider.php:104
...
Additional info
| Q | A |
|---|---|
| Yii version | 2.0.16-dev |
| PHP version | 7.1.25 |
| Operating system | Mojave |
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 31 (19 by maintainers)
Commits related to this issue
- Bug #201: Fixed infinite loop — committed to yiisoft/yii2-elasticsearch by np25071984 5 years ago
- Fixes #201: Fixed infinite loop — committed to yiisoft/yii2-elasticsearch by np25071984 5 years ago
- Bug yiisoft#201: Realy fixed infinite loop — committed to BetsuNo/yii2-elasticsearch by BetsuNo 5 years ago
- Revert "Bug #201: Fixed infinite loop" This reverts commit aa22ffd1013f381dcaa4481399d6a0fa76dfeabe. — committed to yiisoft/yii2-elasticsearch by samdark 5 years ago
- Revert "Fixes #201: Fixed infinite loop" This reverts commit decb81344d1168d31e370fc03450ee4a344dade5. — committed to yiisoft/yii2-elasticsearch by samdark 5 years ago
- Merge master into 2.1 (#229) * Update Query.php (#131) * PHPUnit compatibility, provide token for github auth * token update * yet another update * Fix #134 infinite query loop when the i... — committed to yiisoft/yii2-elasticsearch by samdark 5 years ago
- fix(prepareTotalCount): infinite loop related to #134 and #201. There is currently an infinite loop that happens when following method is called before getting any results from ElasticSearch: `... — committed to tunecino/yii2-elasticsearch by tunecino 5 years ago
Seems to be affecting yii2-sphinx as well: https://travis-ci.org/yiisoft/yii2-sphinx/jobs/495100578
I have a few ideas, but it will take some time.
{“size”:50,“query”:{“constant_score”:{“filter”:{“bool”:{“must”:[{“range”:{“reg_date”:{“gte”:“2019-01-16T00:00:00+03:00”}}},{“range”:{“reg_date”:{“lte”:“2019-01-16T23:59:59+03:00”}}}]}}}},“sort”:[{“reg_date”:“desc”}]}
In SearchModel on call getModels method:
$query = new yii\elasticsearch\Query(); $provider = new ActiveDataProvider([ ‘query’ => $query, ]); $provider->getModels();