call: fail requests that do not close transaction
Currently, if a CALL/EVAL request leaves an open transaction at return, we silently rollback it and print a warning to the log mentioning the function name or eval expression to facilitate further debugging. After issue #946 was fixed, we can't do that anymore, because request input, which stores CALL/EVAL parameters, may be discarded before request completion and hence be unavailable for logging. Without additional information pointing at the culprit, the log message is pointless (see issue #1100). We could copy the arguments, but that would slow down CALL execution, which can't be justified solely by the need of verbose logging. So let's stop being lenient and fail requests that do not close transaction at return. This should encourage negligent users to finally fix their code. Follow-up #946
Showing
- src/box/call.c 4 additions, 9 deletionssrc/box/call.c
- src/box/errcode.h 1 addition, 1 deletionsrc/box/errcode.h
- src/box/iproto.cc 1 addition, 0 deletionssrc/box/iproto.cc
- test/box/misc.result 25 additions, 24 deletionstest/box/misc.result
- test/box/net.box.result 12 additions, 0 deletionstest/box/net.box.result
- test/box/net.box.test.lua 5 additions, 0 deletionstest/box/net.box.test.lua
- test/box/transaction.result 0 additions, 27 deletionstest/box/transaction.result
- test/box/transaction.test.lua 0 additions, 11 deletionstest/box/transaction.test.lua
Loading
Please register or sign in to comment