When both short-circuit read and SASL on DataTransferProtocol are enabled, the server side tries to negotiate SASL on the operation to allocate a new shared memory slot. However, the transport for this operation is the Unix domain socket (not TCP), and the client always assumes that Unix domain socket traffic is trustworthy. The end result is that the server side still attempts SASL negotiation, and it fails with an exception while erroneously trying to parse the domain socket address as if it were a network address. The read succeeds, but only because we fallback to a read through the DataNode TCP server. It's not a short-circuit read.