|
70 | 70 |
|
71 | 71 | import okhttp3.Response;
|
72 | 72 |
|
| 73 | +import static java.net.HttpURLConnection.HTTP_NOT_FOUND; |
| 74 | + |
73 | 75 | public class V1Controller extends KubernetesController {
|
74 | 76 |
|
75 | 77 | private static final Logger LOG =
|
@@ -219,54 +221,74 @@ V1StatefulSet getStatefulSet() throws ApiException {
|
219 | 221 | null, null, null);
|
220 | 222 | }
|
221 | 223 |
|
222 |
| - boolean deleteService() { |
223 |
| - try { |
224 |
| - final Response response = coreClient.deleteNamespacedServiceCall(getTopologyName(), |
| 224 | + void deleteService() { |
| 225 | + try (Response response = coreClient.deleteNamespacedServiceCall(getTopologyName(), |
225 | 226 | getNamespace(), null, null, 0, null,
|
226 |
| - KubernetesConstants.DELETE_OPTIONS_PROPAGATION_POLICY, null, null).execute(); |
227 |
| - |
228 |
| - if (response.isSuccessful()) { |
229 |
| - LOG.log(Level.INFO, "Headless Service for the Job [" + getTopologyName() |
230 |
| - + "] in namespace [" + getNamespace() + "] is deleted."); |
231 |
| - return true; |
232 |
| - } else { |
| 227 | + KubernetesConstants.DELETE_OPTIONS_PROPAGATION_POLICY, null, null).execute()) { |
| 228 | + |
| 229 | + if (!response.isSuccessful()) { |
| 230 | + if (response.code() == HTTP_NOT_FOUND) { |
| 231 | + LOG.log(Level.WARNING, "Deleting non-existent Kubernetes headless service for Topology: " |
| 232 | + + getTopologyName()); |
| 233 | + return; |
| 234 | + } |
233 | 235 | LOG.log(Level.SEVERE, "Error when deleting the Service of the job ["
|
234 |
| - + getTopologyName() + "] in namespace [" + getNamespace() + "]"); |
235 |
| - LOG.log(Level.SEVERE, "Error killing topoogy message:" + response.message()); |
| 236 | + + getTopologyName() + "] in namespace [" + getNamespace() + "]"); |
| 237 | + LOG.log(Level.SEVERE, "Error killing topology message:" + response.message()); |
236 | 238 | KubernetesUtils.logResponseBodyIfPresent(LOG, response);
|
237 | 239 |
|
238 | 240 | throw new TopologyRuntimeManagementException(
|
239 |
| - KubernetesUtils.errorMessageFromResponse(response)); |
| 241 | + KubernetesUtils.errorMessageFromResponse(response)); |
240 | 242 | }
|
241 |
| - } catch (IOException | ApiException e) { |
242 |
| - KubernetesUtils.logExceptionWithDetails(LOG, "Error deleting topology service", e); |
243 |
| - return false; |
| 243 | + } catch (ApiException e) { |
| 244 | + if (e.getCode() == HTTP_NOT_FOUND) { |
| 245 | + LOG.log(Level.WARNING, "Tried to delete a non-existent Kubernetes service for Topology: " |
| 246 | + + getTopologyName()); |
| 247 | + return; |
| 248 | + } |
| 249 | + throw new TopologyRuntimeManagementException("Error deleting topology [" |
| 250 | + + getTopologyName() + "] Kubernetes service", e); |
| 251 | + } catch (IOException e) { |
| 252 | + throw new TopologyRuntimeManagementException("Error deleting topology [" |
| 253 | + + getTopologyName() + "] Kubernetes service", e); |
244 | 254 | }
|
| 255 | + LOG.log(Level.INFO, "Headless Service for the Job [" + getTopologyName() |
| 256 | + + "] in namespace [" + getNamespace() + "] is deleted."); |
245 | 257 | }
|
246 | 258 |
|
247 |
| - boolean deleteStatefulSet() { |
248 |
| - try { |
249 |
| - final Response response = appsClient.deleteNamespacedStatefulSetCall(getTopologyName(), |
| 259 | + void deleteStatefulSet() { |
| 260 | + try (Response response = appsClient.deleteNamespacedStatefulSetCall(getTopologyName(), |
250 | 261 | getNamespace(), null, null, 0, null,
|
251 |
| - KubernetesConstants.DELETE_OPTIONS_PROPAGATION_POLICY, null, null).execute(); |
252 |
| - |
253 |
| - if (response.isSuccessful()) { |
254 |
| - LOG.log(Level.INFO, "StatefulSet for the Job [" + getTopologyName() |
255 |
| - + "] in namespace [" + getNamespace() + "] is deleted."); |
256 |
| - return true; |
257 |
| - } else { |
| 262 | + KubernetesConstants.DELETE_OPTIONS_PROPAGATION_POLICY, null, null).execute()) { |
| 263 | + |
| 264 | + if (!response.isSuccessful()) { |
| 265 | + if (response.code() == HTTP_NOT_FOUND) { |
| 266 | + LOG.log(Level.WARNING, "Tried to delete a non-existent StatefulSet for Topology: " |
| 267 | + + getTopologyName()); |
| 268 | + return; |
| 269 | + } |
258 | 270 | LOG.log(Level.SEVERE, "Error when deleting the StatefulSet of the job ["
|
259 |
| - + getTopologyName() + "] in namespace [" + getNamespace() + "]"); |
| 271 | + + getTopologyName() + "] in namespace [" + getNamespace() + "]"); |
260 | 272 | LOG.log(Level.SEVERE, "Error killing topology message: " + response.message());
|
261 | 273 | KubernetesUtils.logResponseBodyIfPresent(LOG, response);
|
262 | 274 |
|
263 | 275 | throw new TopologyRuntimeManagementException(
|
264 |
| - KubernetesUtils.errorMessageFromResponse(response)); |
| 276 | + KubernetesUtils.errorMessageFromResponse(response)); |
265 | 277 | }
|
266 |
| - } catch (IOException | ApiException e) { |
267 |
| - KubernetesUtils.logExceptionWithDetails(LOG, "Error deleting topology", e); |
268 |
| - return false; |
| 278 | + } catch (ApiException e) { |
| 279 | + if (e.getCode() == HTTP_NOT_FOUND) { |
| 280 | + LOG.log(Level.WARNING, "Tried to delete a non-existent StatefulSet for Topology: " |
| 281 | + + getTopologyName()); |
| 282 | + return; |
| 283 | + } |
| 284 | + throw new TopologyRuntimeManagementException("Error deleting topology [" |
| 285 | + + getTopologyName() + "] Kubernetes StatefulSet", e); |
| 286 | + } catch (IOException e) { |
| 287 | + throw new TopologyRuntimeManagementException("Error deleting topology [" |
| 288 | + + getTopologyName() + "] Kubernetes StatefulSet", e); |
269 | 289 | }
|
| 290 | + LOG.log(Level.INFO, "StatefulSet for the Job [" + getTopologyName() |
| 291 | + + "] in namespace [" + getNamespace() + "] is deleted."); |
270 | 292 | }
|
271 | 293 |
|
272 | 294 | protected List<String> getExecutorCommand(String containerId) {
|
|
0 commit comments