Drupal\views\Plugin\views\HandlerBase::breakString works unexpectedly for a views with a huge amount of filters/parameters in a view

Created on 18 December 2023, over 1 year ago

Problem/Motivation

Views that generate requests with a huge amount of arguments (more than 3500) give WSOD.
The issue was reproduced on commerce order view with the amount of order items more than 3500.

Steps to reproduce

It was reproduced on commerce order view with a number of order items of more than 3500, so
1. Install commerce module
2. Create an order with the number of order items more than 3500.
3. Go to the order view page.

Expected result

Page (view) opened.

Actual result

The website encountered an unexpected error. Please try again later.
Error in the watchdog: TypeError: Cannot assign null to property Drupal\views\Plugin\views\argument\ArgumentPluginBase::$operator of type string in Drupal\views\Plugin\views\argument\NumericArgument->title() (line 63 of /usr/www/users/cbefce/web/core/modules/views/src/Plugin/views/argument/NumericArgument.php).

Root cause of issue

web/core/modules/views/src/Plugin/views/HandlerBase::breakString gives unexpected results in case of using a string with a huge amount of filter parameters, like "N1+N2+N3....+N3500" (it breaks somewhere at a number of filters ~ 3500).
The reason for that is preg_match can't handle a long string: For the longer string, the issue could be related to the length of the string causing a problem in PHP's regex engine. PHP has a limit on the size of the string it can process with regular expressions, and very long strings can lead to unexpected behavior, such as failing to match.

Proposed resolution

Fix web/core/modules/views/src/Plugin/views/HandlerBase::breakString to avoid using preg_match.

๐Ÿ› Bug report
Status

Active

Version

10.1 โœจ

Component
Viewsย  โ†’

Last updated 25 minutes ago

Created by

๐Ÿ‡บ๐Ÿ‡ฆUkraine Ihor Ukhan

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

Production build 0.71.5 2024