codingapi / codingapi/tx-lcn

事务超时,发起方服务没有清理事务(clean transaction)的过程

オープン
#280 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
v/preBug
主要言語
Java
スター
4.2k
フォーク
1.4k
PR マージ指標
30日以内にマージされた PR はありません

説明

- 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
(不知道是不是bug,先请谅解)
服务A、B,A发起事务调用B。
测试A服务和B服务超时后事务的控制过程(通过断点实现,模拟业务处理时间过长造成整体事务超时),发现发起方A服务的事务没有清理(clean transaction)的过程,导致A服务锁表。参与方B服务有clean transaction的过程。

如下是参与方设置断点导致整体事务超时的事务过程:
![image](https://user-images.githubusercontent.com/7507599/53802418-bebc0b00-3f7c-11e9-9d3d-871316a025ac.png)

如下是发起方设置断点导致整体事务超时的事务过程:
![image](https://user-images.githubusercontent.com/7507599/53802758-9bde2680-3f7d-11e9-9caf-df232c19133a.png)

### 2. Environment:
- JDK version: 1.8
- OS: win7
- TX-LCN version: 5.0.1
- Others: Oracle 数据库

### 3. Exception Stacktrace

```
Paste your Exception Stacktrace here!
```

### 4. Tour Idea

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

まず、説明されているブレークポイントベースの遅延を使ってサービス A と B の間のタイムアウトフローを再現し、その後、スクリーンショットに示されているイニシエーターと参加者のトランザクションのクリーンアップシーケンスを比較します。イニシエーターがトランザクションを保持してテーブルをロックする理由を追跡します。完了とは、全体のトランザクションがタイムアウトした後にイニシエーターがクリーンアップを実行し、ロックを残さないことです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
databases, distributed-systems
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。