// updateForBatch updates the first argument (the header of a request contained // in a batch) from the second one (the batch header), returning an error when // inconsistencies are found. // It is checked that the individual call does not have a User, UserPriority // or Txn set that differs from the batch's. func updateForBatch(aHeader *proto.RequestHeader, bHeader proto.RequestHeader) error { // Disallow transaction, user and priority on individual calls, unless // equal. if aHeader.User != "" && aHeader.User != bHeader.User { return util.Error("conflicting user on call in batch") } if aPrio := aHeader.GetUserPriority(); aPrio != proto.Default_RequestHeader_UserPriority && aPrio != bHeader.GetUserPriority() { return util.Error("conflicting user priority on call in batch") } if aHeader.Txn != nil && !aHeader.Txn.Equal(bHeader.Txn) { return util.Error("conflicting transaction in transactional batch") } aHeader.User = bHeader.User aHeader.UserPriority = bHeader.UserPriority aHeader.Txn = bHeader.Txn return nil }