Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

in tcc rpc mode, consumer can't generated proxy as normal, so it doesn't work. #6099

Closed
1 task
laywin opened this issue Dec 2, 2023 · 1 comment · Fixed by #6101
Closed
1 task

in tcc rpc mode, consumer can't generated proxy as normal, so it doesn't work. #6099

laywin opened this issue Dec 2, 2023 · 1 comment · Fixed by #6101

Comments

@laywin
Copy link
Contributor

laywin commented Dec 2, 2023

  • I have searched the issues of this repository and believe that this is not a duplicate.

Ⅰ. Issue Description

  1. in tcc rpc mode, consumer can't generated proxy as normal, so it doesn't work.
    在tcc rpc 模式下,consumer端不能正常生成代理,因此tcc不能正常工作.
    original issue come from Question: Seata与Dubbo整合如何开启TCC自动代理? #6096

  2. int tcc rpc mode, when send the order of the second stage in tc. it can't find the channel of provider rm.
    在tcc rpc 模式下,当下发二阶段的指令时,不能找到生产者的RM channel

Ⅱ. Describe what happened

  1. in tcc rpc mode, when rpc consumer generate proxy, there is a check which is incorrect to filtered factorybean.
    在tcc rpc模式下,当rpc消费者端生成代理时,check操作不正确的过滤掉了factorybean.
    image
    image

  2. when search the provider address to send the order of the second stage in TC at TCC mode,tryOtherApp is false , applicationIdMap is server rm applicationId and address map, targetApplicationId is consumer's applicationId, so it can't get the consumer address correctly.
    当在TC端TCC模式下查找生产者地址下发二阶段指令时,tryOtherApp 是false状态,applicationIdMap 是server端 rm applicationId 和 地址的映射,targetApplicationId 是消费者端的applicationId,因此不能正确获取到消费者端的地址
    image
    image

Ⅲ. Describe what you expected to happen

Ⅳ. How to reproduce it (as minimally and precisely as possible)

  1. xxx
  2. xxx
  3. xxx

Minimal yet complete reproducer code (or URL to code):

Ⅴ. Anything else we need to know?

Ⅵ. Environment:

  • JDK version(e.g. java -version):
  • Seata client/server version:
  • Database version:
  • OS(e.g. uname -a):
  • Others:
@laywin
Copy link
Contributor Author

laywin commented Dec 3, 2023

in seata 2.x version, there is a RemotingFactoryBeanParser will get bean's FactoryBean back from container to judge whether the bean is a rpc reference, but in the process, there is a judgment about whether the bean is a spring proxy, because of dubbo 3.0 change the proxy class, so the judgment is failed, it lead to can't the FactoryBean back finally.

在seata2.x的版本中,存在 RemotingFactoryBeanParser, 会将bean的FactoryBean从容器中取回来 ,从而来判断是否是一个RPC reference,不过里面有一个是否是Spring代理的判断,由于dubbo 3.0代理的classname变了,所以没有判断到,导致最终没有将FactoryBean取回来。

image

image

image

dubbo 3.x proxy name:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant