mirror of
https://github.com/ctripcorp/zeus.git
synced 2024-09-20 23:56:05 +08:00
add retry when dyups timeout
This commit is contained in:
parent
4c0e8253dc
commit
acab98bbe3
|
@ -26,7 +26,7 @@ public class LocalClient {
|
|||
private static final DynamicIntProperty nginxDyupsPort = DynamicPropertyFactory.getInstance().getIntProperty("dyups.port", 8081);
|
||||
private static final DynamicIntProperty nginxStatusPort = DynamicPropertyFactory.getInstance().getIntProperty("slb.nginx.status-port", 10001);
|
||||
|
||||
private static final DynamicIntProperty nginxDyupsTimeout = DynamicPropertyFactory.getInstance().getIntProperty("nginx.dyups.read.timeout", 30000);
|
||||
private static final DynamicIntProperty nginxDyupsTimeout = DynamicPropertyFactory.getInstance().getIntProperty("nginx.dyups.read.timeout", 500);
|
||||
|
||||
private final NginxDyupsClient dyupsClient;
|
||||
private final NginxStatusClient statusClient;
|
||||
|
|
|
@ -19,7 +19,7 @@ import java.util.List;
|
|||
/**
|
||||
* Created by fanqq on 2016/3/14.
|
||||
*/
|
||||
@Service("ninxOpsService")
|
||||
@Service("nginxOpsService")
|
||||
public class NginxOpsServiceImpl implements NginxOpsService {
|
||||
|
||||
private Logger LOGGER = LoggerFactory.getLogger(this.getClass());
|
||||
|
@ -88,9 +88,26 @@ public class NginxOpsServiceImpl implements NginxOpsService {
|
|||
public List<NginxResponse> dyups(DyUpstreamOpsData[] dyups) throws Exception {
|
||||
List<NginxResponse> responses = new ArrayList<>();
|
||||
if (dyups == null) return responses;
|
||||
|
||||
for (DyUpstreamOpsData d : dyups) {
|
||||
NginxResponse response = LocalClient.getInstance().dyups(d.getUpstreamName(), d.getUpstreamCommands());
|
||||
responses.add(response);
|
||||
NginxResponse response;
|
||||
try {
|
||||
response = LocalClient.getInstance().dyups(d.getUpstreamName(), d.getUpstreamCommands());
|
||||
responses.add(response);
|
||||
} catch (Exception ex) {
|
||||
// retry if get SocketTimeoutException
|
||||
//TODO do we tolerate failure
|
||||
if (ex.getCause() instanceof java.net.SocketTimeoutException) {
|
||||
try {
|
||||
Thread.sleep(50L);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
response = LocalClient.getInstance().dyups(d.getUpstreamName(), d.getUpstreamCommands());
|
||||
responses.add(response);
|
||||
} else {
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
LOGGER.info("[DyupsOps] Dyups success. upstreamName:" + d.getUpstreamName());
|
||||
}
|
||||
return responses;
|
||||
|
|
|
@ -132,8 +132,11 @@ public class NginxServiceImpl implements NginxService {
|
|||
public NginxResponse call() throws Exception {
|
||||
logger.info("[Push Conf] Start updating conf on server " + ip + ".");
|
||||
NginxResponse response = nginxClient.update(false);
|
||||
//TODO lost error info if not logging response
|
||||
logger.info("[Push Conf] Finish updating conf on server " + ip + ". Success:" + response.getSucceed());
|
||||
if (!response.getSucceed()) {
|
||||
logger.error("[Push Conf] Failed to update conf on server " + ip + ". Cause:" + response.toString());
|
||||
} else {
|
||||
logger.info("[Push Conf] Finish updating conf on server " + ip + ". Success:" + response.getSucceed() + ".");
|
||||
}
|
||||
return response;
|
||||
}
|
||||
});
|
||||
|
@ -206,7 +209,7 @@ public class NginxServiceImpl implements NginxService {
|
|||
public NginxResponse call() throws Exception {
|
||||
logger.info("[Rollback Conf] Start Rollback conf on server " + ip + ".");
|
||||
NginxResponse response = nginxClient.update(true);
|
||||
logger.info("[Rollback Conf] Finish Rollback conf on server " + ip + ".");
|
||||
logger.info("[Rollback Conf] Finish Rollback conf on server " + ip + ". Success:" + response.getSucceed() + ".");
|
||||
return response;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -71,10 +71,10 @@ public class SlbServerConfManagerImpl implements SlbServerConfManager {
|
|||
if (slbVersion.equals(serverVersion)) {
|
||||
return response.setSucceed(true).setServerIp(ip).setOutMsg("[SlbServerConfManagerImpl] slb version == slb server version. Not need to update.");
|
||||
}
|
||||
//3. if slbVersion < serverVersion , force rollback to slbVersion
|
||||
//3. force rollback to slbVersion
|
||||
//case 1: force refresh or flag needRefresh is true
|
||||
//case 2: server version is large then slb version
|
||||
//case 3: version gap large than max span
|
||||
//case 3: version gap larger than max span
|
||||
if (refresh || slbVersion < serverVersion || slbVersion - serverVersion > maxSpan.get()) {
|
||||
try {
|
||||
//3.1 need reload in case 3
|
||||
|
|
Loading…
Reference in a new issue