Skip to content
This repository has been archived by the owner on Jul 12, 2024. It is now read-only.

[GlobalStep] Product search fails to work on Analytics->Product screen and Product table goes to infinite loading upon refreshing the page. #7308

Closed
1 of 3 tasks
gglobalstep opened this issue Jul 7, 2021 · 4 comments · Fixed by #7355
Assignees
Labels
focus: analytics Issues about Analytics/Reports type: bug The issue is a confirmed bug.

Comments

@gglobalstep
Copy link

gglobalstep commented Jul 7, 2021

Bug Description:

While searching a product on Analytics->Products screen, the "No data to display" message is displayed and upon refreshing the page, Product table goes to infinite loading.

Environment:

Woocommerce Version : WooCommerce 5.5 RC 2
WordPress version: (v5.8 RC 2)

PC:
Windows 10, Mac 10.14.6
Chrome(Version 91.0.4472.77)
Firefox(Version 88.0)
Safari: v13.1.1

Steps To Reproduce:

  1. Create any test site using JN site.
  2. Install and activate all the required plugins.
  3. Complete the onboarding setup wizard.
  4. Add Some Products.
  5. Go to Shop page and place a order for some products.
  6. Now go to Analytics->Products screen.
  7. Search for a product.
  8. Note that "No data to display" message is displayed.
  9. Now Refresh the page.
  10. Observe that Product table goes to infinite loading.

Actual Result:

Product search fails to work on Analytics->Product screen and upon refreshing the page, Product table goes to infinite loading.

Expected Result:

User should be able to search products on Analytics->Product screen.

Video:

7308.mp4

Isolating the problem (mark completed items with an [x]):

  • I have deactivated other plugins and confirmed this bug occurs when only WooCommerce plugin is active.
  • This bug happens with a default WordPress theme active, or Storefront.
  • I can reproduce this bug consistently using the steps above.

