func()

in tcc/fence/service/service.go [67:92]


func (T TestTCCServiceBusiness) Prepare(ctx context.Context, params interface{}) (b bool, err error) {
	db, err := sql.Open(DriverName, Url)
	if err != nil {
		return false, fmt.Errorf("database connect failed, msg :%s", err.Error())
	}
	defer db.Close()
	tx, err := db.Begin()
	if err != nil {
		return false, fmt.Errorf("transaction begin failed, msg :%s", err.Error())
	}

	defer func() {
		if err != nil {
			err = fmt.Errorf("business method throw error: %s, rollback result: %s", err, tx.Rollback())
			return
		}
		b, err = true, tx.Commit()
	}()

	err = fence.WithFence(ctx, tx, func() error {
		log.Infof("TestTCCServiceBusiness Prepare, param %v", params)
		return nil
	})

	return
}