同一个微服务模块多实例,TM会发生事物通知TC错乱的问题
- Lenguaje dominante
- Java
- Estrellas
- 4.2k
- Forks
- 1.4k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
- [ ] I have searched the [issues](https://github.com/codingapi/tx-lcn/issues) of this repository and believe that this is not a duplicate.
### 1. Bug Description
在多台机器上部署相同的服务模块moduleA(ip不同,端口也不同),代开tm的debug日志,发现在请求再moduleA_1的时候是正常的,然后内部服务调用切换到moduleA_2的时候,事物会发生超时,然后才删除redis的资源锁.如果再超时的这段时间内,有去获取排他锁会发生resource loack的异常情况.
在源码排查的情况中发现,在tm进行事务通知tx的时候

只会通知一个? 而且这边获取modId的时候进行获取的是模块名,即使我再tc那边重写的modId的生成规则,但是注册到tm的时候这个再客户端看来是modid的值变成了labelName
所以再通知tc事务的时候错乱了.下面是获取modid的方法

拿到是moduleA这个模块名,而不是具体的moduleA_1或者module_2具体的服务标识.
### 2. Environment:
- JDK version:1.8
- OS: ubuntu 16.0.4
- TX-LCN version: 5.0.2
- Others:
### 3. Exception Stacktrace
```
Paste your Exception Stacktrace here!
```
### 4. Tour Idea
所以,我这边想问下,当前5.0.2这个版本是不是对提供的modid的更改接口对接到tm的功能是否还没有完成?当前的labelName好像只是作为tm的后台展示所用,并没有其他的作用,那么当前是否不支持tc的多实例的应用?
我们这边对获取modid获取方式进行了更改,取的是labelName而不是appname

Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Reproduce el flujo informado con dos instancias de moduleA usando el entorno descrito de JDK 1.8, Ubuntu 16.04 y TX-LCN 5.0.2. Comienza con las rutas de TM transaction-notification y modId registration mostradas en el issue y, a continuación, rastrea el bloqueo del recurso Redis durante el cambio entre moduleA_1 y moduleA_2. Se considera terminado cuando las notificaciones entre múltiples instancias se dirigen al participante correcto de la transacción sin errores de timeout ni de bloqueo de recursos.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java, redis
- Área
- backend, distributed-systems
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100