Skip to content

Conversation

@bmartel
Copy link
Contributor

@bmartel bmartel commented Jan 26, 2026

Problem

setTimeout in selectHistory() can fire after the store is destroyed (e.g., during navigation), causing it to access dead MST nodes and throw warnings.

Solution

Add isAlive(self) guard at the start of the setTimeout callback to prevent accessing destroyed store state.

Files Changed

  • web/libs/editor/src/stores/Annotation/store.js

The selectHistory function uses setTimeout to update classifications
after render. If the store is destroyed before the timeout fires
(e.g., during navigation), it could access dead nodes.

Added isAlive(self) check at the start of the setTimeout callback
to prevent accessing destroyed store state.
@codecov
Copy link

codecov bot commented Jan 26, 2026

Codecov Report

❌ Patch coverage is 0% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 57.66%. Comparing base (609d271) to head (bb631d3).
⚠️ Report is 8 commits behind head on develop.

Files with missing lines Patch % Lines
web/libs/editor/src/stores/Annotation/store.js 0.00% 2 Missing ⚠️

❗ There is a different number of reports uploaded between BASE (609d271) and HEAD (bb631d3). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (609d271) HEAD (bb631d3)
pytests 1 0
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #9263      +/-   ##
===========================================
- Coverage    66.82%   57.66%   -9.16%     
===========================================
  Files          830      561     -269     
  Lines        64879    40549   -24330     
  Branches     10971    11010      +39     
===========================================
- Hits         43355    23383   -19972     
+ Misses       21520    17162    -4358     
  Partials         4        4              
Flag Coverage Δ
lsf-e2e 51.97% <0.00%> (-0.03%) ⬇️
lsf-integration 48.25% <0.00%> (-0.03%) ⬇️
lsf-unit 8.85% <0.00%> (-0.02%) ⬇️
pytests ?

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@netlify
Copy link

netlify bot commented Jan 26, 2026

Deploy Preview for label-studio-storybook ready!

Name Link
🔨 Latest commit bb631d3
🔍 Latest deploy log https://app.netlify.com/projects/label-studio-storybook/deploys/6977b00af21e8b00086a5bf8
😎 Deploy Preview https://deploy-preview-9263--label-studio-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Jan 26, 2026

Deploy Preview for heartex-docs canceled.

Name Link
🔨 Latest commit bb631d3
🔍 Latest deploy log https://app.netlify.com/projects/heartex-docs/deploys/6977b00af6e4a800081624db

@netlify
Copy link

netlify bot commented Jan 26, 2026

Deploy Preview for label-studio-playground ready!

Name Link
🔨 Latest commit bb631d3
🔍 Latest deploy log https://app.netlify.com/projects/label-studio-playground/deploys/6977b00af51b4900085de9b5
😎 Deploy Preview https://deploy-preview-9263--label-studio-playground.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Jan 26, 2026

Deploy Preview for label-studio-docs-new-theme canceled.

Name Link
🔨 Latest commit bb631d3
🔍 Latest deploy log https://app.netlify.com/projects/label-studio-docs-new-theme/deploys/6977b00a3f6fc50008170025

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants