Commit f483023
authored
fix(parquet): eagerly release adaptive bloom filter candidate buffers + skip flaky flight tests in CI (#743)
## Summary
- Eagerly release adaptive bloom filter candidate data buffers when they
are pruned during `InsertHash`/`InsertBulk` and after `WriteTo`
completes, instead of relying solely on GC cleanup/finalizer.
- Skip flaky `arrow/flight` and `arrow/flight/flightsql` tests in CI
using `-short` flag while keeping them runnable locally.
## Bloom Filter Fix
The `adaptiveBlockSplitBloomFilter` creates candidate
`blockSplitBloomFilter` objects whose data buffers are only freed by a
GC cleanup (`runtime.AddCleanup` on Go 1.24+ / `runtime.SetFinalizer` on
Go 1.23). In `TestEncryptedBloomFilters`, `TearDownTest` calls
`runtime.GC()` twice, but that isn't always sufficient for the full
reachability chain (adaptive filter → candidates → bloom filters →
cleanup) to be collected and run before the
`CheckedAllocator.AssertSize(0)` assertion.
This change releases candidate buffers eagerly at two points:
1. **`InsertHash`/`InsertBulk`** – when `slices.DeleteFunc` prunes
candidates that exceeded their NDV threshold.
2. **`WriteTo`** – releases all remaining candidate buffers after
writing the optimal one.
The existing `addCleanup` on each `blockSplitBloomFilter` remains as a
safety net. A second `Release()` from the eventual GC cleanup is a safe
no-op since the buffer's internal slice is already nil after the first
call.
## Flaky Flight Tests
The `arrow/flight` and `arrow/flight/flightsql` packages have gRPC
server/client tests with inherent timing races that spuriously fail
under `-race`/`-asan` in CI:
- `TestCookiesClone` – cookie propagation race
- `TestClientStreamMiddleware` – gRPC header metadata race
- `TestSetRemoveSessionOptions` – session option propagation race
- `TestStatelessServerSessionCookies` – session cookie race
Added `TestMain` to both packages that skips all tests when `-short` is
set, and added `-short` to the arrow `go test` invocations in
`ci/scripts/test.sh`. Parquet test invocations are unaffected.
**CI**: `go test -short ./...` → flight/flightsql tests skipped
**Local**: `go test ./...` → all tests run normally1 parent abb91cf commit f483023
7 files changed
Lines changed: 109 additions & 10 deletions
File tree
- arrow/flight
- flightsql
- ci/scripts
- parquet/metadata
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
70 | 70 | | |
71 | 71 | | |
72 | | - | |
| 72 | + | |
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
125 | 125 | | |
126 | 126 | | |
127 | 127 | | |
128 | | - | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
129 | 134 | | |
130 | 135 | | |
131 | 136 | | |
| |||
150 | 155 | | |
151 | 156 | | |
152 | 157 | | |
153 | | - | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
154 | 164 | | |
155 | 165 | | |
156 | 166 | | |
| |||
169 | 179 | | |
170 | 180 | | |
171 | 181 | | |
172 | | - | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
173 | 193 | | |
174 | 194 | | |
175 | 195 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
239 | 239 | | |
240 | 240 | | |
241 | 241 | | |
242 | | - | |
243 | | - | |
244 | | - | |
245 | | - | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
246 | 247 | | |
247 | 248 | | |
248 | 249 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
| 29 | + | |
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
37 | 38 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
35 | 36 | | |
0 commit comments