klaviyo / magento2-klaviyo

38 stars 51 forks source link

Undefined property: Klaviyo\Reclaim\Helper\Data::$observerAtcPayload #163

Closed stevekem closed 1 year ago

stevekem commented 2 years ago

Hello, We are getting the following error in logs multiple times daily. Also, not sure if it's related but no klaviyo.log is being generated even though I have "Enable Klaviyo Logger" set to YES in magento extension.

exception.log

[2022-02-04 17:12:13] main.CRITICAL: Notice: Undefined property: Klaviyo\Reclaim\Helper\Data::$observerAtcPayload in /mnt/data/home/XXXXXXX.cloudwaysapps.com/XXXXXXX/public_html/app/code/Klaviyo/Reclaim/Helper/Data.php on line 43 {"exception":"[object] (Exception(code: 0): Notice: Undefined property: Klaviyo\Reclaim\Helper\Data::$observerAtcPayload in /mnt/data/home/XXXXXXX.cloudwaysapps.com/XXXXXXX/public_html/app/code/Klaviyo/Reclaim/Helper/Data.php on line 43 at /mnt/data/home/XXXXXXX.cloudwaysapps.com/XXXXXXX/public_html/vendor/magento/framework/App/ErrorHandler.php:61)"} []

system.log

[2022-02-04 17:12:13] main.CRITICAL: Exception message: Notice: Undefined property: Klaviyo\Reclaim\Helper\Data::$observerAtcPayload in /mnt/data/home/XXXXXXX.cloudwaysapps.com/XXXXXXX/public_html/app/code/Klaviyo/Reclaim/Helper/Data.php on line 43 Trace:

#1 Klaviyo\Reclaim\Helper\Data->getObserverAtcPayload() called at [app/code/Klaviyo/Reclaim/Observer/SalesQuoteSaveAfter.php:68]

2 Klaviyo\Reclaim\Observer\SalesQuoteSaveAfter->execute() called at [vendor/magento/framework/Event/Invoker/InvokerDefault.php:88]

3 Magento\Framework\Event\Invoker\InvokerDefault->_callObserverMethod() called at [vendor/magento/framework/Event/Invoker/InvokerDefault.php:74]

4 Magento\Framework\Event\Invoker\InvokerDefault->dispatch() called at [vendor/magento/framework/Event/Manager.php:66]

5 Magento\Framework\Event\Manager->dispatch() called at [generated/code/Magento/Framework/Event/Manager/Proxy.php:95]

6 Magento\Framework\Event\Manager\Proxy->dispatch() called at [vendor/magento/framework/Model/AbstractModel.php:829]

7 Magento\Framework\Model\AbstractModel->afterSave() called at [generated/code/Magento/Quote/Model/Quote/Interceptor.php:1265]

8 Magento\Quote\Model\Quote\Interceptor->afterSave() called at [vendor/magento/framework/Model/ResourceModel/Db/VersionControl/AbstractDb.php:56]

9 Magento\Framework\Model\ResourceModel\Db\VersionControl\AbstractDb->processAfterSaves() called at [vendor/magento/framework/Model/ResourceModel/Db/AbstractDb.php:424]

10 Magento\Framework\Model\ResourceModel\Db\AbstractDb->save() called at [vendor/magento/module-quote/Model/ResourceModel/Quote.php:314]

11 Magento\Quote\Model\ResourceModel\Quote->save() called at [vendor/magento/module-quote/Model/QuoteRepository/SaveHandler.php:121]

12 Magento\Quote\Model\QuoteRepository\SaveHandler->save() called at [vendor/magento/framework/Interception/Interceptor.php:58]

13 Magento\Quote\Model\QuoteRepository\SaveHandler\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]

14 Magento\Quote\Model\QuoteRepository\SaveHandler\Interceptor->Magento\Framework\Interception{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]

15 Magento\Quote\Model\QuoteRepository\SaveHandler\Interceptor->___callPlugins() called at [generated/code/Magento/Quote/Model/QuoteRepository/SaveHandler/Interceptor.php:23]

16 Magento\Quote\Model\QuoteRepository\SaveHandler\Interceptor->save() called at [vendor/magento/module-quote/Model/QuoteRepository.php:202]

17 Magento\Quote\Model\QuoteRepository->save() called at [vendor/magento/framework/Interception/Interceptor.php:58]

18 Magento\Quote\Model\QuoteRepository\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]

19 Magento\Quote\Model\QuoteRepository\Interceptor->Magento\Framework\Interception{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]

20 Magento\Quote\Model\QuoteRepository\Interceptor->___callPlugins() called at [generated/code/Magento/Quote/Model/QuoteRepository/Interceptor.php:59]

21 Magento\Quote\Model\QuoteRepository\Interceptor->save() called at [vendor/magento/module-checkout/Model/Cart.php:593]

