質問編集履歴
5
内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -53,7 +53,7 @@
|
|
53
53
|
|
54
54
|
### 試したこと、状況
|
55
55
|
・元々の作りの問題で、デッドロックの発生箇所はログから判明しているが、突合した相手のプロセスは判明していないため、強制的にデッドロックを発生させており、再現環境ではない。
|
56
|
-
**→ Eclipseの表示ビューからnew SQLExceptionをスローしている
|
56
|
+
**→ Eclipseの表示ビューから強制的にnew SQLExceptionをスローしているがその影響はあるか?**
|
57
57
|
|
58
58
|
・私自身がThreadについてあまり知見が深くない。
|
59
59
|
・調べたところ、他スレッドからの干渉があった場合に当該エラーが発生することは認識。
|
4
内容の修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Thread.sleepが
|
1
|
+
Thread.sleep時にInterruptedExceptionが発生してしまう。
|
body
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
|
9
9
|
・Thread.sleep使うの初めて。。。
|
10
10
|
・所定条件を満たした際、Thread.sleep(n * 1000)で待機処理をしたい。
|
11
|
+
**実装したThread.sleep(n * 1000)まで到達し、実行されていることは確認済み**
|
11
12
|
|
12
13
|
### バージョン
|
13
14
|
Java6
|
3
内容の追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -18,26 +18,41 @@
|
|
18
18
|
```
|
19
19
|
|
20
20
|
### 該当のソースコード
|
21
|
+
■元々のソース
|
22
|
+
```java
|
23
|
+
public List<String> executeSQL(param) {
|
24
|
+
return executeSql;
|
25
|
+
}
|
26
|
+
```
|
21
27
|
|
28
|
+
■修正後
|
22
29
|
```java
|
30
|
+
public List<String> executeSQL(param) {
|
31
|
+
return deadlockRetry(param);
|
32
|
+
}
|
33
|
+
|
34
|
+
// デッドロック対処メソッド
|
35
|
+
private deadlockRetry(param) {
|
23
|
-
for (int retryCnt = 0; retryCnt <= maxCnt; retryCnt++) {
|
36
|
+
for (int retryCnt = 0; retryCnt <= maxCnt; retryCnt++) {
|
24
|
-
|
37
|
+
try {
|
25
|
-
|
38
|
+
// SQL実行
|
26
|
-
|
39
|
+
} catch (SQLException e) {
|
27
|
-
|
40
|
+
int errCode = e.getErrorCode();
|
28
|
-
|
41
|
+
if (errCode == 1205) {
|
29
|
-
|
42
|
+
Thread.sleep(10000);
|
30
|
-
|
43
|
+
continue;
|
31
|
-
|
44
|
+
} else {
|
32
|
-
|
45
|
+
throw e:
|
46
|
+
}
|
33
47
|
}
|
48
|
+
break;
|
34
49
|
}
|
35
|
-
break;
|
36
50
|
}
|
37
51
|
```
|
38
52
|
|
39
53
|
### 試したこと、状況
|
40
54
|
・元々の作りの問題で、デッドロックの発生箇所はログから判明しているが、突合した相手のプロセスは判明していないため、強制的にデッドロックを発生させており、再現環境ではない。
|
55
|
+
**→ Eclipseの表示ビューからnew SQLExceptionをスローしている。**
|
41
56
|
|
42
57
|
・私自身がThreadについてあまり知見が深くない。
|
43
58
|
・調べたところ、他スレッドからの干渉があった場合に当該エラーが発生することは認識。
|
2
内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
→ それ以上の調査結果が得られなかった・・・
|
45
45
|
|
46
46
|
・Thread.sleepの実行位置は最初に動くmainスレッドからすると4スレッド目
|
47
|
-
(main → logic → dao → デッドロック対処メソッド)
|
47
|
+
(main → logic → dao:SQL実行 → dao:デッドロック対処メソッド)
|
48
48
|
・デバッグで確認するも呼び出し元の上位3スレッド以外のスレッドは存在しない。
|
49
49
|
|
50
50
|
### 聞きたいこと
|
1
文言の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -36,11 +36,12 @@
|
|
36
36
|
}
|
37
37
|
```
|
38
38
|
|
39
|
-
### 状況
|
39
|
+
### 試したこと、状況
|
40
40
|
・元々の作りの問題で、デッドロックの発生箇所はログから判明しているが、突合した相手のプロセスは判明していないため、強制的にデッドロックを発生させており、再現環境ではない。
|
41
41
|
|
42
42
|
・私自身がThreadについてあまり知見が深くない。
|
43
43
|
・調べたところ、他スレッドからの干渉があった場合に当該エラーが発生することは認識。
|
44
|
+
→ それ以上の調査結果が得られなかった・・・
|
44
45
|
|
45
46
|
・Thread.sleepの実行位置は最初に動くmainスレッドからすると4スレッド目
|
46
47
|
(main → logic → dao → デッドロック対処メソッド)
|