{"record":{"id":"93e7a4adf82dced0","repo":"Netflix/Hystrix","slug":"not-an-event-that-can-be-converted-to-hystrixevent-93e7a4","errorCode":null,"errorMessage":"Not an event that can be converted to HystrixEventType.ThreadPool : {event}","messagePattern":"Not an event that can be converted to HystrixEventType\\.ThreadPool : (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"hystrix-core/src/main/java/com/netflix/hystrix/HystrixEventType.java","lineNumber":116,"sourceCode":"        EXCEPTION_PRODUCING_EVENT_TYPES.add(FALLBACK_MISSING);\n        EXCEPTION_PRODUCING_EVENT_TYPES.add(FALLBACK_REJECTION);\n\n        for (HystrixEventType eventType: HystrixEventType.values()) {\n            if (eventType.isTerminal()) {\n                TERMINAL_EVENT_TYPES.add(eventType);\n            }\n        }\n    }\n\n    public enum ThreadPool {\n        EXECUTED, REJECTED;\n\n        public static ThreadPool from(HystrixRollingNumberEvent event) {\n            switch (event) {\n                case THREAD_EXECUTION: return EXECUTED;\n                case THREAD_POOL_REJECTED: return REJECTED;\n                default:\n                    throw new RuntimeException(\"Not an event that can be converted to HystrixEventType.ThreadPool : \" + event);\n            }\n        }\n\n        public static ThreadPool from(HystrixEventType eventType) {\n            switch (eventType) {\n                case SUCCESS: return EXECUTED;\n                case FAILURE: return EXECUTED;\n                case TIMEOUT: return EXECUTED;\n                case BAD_REQUEST: return EXECUTED;\n                case THREAD_POOL_REJECTED: return REJECTED;\n                default: return null;\n            }\n        }\n    }\n\n    public enum Collapser {\n        BATCH_EXECUTED, ADDED_TO_BATCH, RESPONSE_FROM_CACHE;\n","sourceCodeStart":98,"sourceCodeEnd":134,"githubUrl":"https://github.com/Netflix/Hystrix/blob/5ce3bc58c38e7ca60ef2fe0e516e390e294ad941/hystrix-core/src/main/java/com/netflix/hystrix/HystrixEventType.java#L98-L134","documentation":"HystrixEventType.ThreadPool.from(HystrixRollingNumberEvent) maps only THREAD_EXECUTION→EXECUTED and THREAD_POOL_REJECTED→REJECTED; any other HystrixRollingNumberEvent (command success/failure/timeout events, collapser events, counters) hits the default branch and throws RuntimeException('Not an event that can be converted to HystrixEventType.ThreadPool : <event>'). Note the sibling overload from(HystrixEventType) is lenient (returns null) — only the rolling-number overload throws.","triggerScenarios":"Calling HystrixEventType.ThreadPool.from() with a command-domain or collapser rolling-number event, e.g. SUCCESS, FAILURE, TIMEOUT, COLLAPSER_BATCH, EXCEPTION_THROWN.","commonSituations":"Custom metrics publishers or monitoring bridges that iterate all rolling-number events and feed each into the thread-pool converter; also code copied from Hystrix internal metrics consumers without the event-type filter.","solutions":["Pre-filter to THREAD_EXECUTION / THREAD_POOL_REJECTED before calling from(), or use switch dispatch on event category first","Use the lenient overload from(HystrixEventType) where a null return is acceptable","Unit-test your converter against every HystrixRollingNumberEvent value"],"exampleFix":"// before\nfor (HystrixRollingNumberEvent e : events) { HystrixEventType.ThreadPool.from(e); } // throws\n// after\nfor (HystrixRollingNumberEvent e : events) {\n  if (e == HystrixRollingNumberEvent.THREAD_EXECUTION || e == HystrixRollingNumberEvent.THREAD_POOL_REJECTED)\n    HystrixEventType.ThreadPool.from(e);\n}","handlingStrategy":"validation","validationCode":"static boolean isThreadPoolEvent(HystrixRollingNumberEvent e) {\n  return e == HystrixRollingNumberEvent.THREAD_EXECUTION || e == HystrixRollingNumberEvent.THREAD_POOL_REJECTED; }","typeGuard":"null","tryCatchPattern":"Not intended to be caught — pre-filter to the two mappable events.","preventionTips":["Feed only THREAD_EXECUTION/THREAD_POOL_REJECTED into ThreadPool.from()","Prefer the lenient from(HystrixEventType) overload when input types are uncertain"],"tags":["java","hystrix","metrics","thread-pool","enum-conversion"],"backgroundTag":null,"analyzedSha":"5ce3bc58c38e7ca60ef2fe0e516e390e294ad941","analyzedAt":"2026-08-14T10:55:35.600Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}