Skip to content

GetLocalIpToInt本地ip转负数导致panic异常问题 #1

Description

@404name

用的一个项目使用了这个包,启动的时候异常了,排查到问题是本地ip可能转换得到负数,除余1023仍然得到负数,然后snowflake约定初始值是0-1023导致panic项目直接启动不了。

// localIp得到负数情况下panic代码 
Node, err = snowflake.NewNode(int64(localIp) % 1023)
if err != nil {
     panic(err)
}

// 雪花算法抛出error逻辑
if n.node < 0 || n.node > n.nodeMax {
    return nil, errors.New("Node number must be between 0 and " + strconv.FormatInt(n.nodeMax, 10))
}

如果确认是负数引起的问题,考虑解决方案

  1. func GetLocalIpToInt() (uint32, error) 参考
  2. 直接在snowflake.NewNode入口处添加localIp转正数的逻辑

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions