How to fix «Call to undefined method processAdditionalValidation()» after upgrading Magento to 2.2.6?

Magento <= 2.2.6 uses a misspelled method \Magento\Shipping\Model\Carrier\AbstractCarrier::proccessAdditionalValidation():

https://github.com/magento/magento2/blob/2.2.5/app/code/Magento/Shipping/Model/Carrier/AbstractCarrierInterface.php#L86-L93

https://github.com/magento/magento2/blob/2.2.5/app/code/Magento/Shipping/Model/Carrier/AbstractCarrier.php#L326-L336

https://github.com/magento/magento2/blob/2.2.5/app/code/Magento/Shipping/Model/Shipping.php#L262-L262

Notice the misspelled word «proccess».

Magento 2.2.6 tries to fix it with the following commit:

https://github.com/magento/magento2/blob/2.2.6/app/code/Magento/Shipping/Model/Carrier/AbstractCarrier.php#L326-L349

https://github.com/magento/magento2/blob/2.2.6/app/code/Magento/Shipping/Model/Shipping.php#L262-L262

But the fix is low-quality because it did not update the \Magento\Shipping\Model\Carrier\AbstractCarrierInterface interface: the interface still uses the proccessAdditionalValidation misspelling:

https://github.com/magento/magento2/blob/2.2.6/app/code/Magento/Shipping/Model/Shipping.php#L262-L262

That is why a third-party shipping method will fail if it just implements the \Magento\Shipping\Model\Carrier\AbstractCarrierInterface interface: the \Magento\Shipping\Model\Shipping::collectCarrierRates() metod violates the interface and calls the processAdditionalValidation() method which is absent in the interface.

How to fix

You should implement the processAdditionalValidation() metod in your third-party shipping module. You can do it by analogy with the \Magento\Shipping\Model\Carrier\AbstractCarrier class:

https://github.com/magento/magento2/blob/2.2.6/app/code/Magento/Shipping/Model/Carrier/AbstractCarrier.php#L326-L349