From 8ce3a870206d74685b75a914595ea4e4f8eea7d3 Mon Sep 17 00:00:00 2001 From: allanwei Date: Wed, 9 Jun 2021 17:02:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BA=86=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E7=9A=84=E8=87=AA=E5=8A=A8=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E7=9A=84=E8=BF=87=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- container/NewTransactionBroker.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/container/NewTransactionBroker.go b/container/NewTransactionBroker.go index e76c54f..2123624 100644 --- a/container/NewTransactionBroker.go +++ b/container/NewTransactionBroker.go @@ -55,10 +55,22 @@ func (broker *NewTransactionBroker) Call(in []reflect.Value) []reflect.Value { } out := broker.caller(in) lastReturnValue := out[len(out)-1] - if lastReturnValue.Kind() == reflect.Invalid { - if err := transactionHandler.Commit(); err != nil { - // Todo Log - return []reflect.Value{reflect.ValueOf(err)} + switch lastReturnValue.Kind() { + case reflect.Invalid: + { + if err := transactionHandler.Commit(); err != nil { + // Todo Log + return []reflect.Value{reflect.ValueOf(err)} + } + } + case reflect.Interface: + { + if lastReturnValue.Type() == errorType && lastReturnValue.IsNil() { + if err := transactionHandler.Commit(); err != nil { + // Todo Log + return []reflect.Value{reflect.ValueOf(err)} + } + } } } return out