This is an automated email from the ASF dual-hosted git repository.

jianbin pushed a commit to branch docusaurus
in repository https://gitbox.apache.org/repos/asf/incubator-seata-website.git


The following commit(s) were added to refs/heads/docusaurus by this push:
     new b9edf85c326 doc: add the Q&A about namingserver and console JDK25 
compilation to the faq (#1053)
b9edf85c326 is described below

commit b9edf85c3261380aaea104ca97919ad47127d658
Author: 徐博 洪 <[email protected]>
AuthorDate: Wed Dec 17 15:42:11 2025 +0800

    doc: add the Q&A about namingserver and console JDK25 compilation to the 
faq (#1053)
---
 .../current/overview/faq.md                        | 227 ++++++++++++++++++++-
 .../version-v2.5/overview/faq.md                   |   2 +-
 .../current/overview/faq.md                        |  28 ++-
 .../version-v2.5/overview/faq.md                   |   2 +-
 4 files changed, 255 insertions(+), 4 deletions(-)

diff --git a/i18n/en/docusaurus-plugin-content-docs/current/overview/faq.md 
b/i18n/en/docusaurus-plugin-content-docs/current/overview/faq.md
index 0e627ee2dfe..069a53a2d4e 100644
--- a/i18n/en/docusaurus-plugin-content-docs/current/overview/faq.md
+++ b/i18n/en/docusaurus-plugin-content-docs/current/overview/faq.md
@@ -111,6 +111,36 @@ Error: A fatal exception has occurred. Program will 
exit.?</a>
 <a href="#34" target="_self">34. Why does the error "pk contains illegal 
character!" occur? </a>
 <br/>
 
+<a href="#35" target="_self">35. Why do namingserver and console require JDK 
25 for packaging and compiling? & Why are namingserver and console not involved 
in the compilation and packaging process? </a>
+<br/>
+
+<a href="#36" target="_self">36. What is the scope of SQL support for Seata? 
</a>
+<br/>
+
+<a href="#37" target="_self">37. When the length of Oracle's NUMBER exceeds 
19, entities use Long mapping, which results in the inability to obtain row 
information, causing undo_log to be unable to be inserted and also unable to be 
rolled back? </a>
+<br/>
+
+<a href="#38" target="_self">38. How to deal with the 
io.seata.rm.datasource.exec.LockConflictException: get global lock fail ? </a>
+<br/>
+
+<a href="#39" target="_self">39. Why when using Apple M1 chip maven 
dependence, unable to download the dependence 
`com.google.protobuf:protoc:exe:3.3.0`? </a>
+<br/>
+
+<a href="#40" target="_self">40. Versions 1.4.2 and below throw "Cannot 
construct instance of 'java.time.LocalDateTime'" when rolling back </a>
+<br/>
+
+<a href="#41" target="_self">41. What are the precautions when Seata-Server 
uses DB as the storage mode? </a>
+<br/>
+
+<a href="#42" target="_self">42. Did Oracle fail to roll back using the 
timestamp field type? </a>
+<br/>
+
+<a href="#43" target="_self">43. Did the transaction not roll back after an 
exception was thrown? </a>
+<br/>
+
+<a href="#44" target="_self">44. How to deal with the @FeignClient annotation 
url not working and the error prompt "Load balancer does not have available 
server for client"? </a>
+<br/>
+
 ---
 
 <h3 id='1'>Q: 1.Can Seata be used in a production environment?</h3>
@@ -309,7 +339,7 @@ At present, `seata-all` needs to use conf type `conf` 
files, and `properties` an
 2. `./mvnw clean install -DskipTests=true(Mac,Linux)` OR `mvnw.cmd clean 
install -DskipTests=true(Win) -P release-seata`。
 3. Unzip the corresponding compressed package in the target directory of the 
`distribution` module.
 4. Packaging commands after seata-1.5 (the latest development branch), `mvn 
-Prelease-seata -Dmaven.test.skip=true clean install -U`
-5. If you are on macOS platform with ARM architecture, please use: `mvn 
-Prelease-seata -Dmaven.test.skip=true clean install -U -P arrch64`
+5. If you are on macOS platform with ARM architecture, please use: `mvn 
-Prelease-seata -Dmaven.test.skip=true clean install -U`
 
 ---
 
@@ -530,3 +560,198 @@ Solution:
 <h3 id='34'>Q: 34. Why does the error "pk contains illegal character!" 
occur?</h3>
 
 - Check if the primary key contains a comma.
+
+---
+
+<h3 id='35'>Q: 35. Why do namingserver and console require JDK 25 for 
packaging and compiling? & Why are namingserver and console not involved in the 
compilation and packaging process? </h3>
+
+1. What changes have been made so far?
+   - Currently, the target JDK compilation version for namingserver is set to 
25, and a new profile has been added to ensure that namingserver and console 
are included in the compilation and packaging only in the JDK 25 environment.
+   - ```
+     <!-- profile: onlyBuildOnJDK25+ -->
+             <profile>
+                 <id>JDK25Plus</id>
+                 <activation>
+                     <jdk>[25,)</jdk>
+                 </activation>
+                 <modules>
+                     <module>namingserver</module>
+                     <module>console</module>
+                 </modules>
+             </profile>
+     ```
+   - If you use JDK25 or later versions, the namingserver and console modules 
will be excluded by default during compilation and packaging.
+2. Why use JDK25?
+   - In order to support the Spring AI dependencies introduced in the 
subsequent versions of namingserver and console, the versions of Spring Boot 
and JDK must be upgraded. Choosing JDK 25 as the target version not only meets 
the technical requirements of Spring AI, but also lays the foundation for the 
development of new functions and the adaptation of brand-new functions in the 
future, ensuring the forward-looking and scalability of the technology stack.
+
+---
+
+<h3 id='36'>Q: 36. What is the scope of SQL support for Seata?</h3>
+
+**A:**
+
+Please refer to Appendix ->[SQL 
Reference](/docs/user/sqlreference/sql-restrictions/)
+
+---
+
+<h3 id='37'>Q: 37. When the length of Oracle's NUMBER exceeds 19, entities use 
Long mapping, which results in the inability to obtain row information, causing 
undo_log to be unable to be inserted and also unable to be rolled back? </h3>
+
+**A:**
+
+When the length of the NUMBER in Oracle exceeds 19, if Long is used, setObject 
will not be able to retrieve the data. Modifying the Long of the entity to 
BigInteger or BigDecimal can solve the problem.
+
+---
+
+<h3 id='38'>Q: 38. How to deal with the 
io.seata.rm.datasource.exec.LockConflictException: get global lock fail ? </h3>
+
+**A:**
+
+Failure to obtain a global lock is usually caused by distributed resource 
competition. Please ensure that the cycle of your resource competition is 
reasonable and that retries are properly implemented in your business. When a 
global transaction fails to acquire the lock, it should be restarted completely 
from the TM end of `@Globaltransational`.
+
+Seata provides a "Global Lock Retry" feature. In versions prior to 1.5, this 
feature was not enabled by default when combined with the @Transactional 
annotation or when manually starting local transactions. It can be enabled 
through the following configuration (there is a possibility of deadlock due to 
the global lock and local lock competing for each other when facing a 
rollback). It is recommended to upgrade directly to version 1.5 or above. Do 
not modify this configuration item directly.
+
+```properties
+# Whether to roll back when encountering a global lock conflict, the default 
is true
+client.rm.lock.retryPolicyBranchRollbackOnConflict=false
+```
+
+After enabling it, the default global lock retry logic is: the thread sleeps 
for 10ms and then compets for the global lock again, up to a maximum of 30 times
+
+```properties
+#You can modify the lock retry mechanism through these two configurations
+client.rm.lock.retryInterval=10
+client.rm.lock.retryTimes=30
+```
+In addition, you can also directly configure the retry logic separately on 
`@GlobalTransactional` or `@GlobalLock`, which has a higher priority than the 
global configuration of Seata
+
+```java
+@GlobalTransactional(lockRetryInternal = 100, lockRetryTimes = 30)  // v1.4.2
+@GlobalTransactional(lockRetryInterval = 100, lockRetryTimes = 30)  // v1.5
+```
+
+---
+
+<h3 id='39'>Q:39. Why when using Apple M1 chip maven dependence, unable to 
download the dependence `com.google.protobuf:protoc:exe:3.3.0`? </h3>
+
+**A:**
+
+In the `serializer/seata-serializer-protobuf/pom.xml` file, the dependent 
versions are defined by identifying the operating system variables: `com. 
Google. Protobuf: protoc: 3.3.0: exe: ${OS. Detected. Classifier}`.
+In the remote repository, there is no dependent version corresponding to 
Apple's M1 chip architecture.
+
+Solution
+This dependence to fixed version: `com. Google. Protobuf: protoc: 3.3.0: exe: 
osx - x86_64`, version can be downloaded to the remote warehouse corresponding 
dependencies.
+
+---
+
+<h3 id='40'>Q:40. Versions 1.4.2 and below throw "Cannot construct instance of 
'java.time.LocalDateTime'" when rolling back </h3>
+
+**A:**
+
+Upgrade to version 1.5.0 or above
+
+**B:**
+
+Do not use mysql Driver 8.0.x version
+
+**C:**
+
+Introduce Kryo-related dependencies
+
+```java
+            <dependency>
+                <groupId>com.esotericsoftware</groupId>
+                <artifactId>kryo</artifactId>
+                <version>4.0.2</version>
+            </dependency>
+            <dependency>
+                <groupId>de.javakaffee</groupId>
+                <artifactId>kryo-serializers</artifactId>
+                <version>0.42</version>
+            </dependency>
+```
+
+If the configuration center is file and the dependency is seata-all, please 
add the following configuration in the file.conf file of the application
+
+```java
+client {
+  undo {
+    logSerialization = "kryo"
+    }
+ }
+```
+
+If the configuration center is file and the dependency is 
seata-spring-boot-starter, you can convert it to yml format by yourself using 
yml
+
+```
+seata.client.undo.logSerialization=kryo
+```
+
+If it is a third-party configuration center such as nacos
+
+Please use the configuration of the related seata group, adding a dataid 
namespace: client. Undo. LogSerialization, value of kryo
+
+**D**:
+
+Modify the datetime type in the database table to timestamp
+
+**E:**
+
+Refer to this [pr](https://github.com/apache/incubator-seata/pull/3738), can 
cover or extension SPI way with class a new analytic way
+
+---
+
+<h3 id='41'>Q: 41. What are the precautions when Seata-Server uses DB as the 
storage mode? </h3>
+
+**A:**
+
+- When using the DB storage mode, it is necessary to pay attention to using 
the corresponding version of the table creation script of the seata-server. The 
address obtained by the table creation script is: 
https://github.com/apache/incubator-seata/tree/${version}/script/server/db,such 
as:Obtain the table creation script corresponding to seata-server 1.5.0,Can get 
upgrade seata 
https://github.com/apache/incubator-seata/tree/1.5.0/script/server/db server 
before ever address need to change  [...]
+- Do not enable read-write separation for the backend DB that seata-server 
relies on. After enabling read-write separation, the latency varies depending 
on the synchronization mode, seata-server As a stateless computing node, all 
states need to be verified in the DB storage. In the case of a large 
master-slave synchronization delay, it will lead to inaccurate read states, 
thereby causing transaction logic processing problems. For higher read and 
write performance, the DB can set the isol [...]
+
+---
+
+<h3 id='42'>Q: 42. Did Oracle fail to roll back using the timestamp field 
type? </h3>
+
+**A:**
+
+- [seata/seata-plugin at develop · apache/incubator-seata 
(github.com)](https://github.com/apache/incubator-seata/tree/develop/seata-plugin)
 Pull this plugin code, package it locally and import it yourself, or you can 
directly copy the code for spi extension support.
+
+---
+
+<h3 id='43'>Q: 43. Did the transaction not roll back after an exception was 
thrown? </h3>
+
+- Check if the exception has been caught and not thrown to the tm end. If rm 
has a global exception catcher,rm wraps the exception as a normal result 
response and gives it to tm, causing seata's transaction interceptor to fail to 
detect that the transaction has an exception. At this point, it will 
automatically check the code in the result within the code Return content that 
can determine if the business has an exception and throw an exception, or use 
[Seata api](/docs/user/api/) for rol [...]
+- Check whether the rm service throws an exception that causes the circuit 
breaker to be downgraded. If so, please refer to the above solution for 
handling.
+- If it is confirmed that there is no such possibility, the exception is 
explicitly thrown. Please retrieve the resolution result of xid and the 
registration status of rm from the tc end and tm and rm through the relevant 
xid. When the rm branch is registered, Register branch successfully can be 
retrieved through xid. Xid = 10.242.2.19:8094:3404997337200687005. For the log 
with branchId = xxxx, if it does not indicate that the branch is not 
registered, and it is in AT or XA mode, please  [...]
+- If the resolution result is rolled back but rm is not registered, you can 
determine whether there is a value at the rm calling end through 
Rootcontext.getXid. If there is no value, please refer to Q24.
+- How to determine if a data source is a proxy? If it is in AT mode, please 
set a breakpoint in ConnectionProxy#registry to see if it will enter. If it is 
in XA mode, set a breakpoint in ConnectionProxyXA#commit to see if it will 
enter. Remember, it is a branch that does not roll back!!
+
+---
+
+<h3 id='44'>Q: 44. How to deal with the @FeignClient annotation url not 
working and the error prompt "Load balancer does not have available server for 
client"? </h3>
+
+- This problem usually occurs when Zipkin is integrated with Seata.
+
+Solution
+
+- if you don't need to Feign link tracking, can through the Spring Cloud 
Sleuth provides the properties of the Spring. The Sleuth. Feign. Enabled = 
false to close it.
+- if need to use at the same time, in the start class to rule out @ 
SpringBootApplication(exclude = \{SeataFeignClientAutoConfiguration.class})
+
+Reconfigure the interceptor of Feign
+
+```java
+@Component
+@ConditionalOnClass({RequestInterceptor.class, GlobalTransactional.class})
+public class SetSeataInterceptor implements RequestInterceptor {
+
+    @Override
+    public void apply(RequestTemplate template) {
+
+        String currentXid = RootContext.getXID();
+        if (!StringUtils.isEmpty(currentXid)) {
+            template.header(RootContext.KEY_XID, currentXid);
+        }
+    }
+}
+```
+
+---
\ No newline at end of file
diff --git 
a/i18n/en/docusaurus-plugin-content-docs/version-v2.5/overview/faq.md 
b/i18n/en/docusaurus-plugin-content-docs/version-v2.5/overview/faq.md
index 0e627ee2dfe..42f79ff9535 100644
--- a/i18n/en/docusaurus-plugin-content-docs/version-v2.5/overview/faq.md
+++ b/i18n/en/docusaurus-plugin-content-docs/version-v2.5/overview/faq.md
@@ -309,7 +309,7 @@ At present, `seata-all` needs to use conf type `conf` 
files, and `properties` an
 2. `./mvnw clean install -DskipTests=true(Mac,Linux)` OR `mvnw.cmd clean 
install -DskipTests=true(Win) -P release-seata`。
 3. Unzip the corresponding compressed package in the target directory of the 
`distribution` module.
 4. Packaging commands after seata-1.5 (the latest development branch), `mvn 
-Prelease-seata -Dmaven.test.skip=true clean install -U`
-5. If you are on macOS platform with ARM architecture, please use: `mvn 
-Prelease-seata -Dmaven.test.skip=true clean install -U -P arrch64`
+5. If you are on macOS platform with ARM architecture, please use: `mvn 
-Prelease-seata -Dmaven.test.skip=true clean install -U`
 
 ---
 
diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/overview/faq.md 
b/i18n/zh-cn/docusaurus-plugin-content-docs/current/overview/faq.md
index 4d77cb2fbea..b13d05ae328 100644
--- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/overview/faq.md
+++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/overview/faq.md
@@ -141,6 +141,9 @@ Error: A fatal exception has occurred. Program will exit.导致 
seata-server 无
 <a href="#44" target="_self">44. 为什么会出现"xxx contains illegal character!"的错误? 
</a>
 <br/>
 
+<a href="#45" target="_self">45. 为什么namingserver和console打包编译需要JDK25版本?& 
为什么namingserver和console没有参与编译打包? </a>
+<br/>
+
 ---
 
 <h3 id='1'>Q: 1.Seata 目前可以用于生产环境吗?</h3>
@@ -325,7 +328,7 @@ ps: oracle 同理;1.2.0 支持 mysql 驱动多版本隔离,无需再添加驱
 2. ./mvnw clean install -DskipTests=true(Mac,Linux) 或 mvnw.cmd clean install 
-DskipTests=true(Win) -P release-seata。
 3. 在 distribution 模块的 target 目录下解压相应的压缩包即可。
 4. seata-1.5之后(最新develop分支)的打包命令:mvn -Prelease-seata -Dmaven.test.skip=true 
clean install -U
-5. 如果你是mac os平台,并且是arm架构,请使用: mvn -Prelease-seata -Dmaven.test.skip=true clean 
install -U -P arrch64
+5. 如果你是mac os平台,并且是arm架构,请使用: mvn -Prelease-seata -Dmaven.test.skip=true clean 
install -U
 ```
 
 ---
@@ -735,3 +738,26 @@ public class SetSeataInterceptor implements 
RequestInterceptor {
 - 检查主键中是否包含逗号。
 
 ---
+
+<h3 id='45'>Q: 45. 为什么namingserver和console打包编译需要JDK25版本?& 
为什么namingserver和console没有参与编译打包? </h3>
+
+1. 目前做了什么变更?
+   - 
目前namingserver的目标JDK编译版本被设置为25,并且新增了profile来保证在JDK25环境下才会将namingserver和console加入进编译和打包
+   - ```
+     <!-- profile: onlyBuildOnJDK25+ -->
+             <profile>
+                 <id>JDK25Plus</id>
+                 <activation>
+                     <jdk>[25,)</jdk>
+                 </activation>
+                 <modules>
+                     <module>namingserver</module>
+                     <module>console</module>
+                 </modules>
+             </profile>
+     ```
+   - 若使用JDK25以下的版本,编译打包会默认将namingserver和console模块排除。
+2. 为什么要使用JDK25?
+   - 为了支持 namingserver 和 console 后续版本引入的 Spring AI 依赖,必须将 Spring Boot 和 JDK 
版本升级。选择 JDK 25 作为目标版本,不仅满足 Spring AI 的技术要求,也为未来新功能的开发和全新功能的适配奠定基础,确保技术栈的前瞻性和扩展性。
+
+---
diff --git 
a/i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.5/overview/faq.md 
b/i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.5/overview/faq.md
index 4d77cb2fbea..d526b605cb4 100644
--- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.5/overview/faq.md
+++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.5/overview/faq.md
@@ -325,7 +325,7 @@ ps: oracle 同理;1.2.0 支持 mysql 驱动多版本隔离,无需再添加驱
 2. ./mvnw clean install -DskipTests=true(Mac,Linux) 或 mvnw.cmd clean install 
-DskipTests=true(Win) -P release-seata。
 3. 在 distribution 模块的 target 目录下解压相应的压缩包即可。
 4. seata-1.5之后(最新develop分支)的打包命令:mvn -Prelease-seata -Dmaven.test.skip=true 
clean install -U
-5. 如果你是mac os平台,并且是arm架构,请使用: mvn -Prelease-seata -Dmaven.test.skip=true clean 
install -U -P arrch64
+5. 如果你是mac os平台,并且是arm架构,请使用: mvn -Prelease-seata -Dmaven.test.skip=true clean 
install -U
 ```
 
 ---


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to