Skip to content

Conversation

@DTraitor
Copy link

@DTraitor DTraitor commented Jun 10, 2025

Fixes multiple bugs that happen when there is no storage left on the device and System.IO.IOException: There is not enough space on the disk. is thrown:

  • DiskService not disposing itself in case of an exception
  • DiskReader never being disposed if an exception was thrown during transaction disposal. It led to log stream never returning to the pool and never closing a handle to the log file resulting in RebuildService failing to rename the log file, as well as TransactionMonitor not disposing the rest of the transactions

Fixes #2286
Fixes #2614
Fixes #2615

@DTraitor DTraitor force-pushed the storage-space-fix branch from 2b6d31c to 7d2f618 Compare June 11, 2025 08:47
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes resource disposal issues that occur when System.IO.IOException: There is not enough space on the disk is thrown, preventing proper cleanup of database resources.

  • Adds exception handling around transaction disposal to ensure the DiskReader is always disposed
  • Wraps DiskService initialization in try-catch to handle disk space errors during database creation
  • Uses TryCatch utility to ensure all DiskService disposal operations complete even if some fail

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
TransactionService.cs Adds try-catch around disposal logic to ensure DiskReader cleanup
DiskService.cs Adds exception handling for initialization and uses TryCatch for disposal operations

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@JKamsker
Copy link
Collaborator

Hey, thanks for your contribution! Unfortunately it's hard to accept such a PR without proper regression testing.

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

Labels

None yet

Projects

None yet

2 participants