pinpoint-apm/pinpoint · error · UidException
Timed out while getting serviceUid. serviceName:${serviceNam
Error message
Timed out while getting serviceUid. serviceName:${serviceName} What it means
ServiceUidSuppliers.get blocks on a Future supplying the serviceUid; on TimeoutException it wraps the failure in a UidException with 'Timed out while getting serviceUid. serviceName:<name>'. The serviceUid lookup (typically a cache/DB roundtrip) did not complete within the allotted time.
Source
Thrown at collector/src/main/java/com/navercorp/pinpoint/io/request/ServiceUidSuppliers.java:85
return String.valueOf(future.getNow(null));
} catch (RuntimeException e) {
return "ERROR";
}
}
}
private static ServiceUid get(String serviceName, CompletableFuture<ServiceUid> future, long timeout, TimeUnit unit) {
try {
ServiceUid serviceUid = future.get(timeout, unit);
if (serviceUid == null) {
throw new UidNotFoundException(serviceName);
}
return serviceUid;
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new UidException("Interrupted while getting serviceUid. serviceName:" + serviceName, e);
} catch (TimeoutException e) {
throw new UidException("Timed out while getting serviceUid. serviceName:" + serviceName, e);
} catch (ExecutionException e) {
Throwable cause = e.getCause();
if (cause instanceof UidException uidException) {
throw uidException;
}
throw new UidException("Failed to get serviceUid. serviceName:" + serviceName, cause);
}
}
}
View on GitHub (pinned to 744c3d3075)
Solutions
- Increase the serviceUid lookup timeout in collector configuration
- Check health/latency of the storage backing the uid lookup
- Retry the request; warm the uid cache so lookups hit without roundtrip
- Investigate thread pool exhaustion for the async lookup
Defensive patterns
Strategy: retry
Validate before calling
long timeoutMs = 5000; // ensure the configured timeout covers cold cache misses
Try / catch
try { return supplier.get(serviceName); } catch (UidException e) { if (e.getCause() instanceof TimeoutException) { return supplier.get(serviceName); } throw e; } Prevention
- Size the lookup timeout above worst-case storage latency
- Warm the serviceUid cache after collector restart
- Monitor storage latency and alert before timeouts occur
When it happens
Trigger: get(serviceName) invoked while the underlying serviceUid async lookup exceeds the configured timeout — slow metadata storage, network latency, or an oversized request burst.
Common situations: Pinot/DB backing the uid cache is slow or unreachable; timeout configured too aggressively for cold-start cache misses; collector under heavy agent registration load.
Understand the failure class
Background: Request timed out: what client-side request timeouts mean across libraries (Request timed out, TIMED_OUT, APITimeoutError) — this error's family across 39 libraries.
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
Related errors
- Failed to get serviceUid. serviceName:${serviceName}
- %s load fail Caused by:%s
- J9BootLoader create fail Caused by:
- initialize fail Caused by:
- invoke fail Caused by:
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/77aae01c73d414d7.
Report an issue: GitHub.