apache / apache/servicecomb-java-chassis
[BUG] - Edge服务不能执行自定义流控Handler
- Lenguaje dominante
- Java
- Estrellas
- 1.9k
- Forks
- 814
- Merge medio
- 8 d 23 h
- PR fusionados (30 d)
- 1
Descripción
### Steps to Reproduce
1. 自定义流控handler:provider-service-handler
2. Edge服务配置Provider handler对所有待转发的请求(转发至多个不同微服务)进行流控控制
### Expected Behavior
自定义流控未执行
### Servicecomb Version
2.9.0
### Additional Context
AbstractRestInvocation中checkQpsFlowControl只能执行CSE自带的ProviderQpsFlowControlHandler,不能执行自定义的流控handler,且函数为private,也不能通过自定义子类覆盖
`private Holder checkQpsFlowControl(OperationMeta operationMeta) {
Holder qpsFlowControlReject = new Holder<>(false);
@SuppressWarnings("deprecation")
Handler providerQpsFlowControlHandler = operationMeta.getProviderQpsFlowControlHandler();
if (null != providerQpsFlowControlHandler) {
try {
providerQpsFlowControlHandler.handle(invocation, response -> {
qpsFlowControlReject.value = true;
produceProcessor = ProduceProcessorManager.INSTANCE.findDefaultJsonProcessor();
sendResponse(response);
});
} catch (Throwable e) {
LOGGER.error("failed to execute ProviderQpsFlowControlHandler", e);
qpsFlowControlReject.value = true;
sendFailResponse(e);
}
}
return qpsFlowControlReject;
}`
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comience con AbstractRestInvocation.checkQpsFlowControl y la configuración del proveedor-handler descrita en el issue. Reproduzca el escenario del servicio Edge en ServiceComb 2.9.0 con un provider-service-handler personalizado que reenvíe las solicitudes a varios servicios. La tarea estará completa cuando se invoque el flow-control handler personalizado configurado, en lugar de invocarse únicamente el ProviderQpsFlowControlHandler integrado.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 42/100