Magento2.4.3 Session Parameter Issue – Fix for Backend Observer

event-observermagento2magento2.4.3session

We have a backend observer that sets a session variable after a shipment is created (sales_order_shipment_save_commit_after).

It's been working for over 2 years, but after the latest upgrade to 2.4.3-p1, the session parameter is not being updated. The issue is also present if we use the raw $_SESSION variable instead of Magento's preferred mechanism. It's as if the session has already been closed by the time the observer is executed.

For completeness, here's the code. It's nothing complicated.

lang-php

<?php

  namespace [CompanyName]\[ModuleName]\Observer;
  use Magento\Framework\Event\ObserverInterface;

  class SaveShipmentAfter implements ObserverInterface {

    private $_backendSession;

    public function __construct(
      \Magento\Backend\Model\Session $backendSession
    ) {
      $this->_backendSession = $backendSession;
    }

    public function execute(\Magento\Framework\Event\Observer $observer) {
      $shipmentId = $observer->getShipment()->getId();
      $this->_backendSession->setData('shipment_created_id', $shipmentId);
    }
  }

My question is – should sessions not be used this way in observers (and Magento is finally enforcing that)? is it a bug in the newest release, or is there a new way to utilise sessions?

Best Answer

After wasting a combined 10 hours on this issue, it turns a "max session size" setting has been added deep down in the store configuration:

Stores > Configuration > Advanced > System > Security > Max Session Size in Admin

This isn't mentioned as a potential breaking change in the release notes.