22 Magento\Checkout\Model\Cart->save() called at [vendor/magento/framework/Interception/Interceptor.php:58]

23 Magento\Checkout\Model\Cart\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]

24 Magento\Checkout\Model\Cart\Interceptor->Magento\Framework\Interception{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]

25 Magento\Checkout\Model\Cart\Interceptor->___callPlugins() called at [generated/code/Magento/Checkout/Model/Cart/Interceptor.php:131]

26 Magento\Checkout\Model\Cart\Interceptor->save() called at [vendor/magento/module-checkout/Controller/Cart/Add.php:129]

27 Magento\Checkout\Controller\Cart\Add->execute() called at [vendor/magento/framework/Interception/Interceptor.php:58]

28 Magento\Checkout\Controller\Cart\Add\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]

29 Magento\Checkout\Controller\Cart\Add\Interceptor->Magento\Framework\Interception{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]

30 Magento\Checkout\Controller\Cart\Add\Interceptor->___callPlugins() called at [generated/code/Magento/Checkout/Controller/Cart/Add/Interceptor.php:23]

31 Magento\Checkout\Controller\Cart\Add\Interceptor->execute() called at [vendor/magento/framework/App/Action/Action.php:111]

32 Magento\Framework\App\Action\Action->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58]

33 Magento\Checkout\Controller\Cart\Add\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]

34 Magento\Checkout\Controller\Cart\Add\Interceptor->Magento\Framework\Interception{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]

35 Magento\Checkout\Controller\Cart\Add\Interceptor->___callPlugins() called at [generated/code/Magento/Checkout/Controller/Cart/Add/Interceptor.php:32]

36 Magento\Checkout\Controller\Cart\Add\Interceptor->dispatch() called at [vendor/magento/framework/App/FrontController.php:245]

37 Magento\Framework\App\FrontController->getActionResponse() called at [vendor/magento/framework/App/FrontController.php:212]

38 Magento\Framework\App\FrontController->processRequest() called at [vendor/magento/framework/App/FrontController.php:147]

39 Magento\Framework\App\FrontController->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58]

40 Magento\Framework\App\FrontController\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]

41 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception{closure}() called at [vendor/magento/module-store/App/FrontController/Plugin/RequestPreprocessor.php:99]

42 Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135]

43 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception{closure}() called at [vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php:71]

44 Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135]

45 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]

46 Magento\Framework\App\FrontController\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:23]

47 Magento\Framework\App\FrontController\Interceptor->dispatch() called at [vendor/magento/framework/App/Http.php:116]

48 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:23]

49 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:264]

50 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:29]

[] []

klaviyojad commented 2 years ago

@stevekem I am the support engineer also helping on the issue. I had access to your server and ran bin/magento cache:clean and bin/magento cache:refresh hopefully that solves the issue. Do you know what triggers the messages in the first place?

stevekem commented 2 years ago

@klaviyojad Hello, unfortunately that does not resolve it. Every time a new session is created and the first item is attempted to be added to cart, it actually does not add the item, it displays "Your shopping cart is empty" message. The error is logged at this time.

If I attempt to re-add the same exact item to cart again, it will add successfully and the qty will show the total for both attempts.

stevekem commented 2 years ago

The exact steps to reproduce error:

So far this works good and no error logged....

The error occurs when the check box for "Subscribe for SMS updates**" is checked on the order prior.

stevekem commented 2 years ago

Hello, is there any update on this? Thanks!

klaviyojad commented 2 years ago

@stevekem sorry for the delay.

I have SSH-ed into your system and edited file:

app/code/Klaviyo/Reclaim/Helper/Data.php

edited the constructor as such:

    public function __construct(

        Context $context,

        Logger $klaviyoLogger,

        ScopeSetting $klaviyoScopeSetting

    ) {

        parent::__construct($context);

        $this->_klaviyoLogger = $klaviyoLogger;

        $this->_klaviyoScopeSetting = $klaviyoScopeSetting;

        $this->observerAtcPayload = null;

   }

Hopefully that should prevent the error, could you test scenarios again that caused the initial error?

stevekem commented 2 years ago

@klaviyojad Thanks for the update! Unfortunately still getting that error when I tried right now.

klaviyojad commented 2 years ago

@stevekem could you please try again? I changed something from calling PHP unset to just setting the property to null:

    public function unsetObserverAtcPayload(){
        $this->observerAtcPayload = null;
    }
stevekem commented 2 years ago

@stevekem could you please try again? I changed something from calling PHP unset to just setting the property to null:

@klaviyojad That appeared to fix the error, it's no longer being logged in exception or system logs and product is adding to cart first try. Thank you!

Will this fix be in new release?

klaviyojad commented 2 years ago

@stevekem yes it will be. The engineers working on the next release are monitoring this thread.

cykolln commented 1 year ago

This has been fixed - closing this out