Call to a member function canRead() on null

  • Affected Version
    WoltLab Suite 5.4

    Leider habe ich keine genaueren Informationen dazu, außer, dass der Fehler sporadisch auftritt:


    Requested URL
    GET /attachment/196372-bda72-jpg/
    Referrer
    *snip*
    Error Message
    Call to a member function canRead() on null
    Type
    Error
    File (Line)
    /httpdocs/lib/system/attachment/ConversationMessageAttachmentObjectType.class.php (58)
    Stacktrace
    1. /httpdocs/lib/data/attachment/Attachment.class.php (125): wcf\system\attachment\ConversationMessageAttachmentObjectType->canDownload(…)
    2. /httpdocs/lib/data/attachment/Attachment.class.php (81): wcf\data\attachment\Attachment->getPermission(…)
    3. /httpdocs/lib/page/AttachmentPage.class.php (128): wcf\data\attachment\Attachment->canDownload(…)
    4. /httpdocs/lib/page/AbstractPage.class.php (336): wcf\page\AttachmentPage->checkPermissions(…)
    5. /httpdocs/lib/page/AttachmentPage.class.php (186): wcf\page\AbstractPage->show(…)
    6. /httpdocs/lib/page/AbstractPage.class.php (122): wcf\page\AttachmentPage->show(…)
    7. /httpdocs/lib/system/request/Request.class.php (89): wcf\page\AbstractPage->__run(…)
    8. /httpdocs/lib/system/request/RequestHandler.class.php (119): wcf\system\request\Request->execute(…)
    9. /httpdocs/index.php (11): wcf\system\request\RequestHandler->handle(…)


    Der Dateianhang existiert jedenfalls in der Datenbank und auch physikalisch.


    Aus dem Stegreif würde ich behaupten, da hat jemand einen Anhang aus einer Konversation irgendwo außerhalb der Konversation posten wollen?

    Schleichwerbung: https://www.softcreatr.com


    First do it, then do it right, then do it better.

    Edited 2 times, last by Tim Düsterhus: Referrer im log ergänzt, damit es geparsed werden kann. ().

    • Official Post

    Hallo,


    unabhängig vom Problem (was ich noch nicht geprüft habe): Könntest du bitte das Format der geloggten Exception beibehalten, damit diese in das „lesbare“ Format geparsed werden kann? Den Referer kannst du beispielsweise einfach durch *snip* ersetzen.

    • Official Post

    Hallo,


    der Fehler betrifft verwaiste Dateianhänge, die aus irgendeinem Grund bei der Löschung der Nachricht oder der Konversation nicht ebenfalls gelöscht wurden.


    Siehe:

    Prevent method calls on `null` in ConversationMessageAttachmentObjectType::canDownload() by TimWolla · Pull Request #157 · WoltLab/com.woltlab.wcf.conversation
    This may happen for attachments where the corresponding conversation / conversation message no longer exists. Shall we add an update script that cleans up…
    github.com