teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

内容の修正

2019/08/01 10:09

投稿

rnosh
rnosh

スコア171

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

内容の修正

2019/08/01 10:09

投稿

rnosh
rnosh

スコア171

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

内容の追記

2019/08/01 10:08

投稿

rnosh
rnosh

スコア171

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
- try {
37
+ try {
25
- // SQL実行
38
+ // SQL実行
26
- } catch (SQLException e) {
39
+ } catch (SQLException e) {
27
- int errCode = e.getErrorCode();
40
+ int errCode = e.getErrorCode();
28
- if (errCode == 1205) {
41
+ if (errCode == 1205) {
29
- Thread.sleep(10000);
42
+ Thread.sleep(10000);
30
- continue;
43
+ continue;
31
- } else {
44
+ } else {
32
- throw e:
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

内容の修正

2019/08/01 09:05

投稿

rnosh
rnosh

スコア171

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

文言の追加

2019/08/01 08:58

投稿

rnosh
rnosh

スコア171

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 → デッドロック対処メソッド)