0

I updated my Magento site to CE 2.4.6 (from CE 2.4.5-p1) running on Nexcess. I've shipped to this address before so I know it's valid and the shipping lookup works. It fails when I click "Next" to go the payments screen and the exception log is as follows:

[2023-03-31T15:30:20.177535+00:00] main.CRITICAL: Magento\Framework\Exception\InputException: The address failed to save. Verify the address and try again. in /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-quote/Model/ShippingAddressManagement.php:122
Stack trace:
#0 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Quote\Model\ShippingAddressManagement->assign(389364, Object(Magento\Quote\Model\Quote\Address\Interceptor))
#1 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Quote\Model\ShippingAddressManagement\Interceptor->___callParent('assign', Array)
#2 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Quote\Model\ShippingAddressManagement\Interceptor->Magento\Framework\Interception\{closure}('389364', Object(Magento\Quote\Model\Quote\Address\Interceptor))
#3 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/generated/code/Magento/Quote/Model/ShippingAddressManagement/Interceptor.php(23): Magento\Quote\Model\ShippingAddressManagement\Interceptor->___callPlugins('assign', Array, Array)
#4 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-quote/Model/Quote/ShippingAssignment/ShippingProcessor.php(66): Magento\Quote\Model\ShippingAddressManagement\Interceptor->assign('389364', Object(Magento\Quote\Model\Quote\Address\Interceptor))
#5 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-quote/Model/Quote/ShippingAssignment/ShippingAssignmentProcessor.php(106): Magento\Quote\Model\Quote\ShippingAssignment\ShippingProcessor->save(Object(Magento\Quote\Model\Shipping), Object(Magento\Quote\Model\Quote\Interceptor))
#6 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-quote/Model/Quote/ShippingAssignment/ShippingAssignmentPersister.php(34): Magento\Quote\Model\Quote\ShippingAssignment\ShippingAssignmentProcessor->save(Object(Magento\Quote\Model\Quote\Interceptor), Object(Magento\Quote\Model\ShippingAssignment))
#7 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-quote/Model/QuoteRepository/SaveHandler.php(145): Magento\Quote\Model\Quote\ShippingAssignment\ShippingAssignmentPersister->save(Object(Magento\Quote\Model\Quote\Interceptor), Object(Magento\Quote\Model\ShippingAssignment))
#8 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-quote/Model/QuoteRepository/SaveHandler.php(120): Magento\Quote\Model\QuoteRepository\SaveHandler->processShippingAssignment(Object(Magento\Quote\Model\Quote\Interceptor))
#9 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/generated/code/Magento/Quote/Model/QuoteRepository/SaveHandler/Interceptor.php(23): Magento\Quote\Model\QuoteRepository\SaveHandler->save(Object(Magento\Quote\Model\Quote\Interceptor))
#10 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-quote/Model/QuoteRepository.php(202): Magento\Quote\Model\QuoteRepository\SaveHandler\Interceptor->save(Object(Magento\Quote\Model\Quote\Interceptor))
#11 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Quote\Model\QuoteRepository->save(Object(Magento\Quote\Model\Quote\Interceptor))
#12 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Quote\Model\QuoteRepository\Interceptor->___callParent('save', Array)
#13 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Quote\Model\QuoteRepository\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Quote\Model\Quote\Interceptor))
#14 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/generated/code/Magento/Quote/Model/QuoteRepository/Interceptor.php(59): Magento\Quote\Model\QuoteRepository\Interceptor->___callPlugins('save', Array, Array)
#15 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-checkout/Model/ShippingInformationManagement.php(191): Magento\Quote\Model\QuoteRepository\Interceptor->save(Object(Magento\Quote\Model\Quote\Interceptor))
#16 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Checkout\Model\ShippingInformationManagement->saveAddressInformation(389364, Object(Magento\Checkout\Model\ShippingInformation))
#17 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Checkout\Model\ShippingInformationManagement\Interceptor->___callParent('saveAddressInfo...', Array)
#18 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/app/code/WeltPixel/GA4/Plugin/ServerSide/ShippingInformation.php(57): Magento\Checkout\Model\ShippingInformationManagement\Interceptor->Magento\Framework\Interception\{closure}(389364, Object(Magento\Checkout\Model\ShippingInformation))
#19 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(135): WeltPixel\GA4\Plugin\ServerSide\ShippingInformation->aroundSaveAddressInformation(Object(Magento\Checkout\Model\ShippingInformationManagement\Interceptor), Object(Closure), 389364, Object(Magento\Checkout\Model\ShippingInformation))
#20 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/app/code/WeltPixel/GoogleTagManager/Plugin/ShippingInformation.php(53): Magento\Checkout\Model\ShippingInformationManagement\Interceptor->Magento\Framework\Interception\{closure}(389364, Object(Magento\Checkout\Model\ShippingInformation))
#21 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(135): WeltPixel\GoogleTagManager\Plugin\ShippingInformation->aroundSaveAddressInformation(Object(Magento\Checkout\Model\ShippingInformationManagement\Interceptor), Object(Closure), 389364, Object(Magento\Checkout\Model\ShippingInformation))
#22 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/app/code/WeltPixel/GA4/Plugin/ShippingInformation.php(61): Magento\Checkout\Model\ShippingInformationManagement\Interceptor->Magento\Framework\Interception\{closure}(389364, Object(Magento\Checkout\Model\ShippingInformation))
#23 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(135): WeltPixel\GA4\Plugin\ShippingInformation->aroundSaveAddressInformation(Object(Magento\Checkout\Model\ShippingInformationManagement\Interceptor), Object(Closure), 389364, Object(Magento\Checkout\Model\ShippingInformation))
#24 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Checkout\Model\ShippingInformationManagement\Interceptor->Magento\Framework\Interception\{closure}(389364, Object(Magento\Checkout\Model\ShippingInformation))
#25 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/generated/code/Magento/Checkout/Model/ShippingInformationManagement/Interceptor.php(23): Magento\Checkout\Model\ShippingInformationManagement\Interceptor->___callPlugins('saveAddressInfo...', Array, NULL)
#26 [internal function]: Magento\Checkout\Model\ShippingInformationManagement\Interceptor->saveAddressInformation(389364, Object(Magento\Checkout\Model\ShippingInformation))
#27 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-webapi/Controller/Rest/SynchronousRequestProcessor.php(95): call_user_func_array(Array, Array)
#28 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-webapi/Controller/Rest.php(202): Magento\Webapi\Controller\Rest\SynchronousRequestProcessor->process(Object(Magento\Framework\Webapi\Rest\Request\Proxy))
#29 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Webapi\Controller\Rest->dispatch(Object(Magento\Framework\App\Request\Http))
#30 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Webapi\Controller\Rest\Interceptor->___callParent('dispatch', Array)
#31 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Webapi\Controller\Rest\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#32 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/generated/code/Magento/Webapi/Controller/Rest/Interceptor.php(23): Magento\Webapi\Controller\Rest\Interceptor->___callPlugins('dispatch', Array, Array)
#33 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/App/Http.php(116): Magento\Webapi\Controller\Rest\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#34 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\Framework\App\Http->launch()
#35 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/framework/App/Bootstrap.php(264): Magento\Framework\App\Http\Interceptor->launch()
#36 /chroot/home/a38cb886/5dae601e98.nxcli.io/html/pub/index.php(30): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#37 {main} {"exception":"[object] (Magento\\Framework\\Exception\\InputException(code: 0): The address failed to save. Verify the address and try again. at /chroot/home/a38cb886/5dae601e98.nxcli.io/html/vendor/magento/module-quote/Model/ShippingAddressManagement.php:122)"} []

