質問編集履歴

5

内容の修正

2019/08/01 10:09

投稿

rnosh
rnosh

スコア171

test CHANGED
File without changes
test CHANGED
@@ -108,7 +108,7 @@
108
108
 
109
109
  ・元々の作りの問題で、デッドロックの発生箇所はログから判明しているが、突合した相手のプロセスは判明していないため、強制的にデッドロックを発生させており、再現環境ではない。
110
110
 
111
- **→ Eclipseの表示ビューからnew SQLExceptionをスローしている**
111
+ **→ Eclipseの表示ビューから強制的にnew SQLExceptionをスローしているがその影響はあるか?**
112
112
 
113
113
 
114
114
 

4

内容の修正

2019/08/01 10:09

投稿

rnosh
rnosh

スコア171

test CHANGED
@@ -1 +1 @@
1
- Thread.sleepがうまく動かない
1
+ Thread.sleep時にInterruptedException発生してしま
test CHANGED
@@ -17,6 +17,8 @@
17
17
  ・Thread.sleep使うの初めて。。。
18
18
 
19
19
  ・所定条件を満たした際、Thread.sleep(n * 1000)で待機処理をしたい。
20
+
21
+ **実装したThread.sleep(n * 1000)まで到達し、実行されていることは確認済み**
20
22
 
21
23
 
22
24
 

3

内容の追記

2019/08/01 10:08

投稿

rnosh
rnosh

スコア171

test CHANGED
File without changes
test CHANGED
@@ -38,35 +38,63 @@
38
38
 
39
39
  ### 該当のソースコード
40
40
 
41
-
41
+ ■元々のソース
42
42
 
43
43
  ```java
44
44
 
45
- for (int retryCnt = 0; retryCnt <= maxCnt; retryCnt++) {
45
+ public List<String> executeSQL(param) {
46
46
 
47
- try {
47
+ return executeSql;
48
48
 
49
- // SQL実行
49
+ }
50
50
 
51
- } catch (SQLException e) {
51
+ ```
52
52
 
53
- int errCode = e.getErrorCode();
54
53
 
55
- if (errCode == 1205) {
56
54
 
57
- Thread.sleep(10000);
55
+ ■修正後
58
56
 
59
- continue;
57
+ ```java
60
58
 
61
- } else {
59
+ public List<String> executeSQL(param) {
62
60
 
61
+ return deadlockRetry(param);
62
+
63
+ }
64
+
65
+
66
+
67
+ // デッドロック対処メソッド
68
+
69
+ private deadlockRetry(param) {
70
+
71
+ for (int retryCnt = 0; retryCnt <= maxCnt; retryCnt++) {
72
+
73
+ try {
74
+
75
+ // SQL実行
76
+
77
+ } catch (SQLException e) {
78
+
79
+ int errCode = e.getErrorCode();
80
+
81
+ if (errCode == 1205) {
82
+
83
+ Thread.sleep(10000);
84
+
85
+ continue;
86
+
87
+ } else {
88
+
63
- throw e:
89
+ throw e:
90
+
91
+ }
64
92
 
65
93
  }
66
94
 
95
+ break;
96
+
67
97
  }
68
-
69
- break;
70
98
 
71
99
  }
72
100
 
@@ -77,6 +105,8 @@
77
105
  ### 試したこと、状況
78
106
 
79
107
  ・元々の作りの問題で、デッドロックの発生箇所はログから判明しているが、突合した相手のプロセスは判明していないため、強制的にデッドロックを発生させており、再現環境ではない。
108
+
109
+ **→ Eclipseの表示ビューからnew SQLExceptionをスローしている。**
80
110
 
81
111
 
82
112
 

2

内容の修正

2019/08/01 09:05

投稿

rnosh
rnosh

スコア171

test CHANGED
File without changes
test CHANGED
@@ -90,7 +90,7 @@
90
90
 
91
91
  ・Thread.sleepの実行位置は最初に動くmainスレッドからすると4スレッド目
92
92
 
93
- (main → logic → dao → デッドロック対処メソッド)
93
+ (main → logic → dao:SQL実行dao:デッドロック対処メソッド)
94
94
 
95
95
  ・デバッグで確認するも呼び出し元の上位3スレッド以外のスレッドは存在しない。
96
96
 

1

文言の追加

2019/08/01 08:58

投稿

rnosh
rnosh

スコア171

test CHANGED
File without changes
test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- ### 状況
77
+ ### 試したこと、状況
78
78
 
79
79
  ・元々の作りの問題で、デッドロックの発生箇所はログから判明しているが、突合した相手のプロセスは判明していないため、強制的にデッドロックを発生させており、再現環境ではない。
80
80
 
@@ -83,6 +83,8 @@
83
83
  ・私自身がThreadについてあまり知見が深くない。
84
84
 
85
85
  ・調べたところ、他スレッドからの干渉があった場合に当該エラーが発生することは認識。
86
+
87
+ → それ以上の調査結果が得られなかった・・・
86
88
 
87
89
 
88
90