Ваш наблюдатель ожидает отправки груза, а затем сохраняет груз, в результате чего он получает другое событие (yadda yadda ad nauseum). Вам понадобится способ избежать петли или нет необходимости сохранять груз.
Можете ли вы переместить ваше событие на sales_order_shipment_save_before
и затем позволить нормальному сохранению отправки вступить в силу, или вам нужно, чтобы доставка уже была сохранена для выполнения вашей части логики?
Если это так, измените следующую строку на вашем наблюдателе, чтобы Magento использовал ее в качестве одиночного:
<type>singleton</type> // changed from model
Затем создайте переменную в своем классе, чтобы отслеживать, повторялись ли вы еще. Если так, то просто вернитесь.
В качестве альтернативы, вы можете проверить, есть ли какие-либо номера отслеживания уже в отгрузке, и сохранить только, если их нет (и вы добавляете один). Это также убьет рекурсию.
Дайте мне знать, если один из тех работает для вас.
Спасибо,
Джо