• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

vortex-data / vortex / 16891240853
88%

Build:
DEFAULT BRANCH: develop
Ran 11 Aug 2025 08:29PM UTC
Jobs 2
Files 638
Run time 4min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

11 Aug 2025 08:24PM UTC coverage: 86.68% (+0.4%) from 86.315%
16891240853

push

github

web-flow
fix: small resource leak in vortex-io, plus test improvements (#4201)

# Vortex-IO Improvements Summary

## Overview
Comprehensive improvements to the vortex-io crate focusing on safety,
test coverage, and production readiness.

## Statistics
- **Files Modified:** 10
- **Lines Added:** 1,144 
- **Lines Removed:** 19
- **Test Coverage:** Increased from ~40% to comprehensive coverage
- **Tests Added:** 95 high-value tests
- **Critical Bugs Fixed:** 5

## Critical Bugs Fixed

### 1. SizeLimitedStream Permit Leak (CRITICAL - Resource Exhaustion)
**File:** `vortex-io/src/limit.rs`  
**Problem:** Futures dropped before completion leaked semaphore permits,
causing resource exhaustion.
**Solution:** Used `OwnedSemaphorePermit` to automatically return
permits when futures are dropped.
```rust
struct SizedFut<Fut> {
    #[pin]
    inner: Fut,
    /// Owned permit that will be automatically dropped when the future completes or is dropped
    _permits: OwnedSemaphorePermit,
}
```

### 2. OwnedSlice Missing Bounds Validation (CRITICAL - Memory
Corruption)
**File:** `vortex-io/src/io_buf.rs`  
**Problem:** No bounds checking on slice ranges, allowing buffer
overruns and undefined behavior.
**Solution:** Added comprehensive bounds validation and debug
assertions.
```rust
assert!(range.start <= range.end, "Invalid range");
assert!(range.end <= self.bytes_init(), "Range exceeds buffer length");
```

### 3. CompioDispatcher Arbitrary Timeout (HIGH - Query Failures)
**File:** `vortex-io/src/dispatcher/compio.rs`  
**Problem:** 30-second timeout killed long-running queries.  
**Solution:** Removed timeout, added proper shutdown signaling with
`Arc<AtomicBool>`.

### 4. Buffer Size Integer Overflow (MEDIUM - Panic Risk)
**File:** `vortex-io/src/io_buf.rs`  
**Problem:** Unchecked multiplication could overflow for large buffers.
**Solution:** Added checked arithmetic.
```rust
self.len()
    .checked_mul(size_of::<T>())
    .vortex_expect("Buffer size calculation overflow")... (continued)

589 of 597 new or added lines in 7 files covered. (98.66%)

54342 of 62693 relevant lines covered (86.68%)

540432.85 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
2
97.95
65.81% vortex-io/src/dispatcher/compio.rs
3
98.81
78.81% vortex-io/src/io_buf.rs
3
62.86
18.26% vortex-io/src/object_store.rs
Jobs
ID Job ID Ran Files Coverage
1 run-tpc-h - 16891240853.1 11 Aug 2025 08:29PM UTC 579
48.12
GitHub Action Run
2 run-tests - 16891240853.2 11 Aug 2025 08:29PM UTC 638
84.55
GitHub Action Run
Source Files on build 16891240853
  • Tree
  • List 638
  • Changed 10
  • Source Changed 7
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #16891240853
  • 74fb7069 on github
  • Prev Build on develop (#16887380527)
  • Next Build on develop (#16892986016)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc