# rpc error: code = DataLoss desc = message checksum mismatch

- **ID:** `go/grpc-data-loss-corruption`
- **Domain:** go
- **Category:** network_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

The gRPC message was corrupted during transmission, causing checksum verification to fail.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 1.56.x | active | — | — |
| 1.57.x | active | — | — |

## Workarounds

1. **** (95% success)
   ```
   creds := credentials.NewClientTLSFromCert(certPool, ""); conn, err := grpc.Dial(address, grpc.WithTransportCredentials(creds))
   ```
2. **** (90% success)
   ```
   req := &pb.Request{Data: data, Checksum: sha256.Sum256(data)}; server verifies checksum
   ```
3. **** (85% success)
   ```
   backoff := grpc.Backoff{MaxDelay: 5 * time.Second}; conn, err := grpc.Dial(address, grpc.WithConnectParams(grpc.ConnectParams{Backoff: backoff}))
   ```

## Dead Ends

- **Retrying the same request without checks.** — Corruption may be transient but same data may fail again. (70% fail)
- **Turning off checksum checking.** — Data integrity risk. (80% fail)
- **Blaming server for incorrect checksum.** — Network issues are common cause. (50% fail)
