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

logTable 配置不生效 #4413

Closed
1 task
zclcs opened this issue Feb 28, 2022 · 32 comments
Closed
1 task

logTable 配置不生效 #4413

zclcs opened this issue Feb 28, 2022 · 32 comments

Comments

@zclcs
Copy link

zclcs commented Feb 28, 2022

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

Ⅰ. Issue Description

image

Ⅱ. Describe what happened

启动获取变量正常,删除sql执行的是默认的

If there is an exception, please attach the exception trace:

Just paste your stack trace here!

Ⅲ. Describe what you expected to happen

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

  1. xxx
  2. xxx
  3. xxx

Ⅴ. Anything else we need to know?

Ⅵ. Environment:

  • JDK version :
  • Seata version:
  • OS :
  • Others:
@GoodBoyCoder
Copy link
Contributor

请提供一下seata版本以及配置log table的方式方便排查,此外确认一下配置的undolog表中是否有数据

@zclcs
Copy link
Author

zclcs commented Feb 28, 2022

请提供一下seata版本以及配置log table的方式方便排查,此外确认一下配置的undolog表中是否有数据

seata版本 1.4.2
image
image

@liuqiufeng
Copy link
Contributor

配置中心为nacos,seata相关的配置应该放到nacos上吧?

@zclcs
Copy link
Author

zclcs commented Feb 28, 2022

配置中心为nacos,seata相关的配置应该放到nacos上吧?

是放在nacos上的,为了方便截图,我取下来了

@liuqiufeng
Copy link
Contributor

配置中心为nacos,seata相关的配置应该放到nacos上吧?

是放在nacos上的,为了方便截图,我取下来了

nacos配置时带seata前缀吗?如果是,请尝试去掉seata前缀试试。如:client.undo.logTable=undo_log

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

配置中心为nacos,seata相关的配置应该放到nacos上吧?

是放在nacos上的,为了方便截图,我取下来了

nacos配置时带seata前缀吗?如果是,请尝试去掉seata前缀试试。如:client.undo.logTable=undo_log

  1. nacos这样配报错,也获取不到日志表表名
    image
  2. nacos这样配,能获取到表名,但是执行sql表名还是不对
    image

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

image
seata 用的druid连接池老是报这个,大佬们知道咋去掉嘛

@liuqiufeng
Copy link
Contributor

配置中心为nacos,seata相关的配置应该放到nacos上吧?

是放在nacos上的,为了方便截图,我取下来了

nacos配置时带seata前缀吗?如果是,请尝试去掉seata前缀试试。如:client.undo.logTable=undo_log

  1. nacos这样配报错,也获取不到日志表表名
    image
  2. nacos这样配,能获取到表名,但是执行sql表名还是不对
    image

那我也不知道了,我是菜鸟,哈哈。debug看看吧

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

配置中心为nacos,seata相关的配置应该放到nacos上吧?

是放在nacos上的,为了方便截图,我取下来了

nacos配置时带seata前缀吗?如果是,请尝试去掉seata前缀试试。如:client.undo.logTable=undo_log

  1. nacos这样配报错,也获取不到日志表表名
    image
  2. nacos这样配,能获取到表名,但是执行sql表名还是不对
    image

那我也不知道了,我是菜鸟,哈哈。debug看看吧

dubug 配置项有值,所以我才来提issues

@liuqiufeng
Copy link
Contributor

貌似是这里取的表名:io.seata.rm.datasource.undo.AbstractUndoLogManager#UNDO_LOG_TABLE_NAME

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

貌似是这里取的表名:io.seata.rm.datasource.undo.AbstractUndoLogManager#UNDO_LOG_TABLE_NAME

tmd,本地bebug就是不跑删除语句,日了狗了

@ninggc
Copy link

ninggc commented Mar 1, 2022

貌似是这里取的表名:io.seata.rm.datasource.undo.AbstractUndoLogManager#UNDO_LOG_TABLE_NAME

tmd,本地bebug就是不跑删除语句,日了狗了

