| Previous | Next |
| hrFileClose | hrTooManyIO |
hrOutOfThreads
State represented by this code
hrOutOfThreads means ESE could not start a worker thread needed by the requested operation.
The stored value is 0xC8000067 (negative JET error -103; -103). Current ESE documentation uses JET_errOutOfThreads for the corresponding published JET condition.
The first useful distinction is that this is not a generic busy indication like hrTooManyIO and not necessarily an ESE memory-cache limit. Start by measuring process thread count, system commit, thread creation failures, stack reservation, and the workload phase requesting the worker.
Data for a reproducible incident
- Code-specific observation: measure process thread count, system commit, thread creation failures, stack reservation, and the workload phase requesting the worker.
Objects and state involved
| Diagnostic layer | operating-system file, thread, and asynchronous-I/O resources used by ESE |
|---|---|
| Relevant API surface | database/log file I/O, worker creation, backup reads, and background tasks |
| Code-specific condition | ESE could not start a worker thread needed by the requested operation |
| Narrow corrective direction | remove thread leaks or excessive concurrency and retry only after thread capacity is demonstrably available |
The first lower-level Win32 error is more useful than later cascading ESE failures. Resource exhaustion should be measured at the moment of failure, before retries alter counts.
Actions that can make diagnosis worse
- Do not discard a close or flush error during cleanup.
- Do not create unbounded retries under resource pressure.
Nearby ESE or AD backup states
It specifically means that this is not a generic busy indication like hrTooManyIO and not necessarily an ESE memory-cache limit. Related values below can appear in the same workflow but require a different response:
hrFileClose | ESE could not complete the operating-system close of a database, log, temporary, or backup file |
|---|---|
hrTooManyIO | the engine reached its outstanding-I/O throttle and refused to queue more storage work |
hrBadLogSignature | a transaction log header signature does not match the expected log sequence |
Next actions
- Record it,
0xC8000067, the API name, the current phase, and all live context or file owners. - Verify the condition by measuring process thread count, system commit, thread creation failures, stack reservation, and the workload phase requesting the worker.
- Apply only the targeted fix: remove thread leaks or excessive concurrency and retry only after thread capacity is demonstrably available.
Acceptance criteria for a fix
A useful regression test should force the condition “ESE could not start a worker thread needed by the requested operation”, call one documented API transition, and assert the exact HRESULT.
Technical references
- ESE error-code table — API ordering, file semantics, warning/error interpretation, or recovery behavior relevant to this HRESULT.
- ESE files
- Open-source ESE implementation
- Microsoft JET_ERR enumeration
Looking for a different code? Search another status or error code.