@@ -75,76 +75,82 @@ public void queueShutdownJob(JobInterface job, Source source, boolean isManualKi
75
75
76
76
public boolean shutdownJob (JobInterface job , Source source , boolean isManualKill ) {
77
77
78
- if (jobManager .shutdownJob (job )) {
79
-
80
- /*
81
- * Satisfy any dependencies on just the
82
- * job record, not layers or frames.
83
- */
84
- satisfyWhatDependsOn (job );
85
-
86
- if (departmentManager .isManaged (job )) {
87
- departmentManager .syncJobsWithTask (job );
88
- }
89
-
90
- if (isManualKill ) {
78
+ if (isManualKill && source .getReason ().isEmpty ()) {
79
+ logger .info (job .getName () + "/" + job .getId () +
80
+ " **Invalid Job Kill Request** for " + source .toString ());
81
+ }
82
+ else {
83
+ if (jobManager .shutdownJob (job )) {
91
84
92
- logger .info (job .getName () + "/" + job .getId () +
93
- " is being manually killed by " + source .toString ());
85
+ /*
86
+ * Satisfy any dependencies on just the
87
+ * job record, not layers or frames.
88
+ */
89
+ satisfyWhatDependsOn (job );
94
90
95
- /**
96
- * Sleep a bit here in case any frames were
97
- * dispatched during the job shutdown process.
98
- */
99
- try {
100
- Thread .sleep (3000 );
101
- } catch (InterruptedException e1 ) {
102
- logger .info (job .getName () + "/" + job .getId () +
103
- " shutdown thread was interrupted." );
104
- Thread .currentThread ().interrupt ();
91
+ if (departmentManager .isManaged (job )) {
92
+ departmentManager .syncJobsWithTask (job );
105
93
}
106
94
107
- FrameSearchInterface search = frameSearchFactory .create (job );
108
- FrameSearchCriteria newCriteria = search .getCriteria ();
109
- FrameStateSeq states = newCriteria .getStates ().toBuilder ()
110
- .addFrameStates (FrameState .RUNNING )
111
- .build ();
112
- search .setCriteria (newCriteria .toBuilder ().setStates (states ).build ());
95
+ if (isManualKill ) {
113
96
114
- for (FrameInterface frame : jobManager .findFrames (search )) {
97
+ logger .info (job .getName () + "/" + job .getId () +
98
+ " is being manually killed by " + source .toString ());
115
99
116
- VirtualProc proc = null ;
100
+ /**
101
+ * Sleep a bit here in case any frames were
102
+ * dispatched during the job shutdown process.
103
+ */
117
104
try {
118
- proc = hostManager . findVirtualProc ( frame );
119
- }
120
- catch ( DataAccessException e ) {
121
- logger . warn ( "Unable to find proc to kill frame " + frame +
122
- " on job shutdown operation, " + e );
105
+ Thread . sleep ( 3000 );
106
+ } catch ( InterruptedException e1 ) {
107
+ logger . info ( job . getName () + "/" + job . getId () +
108
+ " shutdown thread was interrupted." );
109
+ Thread . currentThread (). interrupt ( );
123
110
}
124
111
125
- if (manualStopFrame (frame , FrameState .WAITING )) {
112
+ FrameSearchInterface search = frameSearchFactory .create (job );
113
+ FrameSearchCriteria newCriteria = search .getCriteria ();
114
+ FrameStateSeq states = newCriteria .getStates ().toBuilder ()
115
+ .addFrameStates (FrameState .RUNNING )
116
+ .build ();
117
+ search .setCriteria (newCriteria .toBuilder ().setStates (states ).build ());
118
+
119
+ for (FrameInterface frame : jobManager .findFrames (search )) {
120
+
121
+ VirtualProc proc = null ;
126
122
try {
127
- if (proc != null ) {
128
- kill (proc , source );
129
- }
130
- } catch (DataAccessException e ) {
131
- logger .warn ("Failed to kill frame " + frame +
123
+ proc = hostManager .findVirtualProc (frame );
124
+ }
125
+ catch (DataAccessException e ) {
126
+ logger .warn ("Unable to find proc to kill frame " + frame +
132
127
" on job shutdown operation, " + e );
133
128
}
134
- catch (Exception e ) {
135
- logger .warn ("error killing frame: " + frame );
129
+
130
+ if (manualStopFrame (frame , FrameState .WAITING )) {
131
+ try {
132
+ if (proc != null ) {
133
+ kill (proc , source );
134
+ }
135
+ } catch (DataAccessException e ) {
136
+ logger .warn ("Failed to kill frame " + frame +
137
+ " on job shutdown operation, " + e );
138
+ }
139
+ catch (Exception e ) {
140
+ logger .warn ("error killing frame: " + frame );
141
+ }
136
142
}
137
143
}
138
144
}
139
- }
140
145
141
- /*
142
- * Send mail after all frames have been stopped or else the email
143
- * will have inaccurate numbers.
144
- */
145
- emailSupport .sendShutdownEmail (job );
146
+ /*
147
+ * Send mail after all frames have been stopped or else the email
148
+ * will have inaccurate numbers.
149
+ */
150
+ emailSupport .sendShutdownEmail (job );
146
151
147
- return true ;
152
+ return true ;
153
+ }
148
154
}
149
155
150
156
return false ;
0 commit comments