Any help or thoughts? I can't process orders so I'm stuck.

Thanks.

===
Update. Some additional answers:

Here's the content of the aroundSaveAddressInformation method in ShippingInformation class (WeltPixel\GA4\Plugin\ServerSide\ShippingInformation):

     public function aroundSaveAddressInformation(
        \Magento\Checkout\Model\ShippingInformationManagement $subject,
        \Closure $proceed,
        $cartId,
        $addressInformation
    ) {

        $result = $proceed($cartId, $addressInformation);

        if (!$this->ga4Helper->isServerSideTrakingEnabled() || !$this->ga4Helper->shouldEventBeTracked(\WeltPixel\GA4\Model\Config\Source\ServerSide\TrackingEvents::EVENT_ADD_SHIPPING_INFO)) {
            return $result;
        }

        /** @var \Magento\Quote\Model\Quote $quote */
        $quote = $this->quoteRepository->getActive($cartId);
        $shippingDescription = $quote->getShippingAddress()->getShippingDescription();

        $addShippingInfoEvent = $this->addShippingInfoBuilder->getAddShippingInfoEvent($quote, $shippingDescription);
        $this->ga4ServerSideApi->pushAddShippingInfoEvent($addShippingInfoEvent);

        return $result;
    }

I also get a lot of deprecation notices on composer update.

