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?

  1. php composer.phar create-project --prefer-dist yiisoft/yii2-app-basic basic
  2. Set elastic componet auth data …
  3. 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"
        }
    ]
}
  1. \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');
    }
  1. php yii serve
  2. 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

Most upvoted comments

Seems to be affecting yii2-sphinx as well: https://travis-ci.org/yiisoft/yii2-sphinx/jobs/495100578

@GHopperMSK any other idea about fixing it?

I have a few ideas, but it will take some time.

What’s in the query?

{“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();