Performance issue on checkout page.
Opened this issue · 3 comments
Hi,
I'm using the last version module (4.1.1)
Instead of using order collection, repository is use with searchcriteria.
File : /vendor/checkoutcom/magento2/Model/Service/OrderHandlerService.php
/** @var OrderInterface $order */
$order = $this->orderRepository->getList($search)->setPageSize(1)->getLastItem();
Magento getlist load all customer orders before limiting the query with last item.
Patch to solve the problem (if you want to keep repository)
--- Model/Service/OrderHandlerService.php
+++ Model/Service/OrderHandlerService.php
@@ -289,10 +289,16 @@
// Create the search instance
$search = $this->searchBuilder->create();
+ /** @var SortOrder $sortOrder */
+ $sortOrder = \Magento\Framework\App\ObjectManager::getInstance()->create(\Magento\Framework\Api\SortOrderBuilder::class)
+ ->setField('created_at')
+ ->setDirection(\Magento\Framework\Api\SortOrder::SORT_ASC)
+ ->create();
+ $search->setPageSize(1)->setSortOrders([$sortOrder]);
// Get the resulting order
/** @var OrderInterface $order */
- $order = $this->orderRepository->getList($search)->setPageSize(1)->getLastItem();
+ $order = $this->orderRepository->getList($search)->getLastItem();
if ($order->getId()) {
$this->logger->additional($this->getOrderDetails($order), 'order');
Hello @kpitn ,
Thanks a lot for the feedback, very efficient as always! ;)
This is taken into account and we will work on it in the near future.
We will keep you posted of our progress regarding this improvement.
Regards,
I flagged the same in #503 but sadly, this was missed.
I'm undecided if I should continue to raise issues with this project.
Off the top of my head, there are
- Numerous issues with error logging that cause 500 errors.
- A bug on the webhook adding an order comment for a new response type that checkout.com added.
- Code that thinks it needs to set order status on a partial refund or refund (it doesn't)
- Processes that can overwrite order refund fields when webhook timing is off.
They've released versions that have broken filters (so crashed the checkout loading 2 million transactions to try and figure out the last payment method used), have put PHP 8.0 specific code in versions meant for 7.x, had invalid JS that broke checkouts.
Every time, it's an ordeal that ends up becoming a game of message passing between the internal support team and their Magento agency. I have 18 separate plugins, 8 class rewrites fixing or altering things on your extension. It's my preferred solution these days. It saves my time jumping through hoops to help a company that's valued at $40 billion.