当前使用版本(必填,否则不予处理)

3.4.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

设备:macbook pro 2019 Sequence在获取datacenterId时,因为获取网卡时获取到的是lo0导致拿不到mac地址,从而导致datacenterId为0,结果可能会出现id重复。

重现步骤(如果有就写完整)

有2种情况会出现拿不到mac地址: 1. 多次测试时随机出现拿到的网卡是lo0,所以拿不到mac地址。 2. 断网的情况下运行,拿到的网卡必定是lo0,这种情况必定拿不到mac地址。

报错信息

InetAddress ip = InetAddress.getLocalHost(); NetworkInterface network = NetworkInterface.getByInetAddress(ip); byte[] mac = network.getHardwareAddress(); 该方法获取mac地址有问题,需要优化,有概率拿到lo0,从而拿不到mac地址,最终导致id重复,怀疑这个批量插入,主键冲突 #3289issues就是这个问题导致的。

Comment From: miemieYaho

怎么优化?

Comment From: zjxclzyb

怎么优化?

参考一下这个:https://www.cnblogs.com/kira2will/p/8419049.html 或者https://blog.csdn.net/cdnight/article/details/86741265

Comment From: huayanYu

@zjxclzyb 期待你的PR~,参与进来

Comment From: qmdx

同一台机器部署多个实例,建议考虑设置为不同的 dataCenterId

public DefaultIdentifierGenerator(long workerId, long dataCenterId) {
        this.sequence = new Sequence(workerId, dataCenterId);
    }