FriendsOfFlarum / split

Split Flarum posts into a new discussion
MIT License
12 stars 14 forks source link

Exception when renaming a discussion #24

Closed matteocontrini closed 5 years ago

matteocontrini commented 5 years ago

When renaming a discussion, I'm seeing he following exception logged. The discussion is renamed, but the API request returns 500 and the user is shown an error.

[2019-06-21 11:30:29] production.ERROR: BadMethodCallException: Call to undefined method Illuminate\Database\Query\Builder::getContent() in /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/database/Query/Builder.php:2483
Stack trace:
#0 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/database/Eloquent/Builder.php(1286): Illuminate\Database\Query\Builder->__call('getContent', Array)
#1 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/database/Eloquent/Model.php(1477): Illuminate\Database\Eloquent\Builder->__call('getContent', Array)
#2 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Database/AbstractModel.php(204): Illuminate\Database\Eloquent\Model->__call('getContent', Array)
#3 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flagrow/split/src/Listeners/UpdateSplitTitleAfterDiscussionWasRenamed.php(63): Flarum\Database\AbstractModel->__call('getContent', Array)
#4 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/support/Collection.php(339): Flagrow\Split\Listeners\UpdateSplitTitleAfterDiscussionWasRenamed->Flagrow\Split\Listeners\{closure}(Object(Flagrow\Split\Posts\DiscussionSplitPost), 0)
#5 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flagrow/split/src/Listeners/UpdateSplitTitleAfterDiscussionWasRenamed.php(69): Illuminate\Support\Collection->each(Object(Closure))
#6 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/database/Concerns/BuildsQueries.php(39): Flagrow\Split\Listeners\UpdateSplitTitleAfterDiscussionWasRenamed->Flagrow\Split\Listeners\{closure}(Object(Illuminate\Database\Eloquent\Collection), 1)
#7 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flagrow/split/src/Listeners/UpdateSplitTitleAfterDiscussionWasRenamed.php(70): Illuminate\Database\Eloquent\Builder->chunk(10, Object(Closure))
#8 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/events/Dispatcher.php(350): Flagrow\Split\Listeners\UpdateSplitTitleAfterDiscussionWasRenamed->whenRenamed(Object(Flarum\Discussion\Event\Renamed))
#9 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/events/Dispatcher.php(200): Illuminate\Events\Dispatcher->Illuminate\Events\{closure}('Flarum\\Discussi...', Array)
#10 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Foundation/DispatchEventsTrait.php(35): Illuminate\Events\Dispatcher->dispatch('Flarum\\Discussi...')
#11 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Discussion/Command/EditDiscussionHandler.php(85): Flarum\Discussion\Command\EditDiscussionHandler->dispatchEventsFor(Object(Flarum\Discussion\Discussion), Object(Flarum\User\User))
#12 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/bus/Dispatcher.php(90): Flarum\Discussion\Command\EditDiscussionHandler->handle(Object(Flarum\Discussion\Command\EditDiscussion))
#13 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/pipeline/Pipeline.php(114): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(Flarum\Discussion\Command\EditDiscussion))
#14 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/pipeline/Pipeline.php(102): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Flarum\Discussion\Command\EditDiscussion))
#15 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/bus/Dispatcher.php(98): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#16 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/illuminate/bus/Dispatcher.php(76): Illuminate\Bus\Dispatcher->dispatchNow(Object(Flarum\Discussion\Command\EditDiscussion))
#17 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Api/Controller/UpdateDiscussionController.php(52): Illuminate\Bus\Dispatcher->dispatch(Object(Flarum\Discussion\Command\EditDiscussion))
#18 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Api/Controller/AbstractSerializeController.php(98): Flarum\Api\Controller\UpdateDiscussionController->data(Object(Zend\Diactoros\ServerRequest), Object(Tobscure\JsonApi\Document))

[... omitted]

It happens only with a particular discussion (or maybe others as well, but not all), and only after updating to beta8.

The exception seems to refer to something happening in this extension, although the discussion having the issue is not a discussion that was generated with a split. Some messages inside it were split to new discussions though.

