diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f8a972f1cde0984d17f83b95658b0a47f0996f1..e2a37fafcef704cf6bd3aa27c683ecf8d74de409 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project are documented below. The format is based on [keep a changelog](http://keepachangelog.com) and this project uses [semantic versioning](http://semver.org). ## [Unreleased] +### Changed +- Improved error handling in Lua runtime custom SQL function calls. ## [2.1.2] - 2018-10-25 ### Added diff --git a/server/runtime_lua_nakama.go b/server/runtime_lua_nakama.go index 78f3e4529c99fa1ed128e87ad0c5b6edea223c8f..4923000aaf080cdff105a160464c4f08eb22f237 100644 --- a/server/runtime_lua_nakama.go +++ b/server/runtime_lua_nakama.go @@ -494,7 +494,12 @@ func (n *RuntimeLuaNakamaModule) sqlExec(l *lua.LState) int { } } - result, err := n.db.ExecContext(l.Context(), query, params...) + var result sql.Result + var err error + err = ExecuteRetryable(func() error { + result, err = n.db.ExecContext(l.Context(), query, params...) + return err + }) if err != nil { l.RaiseError("sql exec error: %v", err.Error()) return 0 @@ -526,7 +531,12 @@ func (n *RuntimeLuaNakamaModule) sqlQuery(l *lua.LState) int { } } - rows, err := n.db.QueryContext(l.Context(), query, params...) + var rows *sql.Rows + var err error + err = ExecuteRetryable(func() error { + rows, err = n.db.QueryContext(l.Context(), query, params...) + return err + }) if err != nil { l.RaiseError("sql query error: %v", err.Error()) return 0