Highlights
This release focuses on transport resilience and dependency upgrades. A new reset() method provides manual recovery from stuck transport connections, gRPC keep-alive detects dead connections early, and DNS re-resolution enables automatic recovery from load-balancer IP rotation.
What's New
🔄 Connection Reset
The SDK now supports a reset() method for manual transport recovery. When the underlying gRPC connection becomes permanently stuck (e.g. TLS handshake to a wrong backend, persistent UNAVAILABLE after retries), reset() discards the bad connection and immediately establishes a fresh one:
SpiceClient client = SpiceClient.builder()
.withApiKey(API_KEY)
.withSpiceCloud()
.build();
try {
try (FlightStream stream = client.query(sql)) {
// process results...
}
} catch (ExecutionException e) {
if (isTransportFailure(e.getCause())) {
client.reset(); // discard bad transport, reconnect immediately
try (FlightStream stream = client.query(sql)) {
// process results with fresh connection...
}
} else {
throw e;
}
}Key behaviors:
- Thread-safe (
synchronized) — concurrent reset calls are serialized - Idempotent — safe to call multiple times
- Throws
IllegalStateExceptionif client is already closed - Resets both Flight and ADBC connections
🏥 gRPC Keep-Alive
HTTP/2 keep-alive pings are now enabled by default to detect dead connections quickly:
- Keep-alive interval: 30 seconds
- Keep-alive timeout: 10 seconds
- Keep-alive without calls: enabled (pings even when idle)
🌐 DNS Re-Resolution
The SDK now uses dns:/// target resolution for gRPC channels, enabling periodic hostname re-resolution. This allows clients to automatically recover from load-balancer IP rotation (e.g. AWS NLB) without manual intervention.
DNS cache TTL: For more aggressive DNS refresh (recommended for cloud-deployed clients), set the JVM property:
-Dnetworkaddress.cache.ttl=30🛡️ Lazy Transport Recovery
A new ensureFlightClient() safety net automatically rebuilds the Flight client if the internal reference is null at query time, adding an extra layer of resilience.
⬆️ Updated Dependencies
| Dependency | Previous | Current |
|---|---|---|
| Apache Arrow Flight SQL | 18.3.0 | 19.0.0 |
| Apache Arrow ADBC Driver Flight SQL | 0.21.0 | 0.22.0 |
| Apache Arrow ADBC Core | 0.21.0 | 0.22.0 |
| Gson | 2.13.1 | 2.13.2 |
| Netty | 4.1.130.Final | 4.2.12.Final |
🔧 Updated Build Plugins
| Plugin | Previous | Current |
|---|---|---|
| maven-surefire-plugin | 3.5.4 | 3.5.5 |
| maven-source-plugin | 3.3.1 | 3.4.0 |
| central-publishing-maven-plugin | 0.9.0 | 0.10.0 |
| spotbugs-maven-plugin | 4.9.3.0 | 4.9.8.2 |
| dependency-check-maven | 12.1.1 | 12.2.0 |
| jacoco-maven-plugin | 0.8.13 | 0.8.14 |
| maven-enforcer-plugin | 3.5.0 | 3.6.2 |