可以试试debug一下,相关代码

  1. io.seata.rm.datasource.undo.AbstractUndoLogManager#deleteUndoLog
  2. io.seata.rm.datasource.undo.AbstractUndoLogManager#batchDeleteUndoLog
    一方面看有没有调用,一方面看一下组装的sql对不对

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

debug配置的值没错

image

@GoodBoyCoder
Copy link
Contributor

删除是延迟异步的操作,若要debug可以执行一个dml语句,然后AbstractUndoLogManager#flushUndoLogs打断点,这一步会将前后镜像的undo_log持久化,使用的logtable与delete相同

@GoodBoyCoder
Copy link
Contributor

image seata 用的druid连接池老是报这个,大佬们知道咋去掉嘛

这个是Druid对于长时间空闲的Connection的检测日志,如果一个Connection空闲时间超过给定时间就会打印该日志并丢弃连接;可以配置禁用ping方式的检查改用检测语句(validateQuery)的方式刷新该时间

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

image
还是老样子,表名到这就是这样了
image
感觉应该是这里的问题

@GoodBoyCoder
Copy link
Contributor

image 还是老样子,表名到这就是这样了 image 感觉应该是这里的问题

是的,可以进去getConfig方法看看具体的配置获取流程有没有问题

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

image 还是老样子,表名到这就是这样了 image 感觉应该是这里的问题

是的,可以进去getConfig方法看看具体的配置获取流程有没有问题
image

现在尴尬的是debug时间太久了,nacos报 -401

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

image
不过我看程序找的好像是dataId?

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

image
image
找的真的是dataId

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

哪seata配置下的表名有啥用啊

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

而且dataId也不支持环境变量,我想每个服务块都用不同的表名咋办

@GoodBoyCoder
Copy link
Contributor

1.4.2版本开始支持从一个Nacos dataId中获取所有配置信息,具体配置详情可参考官网

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

1.4.2版本开始支持从一个Nacos dataId中获取所有配置信息,具体配置详情可参考官网

这个我配了,但是properties文件貌似不支持环境变量,如果我想每个服务都用不同的表名咋办

@zclcs
Copy link
Author

zclcs commented Mar 1, 2022

1.4.2版本开始支持从一个Nacos dataId中获取所有配置信息,具体配置详情可参考官网

image
有个小问题,配置中心有两个一毛一样的配置

@GoodBoyCoder
Copy link
Contributor

1.4.2版本开始支持从一个Nacos dataId中获取所有配置信息,具体配置详情可参考官网

image 有个小问题,配置中心有两个一毛一样的配置

估计重复的会被覆盖,你也可以提一个PR改正

@zclcs
Copy link
Author

zclcs commented Mar 2, 2022

1.4.2版本开始支持从一个Nacos dataId中获取所有配置信息,具体配置详情可参考官网

这个我配了,但是properties文件貌似不支持环境变量,如果我想每个服务都用不同的表名咋办

这个问题呢

@GoodBoyCoder
Copy link
Contributor

1.4.2版本开始支持从一个Nacos dataId中获取所有配置信息,具体配置详情可参考官网

这个我配了,但是properties文件貌似不支持环境变量,如果我想每个服务都用不同的表名咋办

这个问题呢

若是服务之间需要不同的配置,可以设置不同的nacos的dataId来实现吧(提供一个思路,这一块我了解的不多

@zclcs
Copy link
Author

zclcs commented Mar 3, 2022

image
所以在client端这个配置没啥用是嘛

@zclcs
Copy link
Author

zclcs commented Mar 3, 2022

seata 的 healthcheck 该怎么写,有没有大佬知道
image
这样不行

@GoodBoyCoder
Copy link
Contributor

image 所以在client端这个配置没啥用是嘛

若是配置了配置中心,目前来说本地的配置就无效,两者不会互补

@funky-eyes
Copy link
Contributor

image 所以在client端这个配置没啥用是嘛

不支持占位符的解析,spring中是spring会去解析,在seata中seata自身没去解析这种${xxxx},有个办法可以生效
将使用springcloud的配置中心改为nacos,seata的配置中心config.type改为file
然后将你上面这串配置放到你spring cloud需要拉取的远程配置中,这样就可以了,这样seata是通过spring去解析的,而不是自己解析

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

No branches or pull requests

5 participants