hyperledger/fabric · error

unknown message type: %T, message: %+v

Error message

unknown message type: %T, message: %+v

What it means

The deliver response carried a message type the receiver has no case for (neither Status nor Block): an unknown or newer DeliverResponse variant, indicating a protobuf/protocol version mismatch with the orderer.

Source

Thrown at common/deliverclient/blocksprovider/block_receiver.go:171

			configEnv, err := deliverclient.ConfigFromBlock(t.Block)
			if err != nil {
				return 0, nil, errors.WithMessagef(err, "failed to extract channel-config from config block [%d] from orderer [%s]", blockNum, br.endpoint.String())
			}

			channelConfig = configEnv.GetConfig()
			br.logger.Debugf("channel config: %+v", channelConfig)

			if err := br.updatableBlockVerifier.UpdateConfig(t.Block); err != nil {
				return 0, nil, errors.WithMessagef(err, "config block [%d] from orderer [%s] failed to update block verifier", blockNum, br.endpoint.String())
			}
			br.logger.Infof("Updated config block %d", blockNum)
		}

		br.updatableBlockVerifier.UpdateBlockHeader(t.Block)

		return blockNum, channelConfig, nil
	default:
		return 0, nil, errors.Errorf("unknown message type: %T, message: %+v", t, msg)
	}
}

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Align peer/deliverclient and orderer Fabric versions
  2. Reconnect to an orderer running a compatible protos package
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at common/deliverclient/blocksprovider/block_receiver.go:171 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04). Data as JSON: /api/errors/efe46f1ae3ba3588. Report an issue: GitHub.