CacheCloud bug修复日志


CacheCloud从3月17日正式开源,虽然在我们内部一直运行正常,开源后虽然没有大的问题,但还是遇到很多小问题,比如操作系统兼容性问题,数据库版本问题,一些配置不灵活等等问题。

期间感谢大家的反馈,现在将CacheCloud修复的问题列出来,希望将来这个能一直更新下去,有问题去github issue一下。

 

搜狐视频Redis云平台CacheCloud的github主页:https://github.com/sohutv/cachecloud

 欢迎关注、star、拍砖保密保密保密保密保密,Q群:534429768

  

 

2016-03-18:添加机器后不能立刻出现在机器列表中

1. 表现:添加机器后不能立刻出现在机器列表中。

2. 原因:最早的版本必须等到quartz收集完机器信息才显示。

3. 解决:添加机器信息后,立即显示在列表中,不过机器信息显示收集中。

 

 

2016-03-19:sentinel必须写死在配置中

1. 表现:sentinel列表必须写死在配置中。

2. 原因:历史原因造成,cachecloud在内部用了固定的三台机器,为了偷懒。

3. 解决:sentinel可以灵活配置,具体可以看:

https://github.com/sohutv/cachecloud/commit/e596d4326fac911f4172158de1ae03abb14f9830

 

2016-03-21:保存机器收集信息报错

1. 表现:保存机器收集信息,提示和virtual相关的报错

2. 原因:mysql5.7中virtual是关键字

3. 解决:在mybatis的mapper中兼容

具体参考:https://github.com/sohutv/cachecloud/commit/d6e1ffb1ebd9bd1df9b55535da9fec7000167559

 

 

2016-03-28:修复redis cluster节点都在一台机器时,机器挂掉后,无法显示运维界面

1. 表现:应用运维界面为空白,收到空指针

2. 原因:所有实例都挂了,无法获取slot信息,造成空指针

3. 解决:如果出现,暂时先返回空的Map

具体参考:https://github.com/sohutv/cachecloud/commit/b5f8d7dbc78df4354f995c61b6513a6f6188e809

 

 

2016-03-29:修复机器信息统计在centos7 debian等操作系统失效

1. 表现:收集机器信息报错,

2. 原因:centos 各个版本, redhat, ubuntu执行top对应的信息不同,解析方法没有兼容造成。

3. 解决:使用正则表达式解决。

 

 

2016-03-31:启动脚本问题。

问题: /etc/init.d/cachecloud-web start 启动失败

状态:已经修复,详见:https://github.com/sohutv/cachecloud/commit/6ba783a2367aec69d6c1abcd1c65b592a7274cca

解决方法:使用nohup java形式启动,使用kill pid关闭,详见start.sh和stop.sh

 

2016-04-03: 修复机器更新异常。

问题:cachecloud后台机器管理中,修改机器信息提示更新失败。

状态:已经修复,详见:https://github.com/sohutv/cachecloud/commit/ad0d54bbe0a24f3f1eb94b96e34168b0e2d65f61

解决方法:添加和更新用一个方法实现。

 

2016-04-07: 修复应用运维界面,运维后页面不刷新

问题:应用运维界面在执行failover, add slave等操作后,页面刷新不太正常

状态:已经修复。

解决方法:js的页面刷新使用错误,虽然比较好解决,但是这个不刷新会对集群节点关系产生错觉(之前一直是手动刷新解决的).

详见:https://github.com/sohutv/cachecloud/commit/607dc8d254329f71666e6fc34e5c2a0b96cd4dd7

 

2016-04-07: 去掉InstanceInfo中的parentId(对应instance_info表)

问题:parentId起初设计是代表当前节点是否为master(parentId>0代表slave, parentId=0代表master),但是这个设计是有问题的,因为后期在运维过程中,主从关系关系会发生变化,需要维护parentId这个字段的一致性。

状态:已经修复

解决方法:去掉parentId,完全使用实时主从关系。

详见:https://github.com/sohutv/cachecloud/commit/dccb8b2304977bd462fd637c9f1571f04577804b

 

2016-04-07: JedisCluster初始化不需要指定主从关系

问题:JedisCluster初始化用到的nodeList是不需要指定主从关系的,具体可以参考Jedis中JedisClusterConnectionHandler的initializeSlotsCache方法,它会自动发现集群信息。

private void initializeSlotsCache(Set<HostAndPort> startNodes, GenericObjectPoolConfig poolConfig) {
    for (HostAndPort hostAndPort : startNodes) {
      Jedis jedis = new Jedis(hostAndPort.getHost(), hostAndPort.getPort());
      try {
        cache.discoverClusterNodesAndSlots(jedis);
        break;
      } catch (JedisConnectionException e) {
        // try next nodes
      } finally {
        if (jedis != null) {
          jedis.close();
        }
      }
    }

    for (HostAndPort node : startNodes) {
      cache.setNodeIfNotExist(node);
    }
  }
 

状态:已经修复

详见:https://github.com/sohutv/cachecloud/commit/4b8c4ecf335dc024637f3b69b5adc2ce4e0828c4

 

猜你喜欢

转载自carlosfu.iteye.com/blog/2287016
今日推荐