{"record":{"id":"424d1a486c0b4c69","repo":"Netflix/Hystrix","slug":"not-an-event-that-can-be-converted-to-hystrixevent","errorCode":null,"errorMessage":"Not an event that can be converted to HystrixEventType : {event}","messagePattern":"Not an event that can be converted to HystrixEventType : (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"hystrix-core/src/main/java/com/netflix/hystrix/HystrixEventType.java","lineNumber":80,"sourceCode":"            case SUCCESS: return SUCCESS;\n            case FAILURE: return FAILURE;\n            case TIMEOUT: return TIMEOUT;\n            case SHORT_CIRCUITED: return SHORT_CIRCUITED;\n            case THREAD_POOL_REJECTED: return THREAD_POOL_REJECTED;\n            case SEMAPHORE_REJECTED: return SEMAPHORE_REJECTED;\n            case FALLBACK_EMIT: return FALLBACK_EMIT;\n            case FALLBACK_SUCCESS: return FALLBACK_SUCCESS;\n            case FALLBACK_FAILURE: return FALLBACK_FAILURE;\n            case FALLBACK_REJECTION: return FALLBACK_REJECTION;\n            case FALLBACK_DISABLED: return FALLBACK_DISABLED;\n            case FALLBACK_MISSING: return FALLBACK_MISSING;\n            case EXCEPTION_THROWN: return EXCEPTION_THROWN;\n            case RESPONSE_FROM_CACHE: return RESPONSE_FROM_CACHE;\n            case COLLAPSED: return COLLAPSED;\n            case BAD_REQUEST: return BAD_REQUEST;\n            case COMMAND_MAX_ACTIVE: return COMMAND_MAX_ACTIVE;\n            default:\n                throw new RuntimeException(\"Not an event that can be converted to HystrixEventType : \" + event);\n        }\n    }\n\n    /**\n     * List of events that throw an Exception to the caller\n     */\n    public final static List<HystrixEventType> EXCEPTION_PRODUCING_EVENT_TYPES = new ArrayList<HystrixEventType>();\n\n    /**\n     * List of events that are terminal\n     */\n    public final static List<HystrixEventType> TERMINAL_EVENT_TYPES = new ArrayList<HystrixEventType>();\n\n    static {\n        EXCEPTION_PRODUCING_EVENT_TYPES.add(BAD_REQUEST);\n        EXCEPTION_PRODUCING_EVENT_TYPES.add(FALLBACK_FAILURE);\n        EXCEPTION_PRODUCING_EVENT_TYPES.add(FALLBACK_DISABLED);\n        EXCEPTION_PRODUCING_EVENT_TYPES.add(FALLBACK_MISSING);","sourceCodeStart":62,"sourceCodeEnd":98,"githubUrl":"https://github.com/Netflix/Hystrix/blob/5ce3bc58c38e7ca60ef2fe0e516e390e294ad941/hystrix-core/src/main/java/com/netflix/hystrix/HystrixEventType.java#L62-L98","documentation":"HystrixEventType.from(HystrixRollingNumberEvent) converts internal rolling-number metrics events into command event types; the switch has no default mapping for events outside the command domain (thread-pool, collapser, or counters such as EMIT), so it throws RuntimeException('Not an event that can be converted to HystrixEventType : <event>').","triggerScenarios":"Internal/metrics code calling HystrixEventType.from() with a HystrixRollingNumberEvent like THREAD_EXECUTION, THREAD_POOL_REJECTED, COLLAPSER_BATCH, or a counter-only event (EMIT, COMMAND_MAX_ACTIVE handling aside) that has no command-type counterpart.","commonSituations":"Almost exclusively a Hystrix-internal or custom-metrics-publisher bug — normal application usage cannot reach it; seen when writing custom HystrixMetricsPublisher/HystrixEventNotifier code that feeds rolling-number events into the wrong converter.","solutions":["Route thread-pool events through HystrixEventType.ThreadPool.from() and collapser events through HystrixEventType.Collapser.from() instead","Filter events before conversion (skip counters/EMIT events that have no command mapping)","If writing a custom metrics consumer, unit-test the full HystrixRollingNumberEvent enum against your converter"],"exampleFix":"// before\nHystrixEventType t = HystrixEventType.from(event); // throws for THREAD_EXECUTION\n// after\nHystrixEventType t = (event == HystrixRollingNumberEvent.THREAD_EXECUTION)\n    ? HystrixEventType.ThreadPool.from(event) == HystrixEventType.ThreadPool.EXECUTED ? HystrixEventType.SUCCESS : null\n    : HystrixEventType.from(event);","handlingStrategy":"validation","validationCode":"// only command-domain rolling events are convertible\nstatic boolean isCommandEvent(HystrixRollingNumberEvent e) {\n  switch (e) { case SUCCESS: case FAILURE: case TIMEOUT: case SHORT_CIRCUITED:\n    case THREAD_POOL_REJECTED: case SEMAPHORE_REJECTED: case BAD_REQUEST:\n    case FALLBACK_SUCCESS: case FALLBACK_FAILURE: case FALLBACK_REJECTION:\n    case FALLBACK_DISABLED: case FALLBACK_MISSING: case EXCEPTION_THROWN:\n    case RESPONSE_FROM_CACHE: case COLLAPSED: case FALLBACK_EMIT: case COMMAND_MAX_ACTIVE:\n      return true; default: return false; } }","typeGuard":"null","tryCatchPattern":"Not intended to be caught — restrict inputs so from() never receives a foreign event type.","preventionTips":["Branch on event category (command/threadpool/collapser) before converting","Unit-test converters against the whole HystrixRollingNumberEvent enum"],"tags":["java","hystrix","metrics","enum-conversion","internal"],"backgroundTag":null,"analyzedSha":"5ce3bc58c38e7ca60ef2fe0e516e390e294ad941","analyzedAt":"2026-08-14T10:55:35.600Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}