Skip to content
代码片段 群组 项目
该项目从 https://gitlab.com/gitlab-org/gitlab.git 镜像。 拉取镜像更新于
  1. 7月 18, 2024
    • Paul Gascou-Vaillancourt's avatar
      Lint against outdated usages of `helpPagePath` · a312aa7d
      Paul Gascou-Vaillancourt 创作于
      As docs pages get moved around or deleted, docs links that we display in
      the product might become outdated without us noticing.
      This adds an ESLint rule that ensures `helpPagePath` always points to
      files and anchors that still exist.
      In future iterations, we should add a similar rule to check usages of
      the `HelpPageLink` Vue component, and a Rubocop rule for the backend
      `help_page_path` helper.
      a312aa7d
  2. 7月 10, 2024
  3. 6月 27, 2024
  4. 6月 18, 2024
  5. 6月 07, 2024
  6. 5月 31, 2024
  7. 5月 25, 2024
  8. 5月 24, 2024
  9. 5月 23, 2024
  10. 5月 21, 2024
  11. 5月 03, 2024
    • Lukas Eipert's avatar
      Increase entropy in @vue/compiler cache key hash · f5c4b58e
      Lukas Eipert 创作于
      Apparently we hit a very unlikely case that lead to our builds to be
      unstable:
      
      1. The `@vue/compiler` uses a small LRU cache with the latest 100 vue
         files it parsed.
      2. It uses a `hash(filename + source + constant)` for the key of the
         cache. The hashing function has 2^32 different outcomes
      
      With our code base we have a pure chance of a hash collision of 1.3 per
      thousand. This collision happens with the two files at this commit:
      850d6792
      
      - app/assets/javascripts/work_items/components/work_item_state_badge.vue
      - app/assets/javascripts/profile/components/user_achievements.vue
      
      Now two more conditions needed to be fulfilled for it to become
      problematic:
      
      1. The two files needed to be parsed within a short period, otherwise
         the collision in the LRU cache would have been avoided. This explains
         why not every job was failing.
      2. In order for the jobs to fail, the colliding files needed to use
         relative imports. If `work_item_state_badge.vue` accidentally loaded
         the content of `user_achievements.vue`, the relative import
         `./graphql/get_user_achievements.query.graphql` didn't exist. Vice
         versa if `user_achievements.vue` loaded the wrong contents, the
         relative import `../constants` didn't exist.
      
      If neither of the colliding files would had relative imports, the
      components might have been swapped silently, leading to potentially
      undetected runtime errors.
      
      We mitigate this issue by patching the hashing of the key to be:
      `hash(a) + hash(b) + hash(c) + hash(d)` rather than `hash(a+b+c)`. This
      decreases the likelyhood of collisions from `1.3 * 10^-3` to
      `2.3 * 10^-9`, making it 570000 times less likely to hit a collision.
      
      We probably should follow this up with an upstream contribution, so that
      other large vue projects are not hit by this.
      f5c4b58e
  12. 4月 23, 2024
    • Lukas Eipert's avatar
      Patch vue-loader-vue3 package · 10a8aa2d
      Lukas Eipert 创作于
      The updated version of the package actually abstracted things nicely,
      but I don't think we should import `vue/compiler-sfc` given that we also
      patch `@vue/compiler-sfc` ourselves.
      10a8aa2d
  13. 2月 23, 2024
  14. 11月 01, 2023
  15. 10月 25, 2023
  16. 9月 21, 2023
  17. 8月 21, 2023
  18. 8月 05, 2023
  19. 7月 05, 2023
  20. 7月 04, 2023
  21. 6月 27, 2023
  22. 6月 26, 2023
  23. 6月 20, 2023
  24. 5月 02, 2023
  25. 3月 15, 2023
  26. 6月 10, 2022
加载中