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

  1. Increase the serviceUid lookup timeout in collector configuration
  2. Check health/latency of the storage backing the uid lookup
  3. Retry the request; warm the uid cache so lookups hit without roundtrip
  4. 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

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.

Related errors


AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07). Data as JSON: /api/errors/77aae01c73d414d7. Report an issue: GitHub.