Skip to content

v1.2.0 Release (with #105 crash fix)#108

Merged
erikdarlingdata merged 2 commits intomainfrom
dev
Mar 18, 2026
Merged

v1.2.0 Release (with #105 crash fix)#108
erikdarlingdata merged 2 commits intomainfrom
dev

Conversation

@erikdarlingdata
Copy link
Owner

@erikdarlingdata erikdarlingdata commented Mar 18, 2026

v1.2.0 Release

Re-release with crash fix for #105 (ObjectDisposedException in SetStatus when loading Query Store plans).

Query Store Enhancements

Bug Fixes

Code Quality (22 fixes)

  • MCP session leak on plan tab close
  • CancellationTokenSource disposal across all controls
  • TextMate.Installation disposal
  • Consolidated duplicate connection dialog code
  • CLI: credential check, --output flag, input validation, .env support for query-store command
  • Core: async disposal, KeychainCredentialService deadlock fix, ShowPlanParser error handling
  • Removed dead QueryStoreDialog code

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • Bug Fixes
    • Enhanced status clearing functionality to prevent interruptions and ensure more reliable operation during normal use.

rferraton and others added 2 commits March 18, 2026 06:29
The CTS disposal added in #97 could race with the 3-second Task.Delay
continuation. If SetStatus was called again after the old CTS was disposed
but before the continuation ran, Cancel() on the disposed CTS threw
ObjectDisposedException, crashing the app.

Fix: null out the field before Cancel/Dispose so the next call never
touches the disposed instance.

Closes #105

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 95a822b into main Mar 18, 2026
2 of 4 checks passed
@coderabbitai
Copy link

coderabbitai bot commented Mar 18, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: da3860cc-ef42-425c-af61-e49fa3ee4af4

📥 Commits

Reviewing files that changed from the base of the PR and between ed5b000 and ae08ed5.

📒 Files selected for processing (1)
  • src/PlanViewer.App/Controls/QuerySessionControl.axaml.cs

📝 Walkthrough

Walkthrough

Refactors cancellation token lifecycle management in the status auto-clear mechanism. The change reorders operations to capture the old CancellationTokenSource, clear the field reference, cancel and dispose the old token, then create and assign a new one. This eliminates overlapping cancellations and potential token reuse.

Changes

Cohort / File(s) Summary
Cancellation Token Lifecycle Refactoring
src/PlanViewer.App/Controls/QuerySessionControl.axaml.cs
Reordered CancellationTokenSource disposal sequence to prevent overlapping cancellations and token reuse during status auto-clear operations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • Fix issue #105 #106: Modifies the same SetStatus/status-clear logic in QuerySessionControl.axaml.cs to improve CancellationTokenSource lifecycle handling with similar cancel/dispose/clear ordering.
  • Fix ObjectDisposedException crash in SetStatus (#105) #107: Directly addresses the same SetStatus logic to refactor how the previous CancellationTokenSource is canceled, disposed, and replaced to prevent race conditions.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev
📝 Coding Plan
  • Generate coding plan for human review comments

Comment @coderabbitai help to get the list of available commands and usage tips.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants