详解 Seata AT 模式事务隔离级别与全局锁设计

复制public T doExecute(Object... args) throws Throwable {      Connection conn = statementProxy.getConnection();      // ... ...      try {          // ... ...          while (true) {              try {                  // ... ...                  if (RootContext.inGlobalTransaction() || RootContext.requireGlobalLock()) {                      // Do the same thing under either @GlobalTransactional or @GlobalLock,                       // that onlycheck the global lock  here.                      statementProxy.getConnectionProxy().checkLock(lockKeys);                  } else {                      throw new RuntimeException("Unknown situation!");                  }                  break;              } catch (LockConflictException lce) {                  if (sp != null) {                      conn.rollback(sp);                  } else {                      conn.rollback();                  }                  // trigger retry                  lockRetryController.sleep(lce);              }          }      } finally {          // ...      }  1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.

THE END