Flarum info:

Flarum core 0.1.0-beta.8.2
PHP version: 7.2.17-0ubuntu0.18.04.1
Loaded extensions: Core, date, libxml, openssl, pcre, zlib, filter, hash, pcntl, Reflection, SPL, sodium, session, standard, mysqlnd, PDO, xml, calendar, ctype, curl, dom, mbstring, fileinfo, ftp, gd, gettext, iconv, json, exif, mysqli, pdo_mysql, Phar, posix, readline, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xmlreader, xmlwriter, xsl, Zend OPcache
+------------------------------+-----------------+------------------------------------------+
| Flarum Extensions            |                 |                                          |
+------------------------------+-----------------+------------------------------------------+
| ID                           | Version         | Commit                                   |
+------------------------------+-----------------+------------------------------------------+
| flarum-bbcode                | v0.1.0-beta.8   |                                          |
| flarum-emoji                 | v0.1.0-beta.8   |                                          |
| flarum-flags                 | v0.1.0-beta.8.1 |                                          |
| flarum-likes                 | v0.1.0-beta.8.1 |                                          |
| flarum-markdown              | v0.1.0-beta.8   |                                          |
| flarum-sticky                | v0.1.0-beta.8   |                                          |
| flarum-suspend               | v0.1.0-beta.8   |                                          |
| flarum-tags                  | v0.1.0-beta.8.2 |                                          |
| flarum-approval              | v0.1.0-beta.8   |                                          |
| flarum-mentions              | dev-fc8         | ad509a766e73f14b8bb04e13d0b33c86d315f47b |
| flarum-lock                  | v0.1.0-beta.8   |                                          |
| flarum-subscriptions         | dev-fc8         | 83964f639e54276167b58153e6d4e97da5b0a4f4 |
| flarum-lang-english          | v0.1.0-beta.8   |                                          |
| flarum-statistics            | v0.1.0-beta.8   |                                          |
| flarum-auth-github           | v0.1.0-beta.8   |                                          |
| flarum-auth-facebook         | v0.1.0-beta.8   |                                          |
| flarum-auth-twitter          | v0.1.0-beta.8   |                                          |
| flarum-pusher                | v0.1.0-beta.8.1 |                                          |
| flagrow-analytics            | 0.8.0           |                                          |
| fof-links                    | 0.2.0           |                                          |
| flagrow-split                | 0.3.2           |                                          |
| fof-user-bio                 | 0.1.2           |                                          |
| matteocontrini-imgur-upload  | v3.3.0          |                                          |
| clarkwinkelmann-emojionearea | 0.2.0           |                                          |
| flagrow-ads                  | 0.2.0-beta.1    |                                          |
| botfactoryit-italian         | dev-master      | dd79523a18c18c7583926c1f863804ed2bfc09e5 |
| reflar-stopforumspam         | 0.1.5           |                                          |
| flagrow-impersonate          | 0.2.0           |                                          |
| flagrow-sitemap              | 0.2.0           |                                          |
| fof-share-social             | 0.1.0           |                                          |
| v17development-seo           | 1.0.1           |                                          |
| fof-default-user-preferences | 0.1.0           |                                          |
+------------------------------+-----------------+------------------------------------------+
Base URL: https://forum.fibra.click
Installation path: /usr/local/openresty/nginx/www/fibraclick-forum
Debug mode: off
luceos commented 5 years ago

@matteocontrini could you possibly test whether this persists in dev-master?

matteocontrini commented 5 years ago

I can confirm it's fixed

franzliedke commented 5 years ago

Still happening, according to Sentry: https://sentry.io/organizations/flarum-foundation/issues/1102576242/?project=1498784&query=is%3Aunresolved.

Shouldn't this just be $post->content instead of $post->getContent()? (The accessor is $post->getContentAttribute(), but that is not meant to be called directly.)

luceos commented 5 years ago

I'll check today. The extension might not have updated.

franzliedke commented 5 years ago

Pretty sure that the next failure will be about the **set**Content() call. :wink:

luceos commented 5 years ago

🤐 Correct.