`

WordPress Environment

WC Version: 5.4.1
REST API Version: ✔ 5.4.1
WC Blocks Version: ✔ 5.1.0
Action Scheduler Version: ✔ 3.1.6
WC Admin Version: ✔ 2.3.1
Log Directory Writable: ✔
WP Version: ❌ 5.8-RC2-51366 - There is a newer version of WordPress available (5.9-alpha-51362)
WP Multisite: –
WP Memory Limit: 256 MB
WP Debug Mode: ✔
WP Cron: ✔
Language: en_US
External object cache: –

Server Environment

Server Info: Apache/2.4.48 (Unix) OpenSSL/1.0.2g
PHP Version: 7.4.21
PHP Post Max Size: 1 GB
PHP Time Limit: 30
PHP Max Input Vars: 5000
cURL Version: 7.47.0
OpenSSL/1.0.2g

SUHOSIN Installed: –
MySQL Version: 5.7.33-0ubuntu0.16.04.1-log
Max Upload Size: 512 MB
Default Timezone is UTC: ✔
fsockopen/cURL: ✔
SoapClient: ✔
DOMDocument: ✔
GZip: ✔
Multibyte String: ✔
Remote Post: ✔
Remote Get: ✔

Database

WC Database Version: 5.5.0
WC Database Prefix: wp_
Total Database Size: 10.23MB
Database Data Size: 7.57MB
Database Index Size: 2.66MB
wp_woocommerce_sessions: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_woocommerce_api_keys: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_woocommerce_attribute_taxonomies: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_woocommerce_downloadable_product_permissions: Data: 0.02MB + Index: 0.06MB + Engine InnoDB
wp_woocommerce_order_items: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_woocommerce_order_itemmeta: Data: 0.05MB + Index: 0.03MB + Engine InnoDB
wp_woocommerce_tax_rates: Data: 0.02MB + Index: 0.06MB + Engine InnoDB
wp_woocommerce_tax_rate_locations: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_woocommerce_shipping_zones: Data: 0.02MB + Index: 0.00MB + Engine InnoDB
wp_woocommerce_shipping_zone_locations: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_woocommerce_shipping_zone_methods: Data: 0.02MB + Index: 0.00MB + Engine InnoDB
wp_woocommerce_payment_tokens: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_woocommerce_payment_tokenmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_woocommerce_log: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_actionscheduler_actions: Data: 0.05MB + Index: 0.13MB + Engine InnoDB
wp_actionscheduler_claims: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_actionscheduler_groups: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_actionscheduler_logs: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_commentmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_comments: Data: 0.02MB + Index: 0.09MB + Engine InnoDB
wp_gla_budget_recommendations: Data: 0.22MB + Index: 0.14MB + Engine InnoDB
wp_gla_merchant_issues: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_gla_shipping_rates: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_gla_shipping_times: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_links: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailchimp_carts: Data: 0.02MB + Index: 0.00MB + Engine InnoDB
wp_mailchimp_jobs: Data: 0.02MB + Index: 0.00MB + Engine InnoDB
wp_mailpoet_custom_fields: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_dynamic_segment_filters: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_feature_flags: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_forms: Data: 0.02MB + Index: 0.00MB + Engine InnoDB
wp_mailpoet_log: Data: 0.02MB + Index: 0.00MB + Engine InnoDB
wp_mailpoet_mapping_to_external_entities: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_newsletters: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_mailpoet_newsletter_links: Data: 0.02MB + Index: 0.05MB + Engine InnoDB
wp_mailpoet_newsletter_option: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_newsletter_option_fields: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_newsletter_posts: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_newsletter_segment: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_newsletter_templates: Data: 2.52MB + Index: 0.00MB + Engine InnoDB
wp_mailpoet_scheduled_tasks: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_mailpoet_scheduled_task_subscribers: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_segments: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_mailpoet_sending_queues: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_mailpoet_settings: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_statistics_clicks: Data: 0.02MB + Index: 0.05MB + Engine InnoDB
wp_mailpoet_statistics_forms: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_statistics_newsletters: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_mailpoet_statistics_opens: Data: 0.02MB + Index: 0.08MB + Engine InnoDB
wp_mailpoet_statistics_unsubscribes: Data: 0.02MB + Index: 0.05MB + Engine InnoDB
wp_mailpoet_statistics_woocommerce_purchases: Data: 0.02MB + Index: 0.06MB + Engine InnoDB
wp_mailpoet_stats_notifications: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_mailpoet_subscribers: Data: 0.02MB + Index: 0.13MB + Engine InnoDB
wp_mailpoet_subscriber_custom_field: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_subscriber_ips: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_mailpoet_subscriber_segment: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_mailpoet_user_flags: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_options: Data: 3.05MB + Index: 0.09MB + Engine InnoDB
wp_postmeta: Data: 0.16MB + Index: 0.11MB + Engine InnoDB
wp_posts: Data: 0.08MB + Index: 0.06MB + Engine InnoDB
wp_termmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_terms: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_term_relationships: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_term_taxonomy: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_usermeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_users: Data: 0.02MB + Index: 0.05MB + Engine InnoDB
wp_wc_admin_notes: Data: 0.02MB + Index: 0.00MB + Engine InnoDB
wp_wc_admin_note_actions: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_wc_category_lookup: Data: 0.02MB + Index: 0.00MB + Engine InnoDB
wp_wc_customer_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_wc_download_log: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_wc_order_coupon_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_wc_order_product_lookup: Data: 0.02MB + Index: 0.06MB + Engine InnoDB
wp_wc_order_stats: Data: 0.02MB + Index: 0.05MB + Engine InnoDB
wp_wc_order_tax_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB
wp_wc_product_meta_lookup: Data: 0.02MB + Index: 0.09MB + Engine InnoDB
wp_wc_reserved_stock: Data: 0.02MB + Index: 0.00MB + Engine InnoDB
wp_wc_tax_rate_classes: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
wp_wc_webhooks: Data: 0.02MB + Index: 0.02MB + Engine InnoDB

Post Type Counts

attachment: 23
customize_changeset: 1
mailpoet_page: 1
page: 15
post: 2
product: 20
product_variation: 7
revision: 24
shop_coupon: 1
shop_order: 16
shop_order_refund: 1
wp_global_styles: 1

Security

Secure connection (HTTPS): ✔
Hide errors from visitors: ✔

Active Plugins (10)

Query Monitor: by John Blackbourn – 3.7.1
Companion Plugin: by Osk – 1.18
Facebook for WooCommerce: by Facebook – 2.6.1
Google Listings and Ads: by WooCommerce – 1.1.0
Gutenberg: by Gutenberg Team – 10.9.1
Mailchimp for WooCommerce: by Mailchimp – 2.5.1
MailPoet 3 (New): by MailPoet – 3.64.3
WooCommerce Beta Tester: by WooCommerce – 2.0.2
WooCommerce: by Automattic – 5.4.1
WordPress Beta Tester: by Peter Westwood
Andy Fragen – 3.1.0

Inactive Plugins (2)

Akismet Anti-Spam: by Automattic – 4.1.10
Hello Dolly: by Matt Mullenweg – 1.7.2

Dropin Plugins (1)

db.php: Query Monitor Database Class

Settings

API Enabled: –
Force SSL: –
Currency: USD ($)
Currency Position: left
Thousand Separator: ,
Decimal Separator: .
Number of Decimals: 2
Taxonomies: Product Types: external (external)
grouped (grouped)
simple (simple)
variable (variable)

Taxonomies: Product Visibility: exclude-from-catalog (exclude-from-catalog)
exclude-from-search (exclude-from-search)
featured (featured)
outofstock (outofstock)
rated-1 (rated-1)
rated-2 (rated-2)
rated-3 (rated-3)
rated-4 (rated-4)
rated-5 (rated-5)

Connected to WooCommerce.com: ✔

WC Pages

Shop base: #6 - /shop/
Cart: #7 - /cart/
Checkout: #8 - /checkout/
My account: #9 - /my-account/
Terms and conditions: ❌ Page not set

Theme

Name: Storefront
Version: 3.7.0
Author URL: https://woocommerce.com/
Child Theme: ❌ – If you are modifying WooCommerce on a parent theme that you did not build personally we recommend using a child theme. See: How to create a child theme
WooCommerce Support: ✔

Templates

Overrides: –

Action Scheduler

Complete: 71
Oldest: 2021-07-07 08:19:01 +0000
Newest: 2021-07-07 14:28:41 +0000

Status report information

Generated at: 2021-07-07 14:45:35 +00:00
`