PHP Deprecated:  Return type of Symfony\Component\Console\Helper\HelperSet::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/console/Helper/HelperSet.php on line 112

Deprecated: Return type of Symfony\Component\Console\Helper\HelperSet::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/console/Helper/HelperSet.php on line 112
Deprecation Notice: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in phar:///usr/bin/composer1/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php:48
Deprecation Notice: Return type of Composer\Repository\ArrayRepository::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/Repository/ArrayRepository.php:206
Deprecation Notice: Return type of Composer\Repository\ArrayRepository::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/Repository/ArrayRepository.php:206
Deprecation Notice: Return type of Composer\Repository\ArrayRepository::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/Repository/ArrayRepository.php:206
Deprecation Notice: Return type of Composer\DependencyResolver\Pool::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/Pool.php:175
Deprecation Notice: Return type of Symfony\Component\Finder\Finder::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Finder.php:675
Deprecation Notice: Return type of Symfony\Component\Finder\Finder::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Finder.php:732
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\FilterIterator::rewind() should either be compatible with FilterIterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/FilterIterator.php:30
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\FileTypeFilterIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php:42
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\RecursiveDirectoryIterator::getChildren() should either be compatible with RecursiveDirectoryIterator::getChildren(): RecursiveDirectoryIterator, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php:85
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\RecursiveDirectoryIterator::rewind() should either be compatible with FilesystemIterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php:113
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\RecursiveDirectoryIterator::current() should either be compatible with FilesystemIterator::current(): SplFileInfo|FilesystemIterator|string, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php:65
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\ExcludeDirectoryFilterIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php:55
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\ExcludeDirectoryFilterIterator::hasChildren() should either be compatible with RecursiveIterator::hasChildren(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php:71
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\ExcludeDirectoryFilterIterator::getChildren() should either be compatible with RecursiveIterator::getChildren(): ?RecursiveIterator, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php:76
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\FilterIterator::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/FilterIterator.php:30
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\FilenameFilterIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/FilenameFilterIterator.php:28
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\PathFilterIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/PathFilterIterator.php:27
Deprecation Notice: Return type of Composer\Repository\ArrayRepository::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/Repository/ArrayRepository.php:206
Deprecation Notice: Return type of Composer\Repository\CompositeRepository::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/Repository/CompositeRepository.php:139

Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies (including require-dev)
Deprecation Notice: Return type of Composer\DependencyResolver\RuleSet::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/RuleSet.php:114
Deprecation Notice: Return type of Composer\DependencyResolver\RuleSet::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/RuleSet.php:99
Deprecation Notice: Return type of Composer\DependencyResolver\Decisions::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/Decisions.php:155
Deprecation Notice: Return type of Composer\DependencyResolver\Decisions::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/Decisions.php:165
Deprecation Notice: Return type of Composer\DependencyResolver\Decisions::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/Decisions.php:160
Deprecation Notice: Return type of Composer\DependencyResolver\Decisions::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/Decisions.php:170
Deprecation Notice: Return type of Composer\DependencyResolver\Decisions::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/Decisions.php:150
Deprecation Notice: Return type of Composer\DependencyResolver\Decisions::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/Decisions.php:145
Deprecation Notice: Return type of Composer\DependencyResolver\RuleSetIterator::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/RuleSetIterator.php:36
Deprecation Notice: Return type of Composer\DependencyResolver\RuleSetIterator::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/RuleSetIterator.php:46
Deprecation Notice: Return type of Composer\DependencyResolver\RuleSetIterator::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/RuleSetIterator.php:41
Deprecation Notice: Return type of Composer\DependencyResolver\RuleSetIterator::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/RuleSetIterator.php:89
Deprecation Notice: Return type of Composer\DependencyResolver\RuleSetIterator::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/src/Composer/DependencyResolver/RuleSetIterator.php:70
Package operations: 0 installs, 1 update, 0 removals
Deprecation Notice: Return type of Symfony\Component\Finder\Iterator\DepthRangeFilterIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///usr/bin/composer1/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php:41

I should mention that I Nexcess did an upgrade for me in size and perhaps when things were copied, the wrong files were copied - my previous site doesn't have these errors, so I'm also going to go back to them. As I think through the means to determine and debug this, that's the difference....

Also,I'm surprised that a composer update doesn't solve this issue - I would have expected it to remove old code and implement the new...

Thank you!

Hi,

Apologies - thought I put things in the right place (new to StackExchange...)

Yes, Production environment....

Here's the contents of composer.json:

{
    "name": "magento/project-community-edition",
    "description": "eCommerce Platform for Growth (Community Edition)",
    "type": "project",
    "license": [
        "OSL-3.0",
        "AFL-3.0"
    ],
    "config": {
        "allow-plugins": {
            "dealerdirect/phpcodesniffer-composer-installer": true,
            "laminas/laminas-dependency-plugin": true,
            "magento/*": true
        },
        "preferred-install": "dist",
        "sort-packages": true
    },
    "version": "2.4.5-p1",
    "require": {
        "accuratetax/tax": "^1.2",
        "ambab/module-storeorderprefix": "^1.0",
        "fooman/connect-sub-m2": "^8.0",
        "fooman/printorderpdf-m2": "^3.3",
        "fooman/sameorderinvoicenumber-m2": "^3.0",
        "hexamarvel/module-attachments": "^1.0",
        "magento/composer-dependency-version-audit-plugin": "~0.1",
        "magento/composer-root-update-plugin": "~2.0",
        "magento/product-community-edition": "2.4.6",
        "mageplaza/magento-2-blog-extension": "^4.1",
        "magevision/module-admin-category-product-link": "^2.4",
        "magevision/module-admin-category-product-thumbnail": "^2.4",
        "mageworx/module-seosuiteultimate": "^2.35",
        "mirasvit/module-product-action": "*",
        "sparsh/magento-2-order-comments-extension": "^1.3",
        "square/module-squareup-omni": "^1.14",
        "stripe/stripe-payments": "^3.3",
        "trustpilot/module-reviews": "^2.6",
        "yotpo/magento2-module-yotpo-loyalty": "^1.3",
        "yotpo/module-yotpo": "^4.0"
    },
    "autoload": {
        "exclude-from-classmap": [
            "**/dev/**",
            "**/update/**",
            "**/Test/**"
        ],
        "files": [
            "app/etc/NonComposerComponentRegistration.php"
        ],
        "psr-0": {
            "": [
                "app/code/",
                "generated/code/"
            ]
        },
        "psr-4": {
            "Magento\\": "app/code/Magento/",
            "Magento\\Framework\\": "lib/internal/Magento/Framework/",
            "Magento\\Setup\\": "setup/src/Magento/Setup/"
        }
    },
    "require-dev": {
        "allure-framework/allure-phpunit": "^2",
        "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
        "dg/bypass-finals": "^1.4",
        "friendsofphp/php-cs-fixer": "^3.8",
        "lusitanian/oauth": "^0.8",
        "magento/magento-coding-standard": "*",
        "magento/magento2-functional-testing-framework": "^4.2.1",
        "pdepend/pdepend": "^2.10",
        "phpmd/phpmd": "^2.12.0",
        "phpstan/phpstan": "^1.9",
        "phpunit/phpunit": "^9.5",
        "sebastian/phpcpd": "^6.0",
        "symfony/finder": "^5.4"
    },
    "conflict": {
        "gene/bluefoot": "*"
    },
    "autoload-dev": {
        "psr-4": {
            "Magento\\PhpStan\\": "dev/tests/static/framework/Magento/PhpStan/",
            "Magento\\Sniffs\\": "dev/tests/static/framework/Magento/Sniffs/",
            "Magento\\TestFramework\\Inspection\\": "dev/tests/static/framework/Magento/TestFramework/Inspection/",
            "Magento\\TestFramework\\Utility\\": "dev/tests/static/framework/Magento/TestFramework/Utility/",
            "Magento\\Tools\\": "dev/tools/Magento/Tools/",
            "Magento\\Tools\\Sanity\\": "dev/build/publication/sanity/Magento/Tools/Sanity/"
        }
    },
    "minimum-stability": "stable",
    "prefer-stable": true,
    "repositories": {
        "mirasvit-mpa2": {
            "type": "composer",
            "url": "https://packages.mirasvit.com/"
        },
        "fooman": {
            "type": "composer",
            "url": "https://customer-repos.fooman.co.nz/"
        },
        "mageworx_packages": {
            "type": "composer",
            "url": "https://packages.mageworx.com/"
        },
        "mageworx": {
            "type": "artifact",
            "url": "/home/a38cb886/mageworx/extensions"
        },
        "0": {
            "type": "composer",
            "url": "https://repo.magento.com/"
        }
    },
    "extra": {
        "magento-force": "override"
    }
}

Thanks.

4/2 - 10amPST - Yet another update. It turns out that Nexcess had 2 composer commands, and unfortunately, it never occurred to me to check. The output and composer deprecation errors above are all due to the composer command using composer 1.x. I switched to composer 2.x and all but one of the deprecation errors are gone, of course.

So this leaves me back to the original issue of address validation errors, including a webapi error. Because the specific code goes by so fast, I'm not even sure where to look for the error log to provide a hint of exactly where the fault is, however I still have Tu's code in place, which points to the info reported above.

Bottom line, there's still a validation error that prevents moving from the address screen to the payment screen and orders cannot be completed.

Thanks.


Hi All,

I'm marking this answered. I've traced the issue (with lots of help!) to a module (AccurateTax) which is now upgraded.

And since I'm mentioning AccurateTax, I also need to say that once the issue was raised to them, they turned the fix around within 1 hour! Awesome service!

So this is fixed. I didn't delete the question, so that anyone else coming across this will see the issue and the solution.

Thanks everyone who looked, answered and helped.

1
  • WeltPixel GA4 is potentially related to this issue, could you add the content of the aroundSaveAddressInformation method in ShippingInformation class?WeltPixel\GA4\Plugin\ServerSide\ShippingInformation
    – Tu Van
    Mar 31, 2023 at 15:41

1 Answer 1

0

In this post, I'll help you debug with the Logging feature.
Try the following steps:

  1. I assume you are trying to check this issue on the staging or production site, so get your current IP address to restrict access to the logging feature. You can get your IP address quickly by searching "what is my IP".
    If you check this issue in the local environment, you can ignore this step.
  2. Edit vendor/magento/module-quote/Model/ShippingAddressManagement.php, add the following code before line 119
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$remoteAddress = $objectManager->get('Magento\Framework\HTTP\PhpEnvironment\RemoteAddress');
$ipAddress = $remote->getRemoteAddress();
if ($ipAddress = '1.2.3.4') {// replace 1.2.3.4 with your IP
    $logger = $objectManager->create('Psr\Log\LoggerInterface');
    $logger->info('Debugging the address failed to save issue');
    $logger->info('$address->getData()', array('$address->getData()', $address->getData()));// Log array
}
  1. Go to the checkout page and click "Next" to go to the payments screen.
  2. Check the address information has been logged in var/log/system.log
10
  • At this point, I added the code (line 118 had the try function... ) But now I'm not even getting a shipping quote, which is flat rate and shouldn't be a problem. I'm trying this with a new sample order which has a new address but I know is valid. It's giving me a webapi error, but the code goes by too quickly to capture. I'm not sure which log to review this in....
    – Mike L-SJC
    Mar 31, 2023 at 21:07
  • @MikeL-SJC you can open the browser developer tool, switch to the Network tab, then go to checkout page and click Next. When you hit an error, the request in the Network tab will be change the color to red, click this request and switch to tab Response, you can check the error. Sometime (rarely happen), Magento unable to show shipping method, you can continue checking with an incognitor window, if the issue still persist, you need to wait a few minutes and try again.
    – Tu Van
    Apr 1, 2023 at 1:24
  • I thought you get an error (not the original error) because your cart (quote) is expired, so it threws error indicate you dont have any quote yet!
    – Tu Van
    Apr 1, 2023 at 1:26
  • @MikeL-SJC just run my debug code and found it has a typo, please change $remote to $remoteAddress
    – Tu Van
    Apr 1, 2023 at 1:40
  • Thanks - I'll rerun this tomorrow morning, and see how I do.
    – Mike L-SJC
    Apr 1, 2023 at 6:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.