func (tm *TransactionManager) AbortTransaction(id, connectionID string) error {
	internalTxId := internalTxId(id, connectionID)
	_, ok := tm.transactions[internalTxId]

	if ok {
		delete(tm.transactions, internalTxId)
	} else {
		return errors.New("no such transaction found")
	}

	log.Printf("client %s: aborted transaction %s\n", connectionID, id)

	return nil
}
// AbortTransaction is called when the engine handles an ABORT frame
// it pulls the transaction by its ID and the client's ID and deletes it
AbortTransaction is called when the engine handles an ABORT frame
it pulls the transaction by its ID and the client's ID and deletes it
// AbortTransaction is called when the engine handles an ABORT frame // it pulls the transaction by its ID and the client ' s ID and deletes it
func (tm *TransactionManager) AbortTransaction(id, connectionID string) error {
	internalTxId := internalTxId(id, connectionID)
	_, ok := tm.transactions[internalTxId]
	if ok {
		delete(tm.transactions, internalTxId)
	} else {
		return errors.New("no such transaction found")
	}
	log.Printf("client %s: aborted transaction %s\n", connectionID, id)
	return nil
}
func ( tm * TransactionManager ) AbortTransaction ( id , connectionID string ) error { internalTxId := internalTxId ( id , connectionID ) _ , ok := tm . transactions [ internalTxId ] if ok { delete ( tm . transactions , internalTxId ) } else { return errors . New ( " " ) } log . Printf ( " \n " , connectionID , id ) return nil }
AbortTransaction is called when the engine handles an ABORT frame
it pulls the transaction by its ID and the client's ID and deletes it
AbortTransaction is called when the engine handles an ABORT frame it pulls the transaction by its ID and the client ' s ID and deletes it