Pages with default includes are not cached

Created on 17 November 2023, about 1 year ago
Updated 7 June 2024, 6 months ago

Problem/Motivation

All pages under the 'jsonapi/*' routes that contain nodes with default includes are not cached. This is because the default include is added dynamically in the 'Drupal\jsonapi_defaults\Controller\EntityResource' dynamic route controller service. The 'getIncludes' method executes after the cache is retrieved from the database, resulting in the cache cid being generated without default includes during the cache retrieval process.

On the other hand, 'getIncludes' executes before the cache is set to the database, and during this phase, the cache cid is generated using default includes added to the request. Consequently, we have a cache stored in the database using the default includes context. However, Drupal always attempts to retrieve the cache with a different cid, one that was generated without the default includes context.

As a result, the only way to obtain a cached response is by adding default includes explicitly as get parameters. This is because the cache stored in the database is under a cid generated using these includes added dynamically as default includes. Consequently, we consistently receive an uncached response for pages with default includes.

Steps to reproduce

  1. Add default includes to any content type
  2. Create a page of this content type
  3. Visit this page using the jsonapi/* route, for instance, jsonapi/node/article/324f078e-e3a0-4e3a-b902-0a76f072bdd2
  4. Check the cache header in the response
  5. Reload the page
  6. Check the cache header in the response

Actual result: After the first visit to the page, the cache status is marked as "MISS" and after reloading the page, the cache status remains "MISS."

Expected result: Following the initial visit to the page, the cache status should be "MISS," but after reloading the page, the cache status is expected to change to "HIT."

Proposed resolution

Override the core QueryArgsCacheContext (cache_context.url.query_args) service to disregard all default includes arguments. Consequently, for all requests to resources with default includes, the cache will be stored under the cid generated without using the default includes context. This modification enables us to obtain cached responses for all resources with default includes.

🐛 Bug report
Status

Fixed

Version

3.0

Component

Code

Created by

🇺🇦Ukraine ihor_allin Kyiv

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

Merge Requests

Comments & Activities

  • Issue created by @ihor_allin
  • 🇳🇱Netherlands bbrala Netherlands

    Great work, that will save quite some request/cpu time.

    Any change you could add a line to the tests for that module? I think using:

    $this->assertSession()->responseHeaderContains() should be usefull for that to see if the cache has been hit if a second request is done.

  • 🇺🇦Ukraine ihor_allin Kyiv

    It seems that the responses in these tests do not contain headers, just a raw JSON string.

  • 🇳🇱Netherlands bbrala Netherlands

    You need to use:

        $this->assertSession()->responseHeaderEquals('X-Drupal-Cache', 'MISS');
    
        // 1a. Check if second request is cached.
        $response = $this->drupalGet('/api/articles');
        $this->assertSession()->responseHeaderEquals('X-Drupal-Cache', 'HIT');
    

    Or something similar. When looking at the html output in files//simpletest/browser_output

    array (
      'Date' => 'Sat, 18 Nov 2023 11:41:16 GMT',
      'Server' => 'Apache/2.4.56 (Debian)',
      'X-Powered-By' => 'PHP/8.1.25',
      'X-Drupal-Assertion-0' => 'a%3A3%3A%7Bi%3A0%3BO%3A25%3A%22Drupal%5CCore%5CRender%5CMarkup%22%3A1%3A%7Bs%3A9%3A%22%00%2A%00string%22%3Bs%3A196%3A%22Since%20symfony%2Fserializer%206.3%3A%20%22Drupal%5Cjsonapi%5CNormalizer%5CImpostorFrom%5Cjsonapi_extras%5CFieldItemNormalizerImpostor%22%20should%20implement%20%22NormalizerInterface%3A%3AgetSupportedTypes%28%3Fstring%20%24format%29%3A%20array%22.%22%3B%7Di%3A1%3Bs%3A24%3A%22User%20deprecated%20function%22%3Bi%3A2%3Ba%3A3%3A%7Bs%3A8%3A%22function%22%3Bs%3A21%3A%22trigger_deprecation%28%29%22%3Bs%3A4%3A%22file%22%3Bs%3A61%3A%22%2Fgcl-builds%2Fvendor%2Fsymfony%2Fdeprecation-contracts%2Ffunction.php%22%3Bs%3A4%3A%22line%22%3Bi%3A25%3B%7D%7D',
      'X-Drupal-Assertion-1' => 'a%3A3%3A%7Bi%3A0%3BO%3A25%3A%22Drupal%5CCore%5CRender%5CMarkup%22%3A1%3A%7Bs%3A9%3A%22%00%2A%00string%22%3Bs%3A205%3A%22Since%20symfony%2Fserializer%206.3%3A%20%22Drupal%5Cjsonapi%5CNormalizer%5CImpostorFrom%5Cjsonapi_extras%5CResourceIdentifierNormalizerImpostor%22%20should%20implement%20%22NormalizerInterface%3A%3AgetSupportedTypes%28%3Fstring%20%24format%29%3A%20array%22.%22%3B%7Di%3A1%3Bs%3A24%3A%22User%20deprecated%20function%22%3Bi%3A2%3Ba%3A3%3A%7Bs%3A8%3A%22function%22%3Bs%3A21%3A%22trigger_deprecation%28%29%22%3Bs%3A4%3A%22file%22%3Bs%3A61%3A%22%2Fgcl-builds%2Fvendor%2Fsymfony%2Fdeprecation-contracts%2Ffunction.php%22%3Bs%3A4%3A%22line%22%3Bi%3A25%3B%7D%7D',
      'X-Drupal-Assertion-2' => 'a%3A3%3A%7Bi%3A0%3BO%3A25%3A%22Drupal%5CCore%5CRender%5CMarkup%22%3A1%3A%7Bs%3A9%3A%22%00%2A%00string%22%3Bs%3A201%3A%22Since%20symfony%2Fserializer%206.3%3A%20%22Drupal%5Cjsonapi%5CNormalizer%5CImpostorFrom%5Cjsonapi_extras%5CResourceObjectNormalizerImpostor%22%20should%20implement%20%22NormalizerInterface%3A%3AgetSupportedTypes%28%3Fstring%20%24format%29%3A%20array%22.%22%3B%7Di%3A1%3Bs%3A24%3A%22User%20deprecated%20function%22%3Bi%3A2%3Ba%3A3%3A%7Bs%3A8%3A%22function%22%3Bs%3A21%3A%22trigger_deprecation%28%29%22%3Bs%3A4%3A%22file%22%3Bs%3A61%3A%22%2Fgcl-builds%2Fvendor%2Fsymfony%2Fdeprecation-contracts%2Ffunction.php%22%3Bs%3A4%3A%22line%22%3Bi%3A25%3B%7D%7D',
      'X-Drupal-Assertion-3' => 'a%3A3%3A%7Bi%3A0%3BO%3A25%3A%22Drupal%5CCore%5CRender%5CMarkup%22%3A1%3A%7Bs%3A9%3A%22%00%2A%00string%22%3Bs%3A202%3A%22Since%20symfony%2Fserializer%206.3%3A%20%22Drupal%5Cjsonapi%5CNormalizer%5CImpostorFrom%5Cjsonapi_extras%5CContentEntityDenormalizerImpostor%22%20should%20implement%20%22NormalizerInterface%3A%3AgetSupportedTypes%28%3Fstring%20%24format%29%3A%20array%22.%22%3B%7Di%3A1%3Bs%3A24%3A%22User%20deprecated%20function%22%3Bi%3A2%3Ba%3A3%3A%7Bs%3A8%3A%22function%22%3Bs%3A21%3A%22trigger_deprecation%28%29%22%3Bs%3A4%3A%22file%22%3Bs%3A61%3A%22%2Fgcl-builds%2Fvendor%2Fsymfony%2Fdeprecation-contracts%2Ffunction.php%22%3Bs%3A4%3A%22line%22%3Bi%3A25%3B%7D%7D',
      'X-Drupal-Assertion-4' => 'a%3A3%3A%7Bi%3A0%3BO%3A25%3A%22Drupal%5CCore%5CRender%5CMarkup%22%3A1%3A%7Bs%3A9%3A%22%00%2A%00string%22%3Bs%3A201%3A%22Since%20symfony%2Fserializer%206.3%3A%20%22Drupal%5Cjsonapi%5CNormalizer%5CImpostorFrom%5Cjsonapi_extras%5CConfigEntityDenormalizerImpostor%22%20should%20implement%20%22NormalizerInterface%3A%3AgetSupportedTypes%28%3Fstring%20%24format%29%3A%20array%22.%22%3B%7Di%3A1%3Bs%3A24%3A%22User%20deprecated%20function%22%3Bi%3A2%3Ba%3A3%3A%7Bs%3A8%3A%22function%22%3Bs%3A21%3A%22trigger_deprecation%28%29%22%3Bs%3A4%3A%22file%22%3Bs%3A61%3A%22%2Fgcl-builds%2Fvendor%2Fsymfony%2Fdeprecation-contracts%2Ffunction.php%22%3Bs%3A4%3A%22line%22%3Bi%3A25%3B%7D%7D',
      'Cache-Control' => 'must-revalidate, no-cache, private',
      'X-Drupal-Dynamic-Cache' => 'MISS',
      'Content-language' => 'en',
      'X-Content-Type-Options' => 'nosniff',
      'X-Frame-Options' => 'SAMEORIGIN',
      'X-Drupal-Cache-Tags' => 'config:filter.format.plain_text config:jsonapi_extras.settings config:jsonapi_resource_config_list config:user.role.anonymous http_response node:1 node:2 node_list taxonomy_term:2 taxonomy_term:3 taxonomy_term:4 taxonomy_term:5',
      'X-Drupal-Cache-Contexts' => 'languages:language_interface theme url.query_args:fields url.query_args:filter url.query_args:include url.query_args:page url.query_args:resourceVersion url.query_args:sort url.site user.permissions',
      'X-Drupal-Cache-Max-Age' => '-1 (Permanent)',
      'Expires' => 'Sun, 19 Nov 1978 05:00:00 GMT',
      'X-Generator' => 'Drupal 10 (https://www.drupal.org)',
      'X-Drupal-Cache' => 'MISS',
      'Transfer-Encoding' => 'chunked',
      'Content-Type' => 'application/vnd.api+json',
    )
    

    I see cache info. Locally i was not sure how to reproduce the error, i got a hit on the second call.

  • 🇺🇦Ukraine ihor_allin Kyiv

    @bbrala, thank you for the clear explanation. Updating the patch with the corresponding tests. Passed successfully on my local env

  • Merge request !39Test caching → (Open) created by bbrala
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.1.4 + Environment: PHP 8.1 & MySQL 5.7
    last update about 1 year ago
    17 pass
  • Merge request !40Resolve #3402388 "Pages with default" → (Merged) created by bbrala
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.1.4 + Environment: PHP 8.1 & MySQL 5.7
    last update about 1 year ago
    14 pass, 1 fail
  • 🇳🇱Netherlands bbrala Netherlands

    Hmm, gitlab is weird.

    But when i run those tests locally, when i do only the test (which should fail right?) then the test is still green. So that test doesn't proove the faulty caching...

  • 🇺🇦Ukraine ihor_allin Kyiv

    @bbrala do you have default includes added when you test it locally?

  • 🇺🇦Ukraine ihor_allin Kyiv

    Fixed bug with variable name

  • Open in Jenkins → Open on Drupal.org →
    Core: 10.1.4 + Environment: PHP 8.1 & MySQL 5.7
    last update about 1 year ago
    17 pass
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.1.4 + Environment: PHP 8.1 & MySQL 5.7
    last update about 1 year ago
    Patch Failed to Apply
  • Open in Jenkins → Open on Drupal.org →
    Core: 9.5.x + Environment: PHP 8.1 & MySQL 5.7
    last update about 1 year ago
    Patch Failed to Apply
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.1.4 + Environment: PHP 8.1 & MySQL 5.7
    last update about 1 year ago
    17 pass
  • Pipeline finished with Success
    about 1 year ago
    Total: 215s
    #53428
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.1.4 + Environment: PHP 8.1 & MySQL 5.7
    last update about 1 year ago
    17 pass
  • Pipeline finished with Success
    about 1 year ago
    Total: 207s
    #53439
  • 🇺🇦Ukraine ihor_allin Kyiv

    For some reason, locally, I have also passed tests by adding a cache tag check: $this->assertSession()->responseHeaderEquals('X-Drupal-Cache', 'HIT') after the second request to '/api/articles'. However, at the same time, when I check it by visiting the JSON API route with the resource with default includes, I always receive an uncached response.

  • 🇺🇦Ukraine ihor_allin Kyiv

    Update patch with minor code styles fixes

  • 🇺🇦Ukraine ihor_allin Kyiv

    Fixed 500 error for the resources without default includes

  • Pipeline finished with Success
    about 1 year ago
    Total: 258s
    #56199
  • Pipeline finished with Skipped
    about 1 year ago
    #60534
  • Pipeline finished with Success
    about 1 year ago
    Total: 182s
    #63984
  • Pipeline finished with Skipped
    11 months ago
    #78125
  • Pipeline finished with Success
    11 months ago
    Total: 507s
    #83911
  • Pipeline finished with Success
    11 months ago
    Total: 276s
    #87599
  • Pipeline finished with Canceled
    10 months ago
    Total: 203s
    #95977
  • Pipeline finished with Success
    10 months ago
    #98417
  • Pipeline finished with Success
    10 months ago
    Total: 144s
    #98423
  • Pipeline finished with Skipped
    10 months ago
    #99186
  • Pipeline finished with Failed
    10 months ago
    Total: 303s
    #101342
  • Pipeline finished with Failed
    10 months ago
    Total: 272s
    #101777
  • Pipeline finished with Failed
    10 months ago
    Total: 256s
    #101824
  • Pipeline finished with Success
    10 months ago
    Total: 148s
    #102046
  • Pipeline finished with Success
    10 months ago
    Total: 157s
    #105827
  • Pipeline finished with Success
    10 months ago
    Total: 184s
    #105900
  • 🇺🇦Ukraine _tarik_ Lutsk

    Thanks ihor_allin. The patch in comment #16 works for me.

  • Pipeline finished with Success
    10 months ago
    Total: 351s
    #111145
  • Pipeline finished with Failed
    10 months ago
    Total: 449s
    #112497
  • Pipeline finished with Success
    10 months ago
    Total: 320s
    #112620
  • 🇮🇳India Ankush_03 Gurgaon, India 🇮🇳

    Hey @bbrala,

    Any update on the above fix ??

  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 9 months ago
    11 pass, 4 fail
  • 🇮🇳India Ankush_03 Gurgaon, India 🇮🇳
  • Pipeline finished with Success
    9 months ago
    Total: 275s
    #127412
  • Status changed to Needs review 9 months ago
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 9 months ago
    Patch Failed to Apply
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 9 months ago
    8 pass, 5 fail
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 9 months ago
    8 pass, 5 fail
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 9 months ago
    Patch Failed to Apply
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 9 months ago
    Patch Failed to Apply
  • 🇮🇳India gaurav_manerkar Vasco Da Gama, Goa
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 9 months ago
    11 pass, 4 fail
  • Pipeline finished with Failed
    9 months ago
    #128396
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 9 months ago
    16 pass, 2 fail
  • The last submitted patch, 2: 3402388-default-includes-caching-fix.patch, failed testing. View results
    - codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

  • The last submitted patch, 7: 3402388-default-includes-caching-fix-7.patch, failed testing. View results
    - codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

  • Pipeline finished with Failed
    9 months ago
    Total: 229s
    #128405
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 9 months ago
    17 pass
  • Pipeline finished with Success
    9 months ago
    Total: 231s
    #128412
  • 🇩🇪Germany Anybody Porta Westfalica
  • Pipeline finished with Skipped
    9 months ago
    #138633
  • 🇺🇦Ukraine _tarik_ Lutsk

    I have found an issue with response caching with this patch.
    The isDefaultIncludes method checks only if the request contains included parameters from the jsonapi_extras configuration. So, it can cause problems when the one cached response is used for different includes params.

    Say, you have an endpoint for an article that uses 3 taxonomy fields (field_tag, field_type, field_category).
    The jsonapi_extras is configured to include by default the field_type field. Then if you send the first request with ?include=field_category this response will be cached and applied to the response without the include param or for ?include=field_tag.

    So, instead of checking if the request uses default includes we need to check if the request uses ONLY default includes.

  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 8 months ago
    17 pass
  • Pipeline finished with Success
    8 months ago
    Total: 258s
    #160801
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 8 months ago
    17 pass
  • 🇺🇦Ukraine _tarik_ Lutsk

    The diff for PR to avoid adding numerous commits to the composer.json.

  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 8 months ago
    17 pass
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 8 months ago
    17 pass
  • 🇺🇦Ukraine _tarik_ Lutsk

    I realized that made a mistake in my previous commit. Here is the correct version of the patch

  • Pipeline finished with Success
    8 months ago
    Total: 215s
    #163439
  • Pipeline finished with Success
    7 months ago
    #173551
  • Pipeline finished with Success
    7 months ago
    Total: 153s
    #173668
  • Pipeline finished with Failed
    7 months ago
    Total: 387s
    #176281
  • Pipeline finished with Failed
    7 months ago
    Total: 212s
    #176293
  • Status changed to Fixed 7 months ago
  • 🇳🇱Netherlands bbrala Netherlands

    Ty for taking the time here to fix this up. Changes seem to work as promised <3

  • Pipeline finished with Skipped
    7 months ago
    #181349
  • Open in Jenkins → Open on Drupal.org →
    Core: 10.2.1 + Environment: PHP 8.1 & MySQL 5.7
    last update 7 months ago
    17 pass
    • bbrala committed 373f0114 on 8.x-3.x
      Issue #3402388 by ihor_allin, bbrala, _tarik_, gaurav_manerkar,...
  • 🇳🇱Netherlands bbrala Netherlands
  • Pipeline finished with Canceled
    7 months ago
    Total: 637s
    #183477
  • Pipeline finished with Canceled
    7 months ago
    Total: 3s
    #183484
  • Pipeline finished with Canceled
    7 months ago
    #183485
  • Pipeline finished with Success
    7 months ago
    Total: 196s
    #186667
  • Pipeline finished with Skipped
    7 months ago
    #186908
  • Pipeline finished with Success
    7 months ago
    Total: 196s
    #187136
  • Pipeline finished with Success
    7 months ago
    Total: 145s
    #188028
  • Pipeline finished with Success
    7 months ago
    Total: 216s
    #190732
  • Pipeline finished with Failed
    7 months ago
    Total: 266s
    #192574
  • Automatically closed - issue fixed for 2 weeks with no activity.

  • Pipeline finished with Success
    6 months ago
    #198890
  • Pipeline finished with Success
    6 months ago
    Total: 364s
    #203604
  • Pipeline finished with Success
    6 months ago
    Total: 306s
    #203609
  • Pipeline finished with Success
    6 months ago
    Total: 217s
    #203646
  • Pipeline finished with Success
    6 months ago
    Total: 157s
    #214640
  • Pipeline finished with Skipped
    5 months ago
    #217970
  • Pipeline finished with Success
    5 months ago
    Total: 204s
    #219101
  • Pipeline finished with Failed
    5 months ago
    Total: 151s
    #222977
  • Pipeline finished with Failed
    5 months ago
    Total: 270s
    #231480
  • Pipeline finished with Failed
    5 months ago
    #231780
  • Pipeline finished with Failed
    5 months ago
    Total: 253s
    #231812
  • Pipeline finished with Success
    5 months ago
    Total: 1889s
    #232391
  • Pipeline finished with Failed
    5 months ago
    Total: 335s
    #234605
  • Pipeline finished with Success
    5 months ago
    Total: 143s
    #235137
  • Pipeline finished with Success
    5 months ago
    Total: 159s
    #235219
  • Pipeline finished with Success
    5 months ago
    Total: 81s
    #235740
  • Pipeline finished with Skipped
    5 months ago
    #238787
  • Pipeline finished with Failed
    5 months ago
    Total: 162s
    #241595
  • Pipeline finished with Failed
    5 months ago
    #241614
  • Pipeline finished with Canceled
    4 months ago
    Total: 540s
    #245927
  • Pipeline finished with Failed
    4 months ago
    #256919
  • Pipeline finished with Skipped
    4 months ago
    #261124
  • Pipeline finished with Success
    4 months ago
    Total: 322s
    #264801
  • Pipeline finished with Success
    4 months ago
    Total: 443s
    #265583
  • Pipeline finished with Success
    4 months ago
    Total: 141s
    #268604
  • Pipeline finished with Success
    4 months ago
    Total: 165s
    #270053
  • Pipeline finished with Success
    3 months ago
    Total: 2357s
    #274827
  • Pipeline finished with Success
    3 months ago
    Total: 1249s
    #274879
  • Pipeline finished with Canceled
    3 months ago
    Total: 77s
    #276094
  • Pipeline finished with Success
    3 months ago
    Total: 405s
    #276153
  • Pipeline finished with Success
    3 months ago
    #276164
  • Pipeline finished with Success
    3 months ago
    Total: 227s
    #279374
  • Pipeline finished with Failed
    3 months ago
    Total: 466s
    #280056
  • Pipeline finished with Success
    3 months ago
    Total: 382s
    #280074
  • Pipeline finished with Success
    3 months ago
    Total: 190s
    #280517
  • Pipeline finished with Failed
    3 months ago
    Total: 144s
    #280746
  • Pipeline finished with Success
    3 months ago
    Total: 378s
    #282522
  • Pipeline finished with Canceled
    3 months ago
    Total: 156s
    #282822
  • Pipeline finished with Success
    3 months ago
    #283239
  • Pipeline finished with Failed
    3 months ago
    Total: 1175s
    #287043
  • Pipeline finished with Success
    3 months ago
    #287497
  • Pipeline finished with Success
    3 months ago
    Total: 252s
    #294904
  • Pipeline finished with Success
    3 months ago
    Total: 246s
    #297005
  • Pipeline finished with Success
    3 months ago
    Total: 497s
    #297546
  • Pipeline finished with Success
    2 months ago
    Total: 325s
    #311386
  • Pipeline finished with Success
    2 months ago
    Total: 155s
    #312404
  • Pipeline finished with Success
    2 months ago
    Total: 167s
    #312643
  • Pipeline finished with Success
    2 months ago
    #312932
  • Pipeline finished with Failed
    about 2 months ago
    Total: 198s
    #321581
  • Pipeline finished with Skipped
    about 2 months ago
    #326051
  • Pipeline finished with Failed
    about 1 month ago
    Total: 202s
    #329393
  • Pipeline finished with Canceled
    about 1 month ago
    Total: 119s
    #329500
  • Pipeline finished with Failed
    about 1 month ago
    Total: 196s
    #329510
  • Pipeline finished with Skipped
    about 1 month ago
    #330001
  • Pipeline finished with Failed
    about 1 month ago
    Total: 144s
    #331621
  • Pipeline finished with Success
    about 1 month ago
    Total: 134s
    #332039
  • Pipeline finished with Success
    about 1 month ago
    Total: 143s
    #332045
  • Pipeline finished with Failed
    22 days ago
    Total: 287s
    #351107
  • Pipeline finished with Failed
    21 days ago
    Total: 154s
    #352139
  • Pipeline finished with Failed
    21 days ago
    Total: 560s
    #352174
  • Pipeline finished with Failed
    21 days ago
    Total: 718s
    #352400
  • Pipeline finished with Success
    21 days ago
    Total: 505s
    #352407
  • Pipeline finished with Success
    14 days ago
    Total: 160s
    #358918
  • Pipeline finished with Success
    14 days ago
    Total: 137s
    #358936
  • Pipeline finished with Failed
    9 days ago
    Total: 261s
    #363786
  • Pipeline finished with Failed
    2 days ago
    Total: 148s
    #370202
  • Pipeline finished with Success
    2 days ago
    Total: 306s
    #370221
Production build 0.71.5 2024