DotRocks 1.4.1
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
CommandTimeoutandDbCommand.Cancel()now apply while aDbDataReaderiterates rows. The command's cancellation scope previously ended when the reader was handed back, so a server that stopped sending mid-result leftRead/ReadAsyncwaiting 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
DotRocksExceptionwhose 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 = 0continues to mean "no timeout".
Full Changelog: v1.4.0...v1.4.1