Netflix/Hystrix · error · java.lang.UnsupportedOperationException

Not implemented anymore. Will be implemented in a new class

Error message

Not implemented anymore.  Will be implemented in a new class shortly

What it means

SerialHystrixUtilization.toBytes(HystrixUtilization) is a deprecated stub whose entire body is 'throw new UnsupportedOperationException(...)'. HystrixUtilization snapshots command and thread-pool concurrency (activeCount, queueSize) for the utilization stream; in the 1.5.x serialization refactor its wire format became JSON (see the implemented toJsonString and writeThreadPoolUtilizationJson helpers in the same file), and the binary encoder was removed pending a replacement class that never arrived.

Source

Thrown at hystrix-serialization/src/main/java/com/netflix/hystrix/serial/SerialHystrixUtilization.java:38

import com.netflix.hystrix.HystrixThreadPoolKey;
import com.netflix.hystrix.metric.sample.HystrixCommandUtilization;
import com.netflix.hystrix.metric.sample.HystrixThreadPoolUtilization;
import com.netflix.hystrix.metric.sample.HystrixUtilization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.StringWriter;
import java.nio.ByteBuffer;
import java.util.Map;

public class SerialHystrixUtilization extends SerialHystrixMetric {

    private final static Logger logger = LoggerFactory.getLogger(SerialHystrixUtilization.class);

    @Deprecated
    public static byte[] toBytes(HystrixUtilization utilization) {
        throw new UnsupportedOperationException("Not implemented anymore.  Will be implemented in a new class shortly");
    }

    public static String toJsonString(HystrixUtilization utilization) {
        StringWriter jsonString = new StringWriter();

        try {
            JsonGenerator json = jsonFactory.createGenerator(jsonString);

            serializeUtilization(utilization, json);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

        return jsonString.getBuffer().toString();
    }

    private static void serializeUtilization(HystrixUtilization utilization, JsonGenerator json) {
        try {

View on GitHub (pinned to 5ce3bc58c3)

Solutions

  1. Use SerialHystrixUtilization.toJsonString(utilization) and publish the JSON string (or its UTF-8 bytes).
  2. If the transport needs byte[], wrap the JSON: toJsonString(utilization).getBytes(StandardCharsets.UTF_8).
  3. Audit the publisher for the sibling stub fromByteBuffer(ByteBuffer) in the same class (line 84) and the equivalent stubs in SerialHystrixConfiguration/SerialHystrixDashboardData/SerialHystrixRequestEvents — migrate them together.
  4. Make scheduled publisher tasks log-and-continue on exceptions so an API stub like this is visible immediately, not after noticing missing data.

Example fix

// before
byte[] frame = SerialHystrixUtilization.toBytes(utilization);

// after
byte[] frame = SerialHystrixUtilization.toJsonString(utilization)
        .getBytes(java.nio.charset.StandardCharsets.UTF_8);
Defensive patterns

Strategy: try-catch

Validate before calling

// Publisher-side check before emitting a utilization frame.
static byte[] frame(HystrixUtilization utilization) {
    return SerialHystrixUtilization.toJsonString(utilization)
            .getBytes(java.nio.charset.StandardCharsets.UTF_8); // only implemented path
}

Try / catch

try {
    frame = SerialHystrixUtilization.toBytes(utilization);
} catch (UnsupportedOperationException e) {
    frame = SerialHystrixUtilization.toJsonString(utilization)
            .getBytes(java.nio.charset.StandardCharsets.UTF_8);
}

Prevention

When it happens

Trigger: Invoking SerialHystrixUtilization.toBytes(utilization), typically from a custom metrics publisher that ships utilization snapshots as byte frames to a collector. The method exists on the public API surface, so the code compiles and then throws on the first utilization tick (these publishers usually run on a scheduled thread, so the exception appears in scheduled-task logs).

Common situations: Upgrading a monitoring/publisher integration from Hystrix 1.4.x to 1.5.x; reusing Netflix-era example publishers (metric-publisher samples) that chose byte[] for compactness; a scheduler swallowing the exception and silently producing no utilization data, making the failure look like a metrics outage rather than an API error.

Related errors


AI-assisted analysis of Netflix/Hystrix@5ce3bc58c3 (2026-08-14). Data as JSON: /api/errors/7073c3d8f9fb8b67. Report an issue: GitHub.