@joelclimbsthings
Copy link
Contributor

This is a valid bug on main. It's actually similar to another issue I've poked at recently regarding customer searching, that also involves the <ReportTable /> component. Enough so that I wonder whether they have the same fix.

I haven't completed that issue, but believe the problem stems at least partially from this utility function and it's use of isResolving().

See Sam's post regarding wp-data resolution here for more on that. However, fixing that issue didn't correct the behavior for me so I'm still looking at this as time allows.

@joelclimbsthings joelclimbsthings added focus: analytics Issues about Analytics/Reports type: bug The issue is a confirmed bug. labels Jul 7, 2021
@louwie17
Copy link
Contributor

louwie17 commented Jul 8, 2021

@joelclimbsthings I did some further digging into this, the issue is not with the isResolving(), more so with how the withSelect is structured in the report-table.
Several months ago the wp/data package got updated so that it keeps track of all the stores a withSelect uses on initial call. Given we are returning an empty object at the top of the select before calling the select function, the data package thinks we are not dependent on anything, so is only triggered if a prop is updated.
Moving the if statement down for example below the getReportTableData call, fixes the refresh issue.
I did still notice some weird behaviour when sorting for the very first time, I wondered if it is a url param query problem (given we escape it)?

The cleanest way to refactor this, is probably moving all the required resolver functions to the top, and passing those into the util functions.

@joelclimbsthings
Copy link
Contributor

Awesome @louwie17 , I had been poking at that and noticed the EMPTY_ARRAY return, and that really clarifies things. Do you have a reference for the changes to wp-data?

@louwie17
Copy link
Contributor

Awesome @louwie17 , I had been poking at that and noticed the EMPTY_ARRAY return, and that really clarifies things. Do you have a reference for the changes to wp-data?

Here is the PR that added this change back in November last year, I am not sure if this is covered in a P2 post anywhere.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
focus: analytics Issues about Analytics/Reports type: bug The issue is a confirmed bug.
Projects
None yet
3 participants