/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.sa.engine; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import com.emc.sa.model.dao.ModelClient; import com.emc.storageos.coordinator.client.service.DrPostFailoverHandler; import com.emc.storageos.db.client.model.uimodels.Order; import com.emc.storageos.db.client.model.uimodels.OrderStatus; /** * Dr failover handler for inflight order cleanup. It goes through all EXECUTING orders and kill them. */ public class OrderCleanupHandler extends DrPostFailoverHandler { private static final Logger log = LoggerFactory.getLogger(OrderCleanupHandler.class); @Autowired private ModelClient modelClient; @Autowired private ExecutionEngineMonitor monitor; public OrderCleanupHandler() { } @Override protected void execute() { // cleanup enginer monitor getCoordinator().deletePath(ExecutionEngineMonitor.BASE_PATH); log.info("Start processing inflight orders"); List<Order> orders = modelClient.orders().findByOrderStatus(OrderStatus.EXECUTING); for(Order order : orders) { String message = "Order processing terminated because of site failover, order was not completed. " + "You may see partial completion on storage arrays. Check with your administrator to do cleanup if necessary."; order.setMessage(message); modelClient.save(order); monitor.killOrder(order.getId(), message); } } }