@Override public void doRegister(RegistryInfo info) { try { ((RegistryService) registry).register(info); failedRegistered.remove(info); } catch (ClassCastException e) { throw new RegistryException("Expect class " + RegistryService.class + " actual is " + registry.getClass(), e); } catch (Throwable e) { if (e.getCause() != null && e.getCause() instanceof IllegalArgumentException) { throw e; } logger.error("Failed to register {}, waiting for retry", info.getServiceNames(), e); // 将失败的注册请求记录到失败列表,定时重试 failedRegistered.add(info); } }
@Override public void doUnregister(RegistryInfo info) { try { ((RegistryService) registry).unregister(info); failedUnregistered.remove(info); } catch (ClassCastException e) { throw new RegistryException("Expect class " + RegistryService.class + " actual is " + registry.getClass(), e); } catch (Throwable e) { if (e.getCause() != null && e.getCause() instanceof IllegalArgumentException) { throw e; } logger.error("Failed to unregister {}, waiting for retry", info.getServiceNames(), e); // 将失败的注销请求记录到失败列表,定时重试 failedUnregistered.add(info); } }
@Override public void unregister(RegistryInfo info) { try { String path = generateNodePath(info); zkClient.delete(path); logger.info("Unregister provider on zookeeper[{}] path={}, info{}", address, path, info); } catch (Throwable e) { throw new RegistryException("Failed to unregister service: " + info.getServiceNames(), e); } }
failedRegistered.remove(info); } catch (Throwable e) { logger.warn("Failed to retry register {}, waiting for again, cause: {}", info.getServiceNames(), e.getMessage(), e); failedUnregistered.remove(info); } catch (Throwable e) { logger.warn("Failed to retry unregister {}, waiting for again", info.getServiceNames(), e);
@Override public void register(RegistryInfo info) { try { String path = generateNodePath(info); zkClient.createNode(path, ZooKeeperNodeInfo.genNodeData(info)); logger.info("Register provider on zookeeper[{}] path={}, info={}", address, path, info); } catch (Throwable e) { throw new RegistryException("Failed to register service: " + info.getServiceNames(), e); } }
public static String genNodeData(RegistryInfo info) throws JsonProcessingException { ChildNodeData nodeData = new ChildNodeData(); nodeData.setAppkey(info.getAppkey()); nodeData.setIp(info.getIp()); nodeData.setPort(info.getPort()); Map<String, ServiceDetail> serviceDetailMap = genServiceDetailMap(info.getServiceNames()); nodeData.setServiceInfo(serviceDetailMap); nodeData.setProtocol(info.getProtocol()); nodeData.setFweight(info.getWeight()); nodeData.setWeight((int) info.getWeight()); nodeData.setWarmup(info.getWarmUp()); nodeData.setEnv(Constants.EnvType.getEnvType(info.getEnv()).getEnvCode()); nodeData.setVersion(info.getVersion()); if (ProviderStatus.isNotAliveStatus(info.getStatus())) { nodeData.setStatus(info.getStatus()); } else { nodeData.setStatus(ProviderStatus.ALIVE.getCode()); } nodeData.setLastUpdateTime(System.currentTimeMillis() / 1000); String nodeDataStr = objectMapper.writeValueAsString(nodeData); return nodeDataStr; }