package trace import ( "crypto/rand" "encoding/base64" "strings" "github.com/zrepl/zrepl/util/envconst" ) var genIdNumBytes = envconst.Int("ZREPL_TRACE_ID_NUM_BYTES", 3) func init() { if genIdNumBytes < 1 { panic("trace node id byte length must be at least 1") } } func genID() string { var out strings.Builder enc := base64.NewEncoder(base64.RawStdEncoding, &out) buf := make([]byte, genIdNumBytes) _, err := rand.Read(buf) if err != nil { panic(err) } n, err := enc.Write(buf[:]) if err != nil || n != len(buf) { panic(err) } if err := enc.Close(); err != nil { panic(err) } return out.String() }