Skip to content

DotRocks 1.4.1

Choose a tag to compare

@kidoz kidoz released this 01 Aug 08:21
· 18 commits to main since this release

A patch release of DotRocks — a native .NET driver, Entity Framework Core provider, and Roslyn analyzer suite built specifically for StarRocks. It implements its own managed StarRocks client protocol and takes no runtime dependency on any MySQL driver. This release fixes a hang: reading rows from a DbDataReader was not covered by CommandTimeout or Cancel(), so a server that stopped sending mid-result left the caller waiting indefinitely.

Fixed

  • CommandTimeout and DbCommand.Cancel() now apply while a DbDataReader iterates rows. The command's cancellation scope previously ended when the reader was handed back, so a server that stopped sending mid-result left Read/ReadAsync waiting indefinitely — with no timeout and no way to cancel — on both the synchronous and asynchronous paths. The reader now owns the scope and re-arms the timeout around each row fetch, so a stalled fetch fails with a timeout while a legitimately long streaming scan is not capped by one total budget. A timed-out or cancelled read retires the connection instead of returning it to the pool.
  • Disposing a reader over a partially consumed result set no longer drains the remaining rows uninterruptibly. The courtesy drain that keeps a connection poolable is now bounded by the command timeout; on expiry the connection is retired rather than blocking the caller for the rest of the stream.

Compatibility

  • .NET 10 / C# 14. Source- and binary-compatible with 1.4.0 — no public API changes. Behavior changes worth noting: a stalled row read now fails with a DotRocksException whose message reports a timeout (previously it blocked forever), and abandoning a reader over a large unread result set now retires the connection instead of draining the remainder. Long-running streaming scans are unaffected: the timeout bounds each individual row fetch, not the reader's total lifetime. CommandTimeout = 0 continues to mean "no timeout".

Full Changelog: v1.4.0...v1.4.1