-
-
Couldn't load subscription status.
- Fork 1.7k
Description
Go version
go version go1.23.4 windows/amd64
GoFrame version
v2.9.0
Can this bug be reproduced with the latest release?
Option Yes
What did you do?
我在下面附上调用栈。
我现在正在使用ClickHouse,在数据库里设置了int128,使用*big.Int赋值给了do对象。
当big.nat.bytes里出现了panic("math/big: buffer too small to fit value")后,在Insert调用处未能得到error,也未能捕获到panic。程序就在insert处阻塞了。
这里要特别说明下:应该是传入的真实的数值(*big.Int)大于了int128。使得越界了。我将数据库类型改为Int256时未出现这个问题。
runtime.gopark (c:\Go\src\runtime\proc.go:425)
runtime.goparkunlock (c:\Go\src\runtime\proc.go:430)
runtime.semacquire1 (c:\Go\src\runtime\sema.go:178)
sync.runtime_SemacquireRWMutex (c:\Go\src\runtime\sema.go:105)
sync.(*RWMutex).Lock (c:\Go\src\sync\rwmutex.go:153)
sql.(*Tx).Commit (c:\Go\src\database\sql\sql.go:2300)
gdb.(*Core).DoCommit (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\database\gdb\gdb_core_underlying.go:202)
v2.(*Driver).DoCommit (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\contrib\drivers\clickhouse\v2\clickhouse_do_commit.go:18)
gdb.(*DriverWrapperDB).DoCommit (未知源:1)
gdb.(*TXCore).Commit (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\database\gdb\gdb_core_txcore.go:95)
v2.(*Driver).DoInsert.func1 (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\contrib\drivers\clickhouse\v2\clickhouse_do_insert.go:46)
runtime.gopanic (c:\Go\src\runtime\panic.go:785)
trace.(*recordingSpan).End.deferwrap1 (d:\MyProjects\chain\GoServer\vendor\go.opentelemetry.io\otel\sdk\trace\span.go:467)
runtime.deferreturn (c:\Go\src\runtime\panic.go:605)
trace.(*recordingSpan).End (d:\MyProjects\chain\GoServer\vendor\go.opentelemetry.io\otel\sdk\trace\span.go:500)
gdb.(*Core).DoCommit.deferwrap1 (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\database\gdb\gdb_core_underlying.go:172)
runtime.gopanic (c:\Go\src\runtime\panic.go:785)
big.nat.bytes (c:\Go\src\math\big\nat.go:1305)
big.(*Int).FillBytes (c:\Go\src\math\big\int.go:535)
column.bigIntToRaw (d:\MyProjects\chain\GoServer\vendor\github.com\ClickHouse\clickhouse-go\v2\lib\column\bigint.go:241)
column.(*BigInt).append (d:\MyProjects\chain\GoServer\vendor\github.com\ClickHouse\clickhouse-go\v2\lib\column\bigint.go:198)
column.(*BigInt).AppendRow (d:\MyProjects\chain\GoServer\vendor\github.com\ClickHouse\clickhouse-go\v2\lib\column\bigint.go:129)
proto.(*Block).Append (d:\MyProjects\chain\GoServer\vendor\github.com\ClickHouse\clickhouse-go\v2\lib\proto\block.go:66)
v2.(*batch).Append (d:\MyProjects\chain\GoServer\vendor\github.com\ClickHouse\clickhouse-go\v2\conn_batch.go:143)
v2.(*stdBatch).Exec (d:\MyProjects\chain\GoServer\vendor\github.com\ClickHouse\clickhouse-go\v2\clickhouse_std.go:400)
v2.(*stdBatch).ExecContext (d:\MyProjects\chain\GoServer\vendor\github.com\ClickHouse\clickhouse-go\v2\clickhouse_std.go:412)
sql.ctxDriverStmtExec (c:\Go\src\database\sql\ctxutil.go:65)
sql.resultFromStatement (c:\Go\src\database\sql\sql.go:2672)
sql.(*Stmt).ExecContext.func1 (c:\Go\src\database\sql\sql.go:2646)
sql.(*DB).retry (c:\Go\src\database\sql\sql.go:1568)
sql.(*Stmt).ExecContext (c:\Go\src\database\sql\sql.go:2640)
gdb.(*Core).DoCommit (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\database\gdb\gdb_core_underlying.go:238)
v2.(*Driver).DoCommit (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\contrib\drivers\clickhouse\v2\clickhouse_do_commit.go:18)
gdb.(*DriverWrapperDB).DoCommit (未知源:1)
gdb.(*Stmt).ExecContext (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\database\gdb\gdb_statement.go:33)
v2.(*Driver).DoInsert (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\contrib\drivers\clickhouse\v2\clickhouse_do_insert.go:66)
gdb.(*DriverWrapperDB).DoInsert (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\database\gdb\gdb_driver_wrapper_db.go:120)
gdb.(*HookInsertInput).Next (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\database\gdb\gdb_model_hook.go:199)
gdb.(*Model).doInsertWithOption (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\database\gdb\gdb_model_insert.go:342)
gdb.(*Model).Save (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\database\gdb\gdb_model_insert.go:249)
gdb.(*Model).Save (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\database\gdb\gdb_model_insert.go:247)
chain.(*sChain).SubscribeEventAndSave.func2 (d:\MyProjects\chain\GoServer\app\swaps\internal\logic\chain\chain.go:609)
gutil.Try (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\util\gutil\gutil_try_catch.go:36)
g.Try (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\frame\g\g_func.go:87)
chain.(*sChain).SubscribeEventAndSave.func3 (d:\MyProjects\chain\GoServer\app\swaps\internal\logic\chain\chain.go:669)
gutil.Try (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\util\gutil\gutil_try_catch.go:36)
gutil.TryCatch (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\util\gutil\gutil_try_catch.go:49)
gutil.Go.gowrap1 (d:\MyProjects\chain\GoServer\vendor\github.com\gogf\gf\v2\util\gutil\gutil_goroutine.go:28)
runtime.goexit (c:\Go\src\runtime\asm_amd64.s:1700)
What did you see happen?
调用Insert后,阻塞了,并未得到任何返回。
What did you expect to see?
期望:Insert能正常返回,并带上相关error.