in PetAdoptions/payforadoption-go/payforadoption/service.go [51:81]
func (s service) CompleteAdoption(ctx context.Context, petId, petType string) (Adoption, error) {
logger := log.With(s.logger, "method", "CompleteAdoption")
uuid, _ := uuid.NewV4()
a := Adoption{
TransactionID: uuid.String(),
PetID: petId,
PetType: petType,
AdoptionDate: time.Now(),
}
// Introduce memory leaks for pettype bunnies. Sorry bunnies :)
if petType == "bunny" {
if s.repository.ErrorModeOn(ctx) {
level.Error(logger).Log("errorMode", "On")
memoryLeak()
return a, errors.New("Illegal memory allocation")
} else {
level.Error(logger).Log("errorMode", "Off")
}
}
if err := s.repository.CreateTransaction(ctx, a); err != nil {
level.Error(logger).Log("err", err)
return Adoption{}, err
}
err := s.repository.UpdateAvailability(ctx, a)
return a, err
}