influxDB 2.1 panic: runtime error: integer divide by zero

部署运行你感兴趣的模型镜像

最近在搞influxDB 2.1,在导入数据的时候发生了以下错误:

ts=2022-08-01T09:00:13.829576Z lvl=error msg="a panic has occurred" log_id=0c1kFSR0000 handler=panic error="/api/v2/write?bucket=wind-power&org=wlw&precision=ns: runtime error: integer divide by zero" stacktrace="goroutine 643103 [running]:
runtime/debug.Stack()
/home/circleci/.tools/go/src/runtime/debug/stack.go:24 +0x65
github.com/influxdata/influxdb/v2/http.baseHandler.panic({{0x4058600, 0xc0082a9620}}, {0x4077400, 0xc02551a100}, 0x6, {0x3c52600, 0x53e34a0})
/home/circleci/go/src/github.com/influxdata/influxdb/http/router.go:96 +0x1b3
github.com/influxdata/httprouter.(*Router).recv(0xc01871b9e0, {0x4077400, 0xc02551a100}, 0xd)
/home/circleci/go/pkg/mod/github.com/influxdata/httprouter@v1.3.1-0.20191122104820-ee83e2772f69/router.go:361 +0x5e
panic({0x3c52600, 0x53e34a0})
/home/circleci/.tools/go/src/runtime/panic.go:1038 +0x215
github.com/influxdata/influxdb/v2/v1/services/meta.(*ShardGroupInfo).ShardFor(...)
/home/circleci/go/src/github.com/influxdata/influxdb/v1/services/meta/data.go:1439
github.com/influxdata/influxdb/v2/v1/coordinator.(*PointsWriter).MapShards(0xc000342680, 0xc00fec8658)
/home/circleci/go/src/github.com/influxdata/influxdb/v1/coordinator/points_writer.go:237 +0x678
github.com/influxdata/influxdb/v2/v1/coordinator.(*PointsWriter).WritePointsPrivileged(0xc000342680, {0x40a6bc0, 0xc02d742510}, {0xc0498765b0, 0x415f07}, {0x238fa4a, 0x3eadf80}, 0x1, {0xc01174c000, 0x21e2, ...})
/home/circleci/go/src/github.com/influxdata/influxdb/v1/coordinator/points_writer.go:361 +0x189
github.com/influxdata/influxdb/v2/v1/coordinator.(*PointsWriter).WritePoints(0xc00fec8748, {0x40a6bc0, 0xc02d742510}, {0xc0498765b0, 0x203009}, {0x238fa4a, 0x10100c02551a380}, 0x7f9804db8fa8, {0x40b92c8, 0xc02d742990}, ...)
/home/circleci/go/src/github.com/influxdata/influxdb/v1/coordinator/points_writer.go:340 +0x5c
github.com/influxdata/influxdb/v2/storage.(*Engine).WritePoints(0xc00026e300, {0x40a6bc0, 0xc02d742510}, 0xc02551a380, 0x0, {0xc01174c000, 0x21e2, 0x21e3})
/home/circleci/go/src/github.com/influxdata/influxdb/storage/engine.go:265 +0x204
github.com/influxdata/influxdb/v2/storage.(*LoggingPointsWriter).WritePoints(0xc06d5fafc0, {0x40a6bc0, 0xc02d742510}, 0x7484ec425f9b341a, 0xc01da74d3a, {0xc01174c000, 0x21e2, 0x21e3})
/home/circleci/go/src/github.com/influxdata/influxdb/storage/points_writer.go:38 +0xd1
github.com/influxdata/influxdb/v2/http.(*WriteHandler).handleWrite(0xc09a7580e0, {0x4077400, 0xc02551a100}, 0x10000c01c56bc28)
/home/circleci/go/src/github.com/influxdata/influxdb/http/write_handler.go:192 +0x54b
net/http.HandlerFunc.ServeHTTP(0x100000000000000, {0x4077400, 0xc02551a100}, 0x90)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/httprouter.(*Router).Handler.func1({0x4077400, 0xc02551a100}, 0x3c4d440, {0x0, 0x3b69c00, 0xc06d830cb0})
/home/circleci/go/pkg/mod/github.com/influxdata/httprouter@v1.3.1-0.20191122104820-ee83e2772f69/router.go:325 +0x2c4
github.com/influxdata/httprouter.(*Router).ServeHTTP(0xc01871b9e0, {0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/pkg/mod/github.com/influxdata/httprouter@v1.3.1-0.20191122104820-ee83e2772f69/router.go:453 +0x4c3
github.com/influxdata/influxdb/v2/http.(*WriteHandler).ServeHTTP(0xd, {0x4077400, 0xc02551a100}, 0x6f5a6f)
/home/circleci/go/src/github.com/influxdata/influxdb/http/write_handler.go:135 +0x27
github.com/go-chi/chi.(*Mux).Mount.func1({0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:298 +0x13b
net/http.HandlerFunc.ServeHTTP(0x3c2d5a0, {0x4077400, 0xc02551a100}, 0xc049876140)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/go-chi/chi.(*Mux).routeHTTP(0xc008396360, {0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:431 +0x1f9
net/http.HandlerFunc.ServeHTTP(0xc0835cbdd0, {0x4077400, 0xc02551a100}, 0xc00fec90b8)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/kit/transport/http.SetCORS.func1({0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:36 +0x308
net/http.HandlerFunc.ServeHTTP(0x0, {0x4077400, 0xc02551a100}, 0x203009)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/go-chi/chi/middleware.StripSlashes.func1({0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/middleware/strip.go:25 +0x102
net/http.HandlerFunc.ServeHTTP(0xc0835cbdd0, {0x4077400, 0xc02551a100}, 0x30)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/kit/transport/http.SkipOptions.func1({0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:81 +0xb9
net/http.HandlerFunc.ServeHTTP(0xc0835cbe90, {0x4077400, 0xc02551a100}, 0xc00fec9238)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/http.panicMW.func1.1({0x4077400, 0xc02551a100}, 0xc00fec92f0)
/home/circleci/go/src/github.com/influxdata/influxdb/http/router.go:126 +0x9b
net/http.HandlerFunc.ServeHTTP(0x90, {0x4077400, 0xc02551a100}, 0x1000000023dd680)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/go-chi/chi.(*Mux).ServeHTTP(0xc008396360, {0x4077400, 0xc02551a100}, 0xc0505e6f00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:70 +0x40e
github.com/influxdata/influxdb/v2/kit/feature.(*Handler).ServeHTTP(0xc04d9277c0, {0x4077400, 0xc02551a100}, 0xc0505e6e00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/feature/middleware.go:43 +0x3c2
github.com/influxdata/influxdb/v2/http.(*AuthenticationHandler).ServeHTTP(0xc09386de30, {0x4077400, 0xc02551a100}, 0xc0505e6d00)
/home/circleci/go/src/github.com/influxdata/influxdb/http/authentication_middleware.go:127 +0x467
github.com/influxdata/influxdb/v2/kit/transport/http.SetCORS.func1({0x4077400, 0xc02551a100}, 0xc0505e6d00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:36 +0x308
net/http.HandlerFunc.ServeHTTP(0xc0835cbdd0, {0x4077400, 0xc02551a100}, 0xc049876141)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/kit/transport/http.SkipOptions.func1({0x4077400, 0xc02551a100}, 0xc0505e6d00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:81 +0xb9
net/http.HandlerFunc.ServeHTTP(0x33d8a90, {0x4077400, 0xc02551a100}, 0xc)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/http.(*PlatformHandler).ServeHTTP(0xc03f3fa040, {0x4077400, 0xc02551a100}, 0xc0505e6d00)
/home/circleci/go/src/github.com/influxdata/influxdb/http/platform_handler.go:81 +0x1d2
github.com/go-chi/chi.(*Mux).Mount.func1({0x4077400, 0xc02551a100}, 0xc0505e6d00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:298 +0x13b
net/http.HandlerFunc.ServeHTTP(0x203009, {0x4077400, 0xc02551a100}, 0xc02551a0e0)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/kit/transport/http.Metrics.func1.1({0x407c1d0, 0xc00c8f8620}, 0xc0505e6d00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:66 +0x1e2
net/http.HandlerFunc.ServeHTTP(0xc0044c1830, {0x407c1d0, 0xc00c8f8620}, 0x702dc5)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/kit/transport/http.Trace.func1.1({0x407c1d0, 0xc00c8f8620}, 0x1)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:106 +0x30c
net/http.HandlerFunc.ServeHTTP(0xc0388698c0, {0x407c1d0, 0xc00c8f8620}, 0xc050272c78)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/go-chi/chi.(*ChainHandler).ServeHTTP(0x3c2d5a0, {0x407c1d0, 0xc00c8f8620}, 0xc01da74d25)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/chain.go:31 +0x2c
github.com/go-chi/chi.(*Mux).routeHTTP(0xc0083f4cc0, {0x407c1d0, 0xc00c8f8620}, 0xc0505e6c00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:431 +0x1f9
net/http.HandlerFunc.ServeHTTP(0x88, {0x407c1d0, 0xc00c8f8620}, 0x90)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/influxdata/influxdb/v2/http.(*AddHeader).Middleware.func1({0x407c1d0, 0xc00c8f8620}, 0x53c4e01)
/home/circleci/go/src/github.com/influxdata/influxdb/http/handler.go:102 +0x77
net/http.HandlerFunc.ServeHTTP(0x40a6b18, {0x407c1d0, 0xc00c8f8620}, 0x53c4e90)
/home/circleci/.tools/go/src/net/http/server.go:2046 +0x2f
github.com/go-chi/chi.(*Mux).ServeHTTP(0xc0083f4cc0, {0x407c1d0, 0xc00c8f8620}, 0xc0505e6a00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:86 +0x3c2
github.com/influxdata/influxdb/v2/http.(*Handler).ServeHTTP(0xc01da74d33, {0x407c1d0, 0xc00c8f8620}, 0x40)
/home/circleci/go/src/github.com/influxdata/influxdb/http/handler.go:166 +0x2f
net/http.serverHandler.ServeHTTP({0x4072558}, {0x407c1d0, 0xc00c8f8620}, 0xc0505e6a00)
/home/circleci/.tools/go/src/net/http/server.go:2878 +0x43b
net/http.(*conn).serve(0xc0006412c0, {0x40a6bc0, 0xc04f73a150})
/home/circleci/.tools/go/src/net/http/server.go:1929 +0xb08
created by net/http.(*Server).Serve
/home/circleci/.tools/go/src/net/http/server.go:3033 +0x4e8
"

通过查看源码大概的原因找到了,大概是因为找不到对应的分区。我是导入了 2021年整年的数据,再导入2022年7-8月份的数据后,又导入2022年1-6月份的数据时候,出现的这个问题。导致2022年1月3日到2月28日的数据都无法插入。

经过多次尝试,最终的解决方式是把新建bucket,数据按照顺序重新导入即可。如果数据量不大还好。可以通过下面的方式重新导入。开始时间是你所有数据的开始时间,结束时间是你有问题的时间的前一刻,比如我就是2022年1月3日00:00:00有问题 我就只导入这个时间之前的数据。

influx query 'from(bucket: "old-bucket") |> range(start: 1970-01-01T00:00:00Z, stop: 2022-01-02T23:59:59Z) |> to(bucket: "new-bucket", org: "org") > null

如果数据量太大了。就只能通过备份恢复的方式去搞了。

先备份原来的bucket,然后找到XXXXXXXXTXXXXXXZ.manifest文件,把里面shards为空的子项都删除了 搜索 "shards": [] 就可以搜索到位置,再执行下面的语句去恢复数据就好了。

influx restore --bucket example-bucket --new-bucket new-example-bucket /path/to/backup/dir/

 

您可能感兴趣的与本文相关的镜像

FLUX.1-dev

FLUX.1-dev

图片生成
FLUX

FLUX.1-dev 是一个由 Black Forest Labs 创立的开源 AI 图像生成模型版本,它以其高质量和类似照片的真实感而闻名,并且比其他模型更有效率

在Go语言中,“panic: runtime error: invalid memory address or nil pointer dereference” 错误通常是由于尝试对一个空指针进行解引用操作导致的,以下是一些可能的原因及对应的解决方案: ### 变量未实例化 当使用一个没有分配内存空间的变量时,就会产生该错误。例如在使用指针、结构体等类型时,如果未对其进行初始化就访问其成员或方法,就会触发。在一些案例中,网上搜索到的情况有变量没有实例化或者实例化之后指针没有采用指针调用的方式,亦或全局变量被局部定义了 [^2]。 解决方案:在使用变量之前,确保对其进行正确的实例化。以结构体为例: ```go package main import "fmt" type Person struct { Name string Age int } func main() { // 错误做法 // var p *Person // fmt.Println(p.Name) // 这会引发运行时错误 // 正确做法 p := &Person{Name: "John", Age: 30} fmt.Println(p.Name) } ``` ### 初始化时局部变量覆盖全局变量 如果在函数内部使用短变量声明 `:=` 对全局变量进行重新声明,那么实际上创建的是一个局部变量,全局变量并未被初始化,之后使用全局变量时就可能产生空指针错误。像在数据库连接的示例中,使用 `Db, err := sql.Open(...)` 会创建局部变量 `Db`,而全局变量仍然是 `nil` [^4]。 解决方案:使用赋值语句 `=` 来更新全局变量,或者在函数外进行初始化。示例如下: ```go package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) var Db *sql.DB func init() { var err error // 使用赋值语句 Db, err = sql.Open("mysql", "root:123456@/test") if err != nil { panic(err) } } func main() { // 使用 Db 进行操作 if Db != nil { fmt.Println("Database connection is initialized.") } } ``` ### 第三方库连接失败导致指针为 `nil` 在使用第三方库进行连接操作(如连接 Elasticsearch、Redis 等)时,如果连接失败,返回的指针可能为 `nil`,后续使用该指针就会触发空指针错误。例如在连接 Elasticsearch 和 Redis 的示例中,若连接失败,对应的客户端指针或连接对象指针为 `nil` [^3][^5]。 解决方案:在使用返回的指针之前,先检查其是否为 `nil`,并处理连接失败的情况。以 Redis 连接为例: ```go package main import ( "fmt" "github.com/go-redis/redis/v8" ) var Conn *redis.Client func RedisInit() { Conn = redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", Password: "", DB: 0, }) _, err := Conn.Ping(Conn.Context()).Result() if err != nil { fmt.Println("Redis connection error:", err) Conn = nil return } fmt.Println("Redis connection successful.") } func main() { RedisInit() if Conn != nil { // 使用 Conn 进行操作 fmt.Println("Redis client is ready.") } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值