This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch ha-config-to-master
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit af98ff812a8a3eee39ce79518cca92be669f6da7
Merge: cc093c6 54cc73a
Author: Daan Hoogland <daan.hoogl...@shapeblue.com>
AuthorDate: Tue Jan 14 14:37:40 2020 +0100

    Merge branch '4.13' into ha-config-to-master

 .../java/com/cloud/ha/HighAvailabilityManager.java |  46 +++++-
 .../main/java/com/cloud/configuration/Config.java  |  43 +----
 .../configuration/ConfigurationManagerImpl.java    | 174 ++++++++++-----------
 .../com/cloud/ha/HighAvailabilityManagerImpl.java  | 114 +++++++-------
 .../main/java/com/cloud/test/DatabaseConfig.java   |  59 +++----
 5 files changed, 219 insertions(+), 217 deletions(-)

diff --cc server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java
index 348a417,076f500..01df157
--- a/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java
+++ b/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java
@@@ -16,32 -16,9 +16,6 @@@
  // under the License.
  package com.cloud.ha;
  
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.Executors;
- import java.util.concurrent.ScheduledExecutorService;
- import java.util.concurrent.TimeUnit;
- 
- import javax.inject.Inject;
- import javax.naming.ConfigurationException;
- 
- import 
org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService;
- import org.apache.cloudstack.framework.config.ConfigKey;
- import org.apache.cloudstack.framework.config.Configurable;
- import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
- import org.apache.cloudstack.managed.context.ManagedContext;
- import org.apache.cloudstack.managed.context.ManagedContextRunnable;
- import org.apache.cloudstack.management.ManagementServerHost;
- import org.apache.log4j.Logger;
- import org.apache.log4j.NDC;
- 
--import com.cloud.agent.AgentManager;
--import com.cloud.alert.AlertManager;
--import com.cloud.cluster.ClusterManagerListener;
- import com.cloud.configuration.Config;
  import com.cloud.dc.ClusterDetailsDao;
  import com.cloud.dc.DataCenterVO;
  import com.cloud.dc.HostPodVO;
@@@ -103,14 -100,11 +97,16 @@@ import javax.naming.ConfigurationExcept
   *         ha.retry.wait | time to wait before retrying the work item | 
seconds | 120 || || stop.retry.wait | time to wait
   *         before retrying the stop | seconds | 120 || * }
   **/
- public class HighAvailabilityManagerImpl extends ManagerBase implements 
HighAvailabilityManager, ClusterManagerListener, Configurable {
+ public class HighAvailabilityManagerImpl extends ManagerBase implements 
Configurable, HighAvailabilityManager, ClusterManagerListener {
+ 
+     private static final int SECONDS_TO_MILLISECONDS_FACTOR = 1000;
  
      protected static final Logger s_logger = 
Logger.getLogger(HighAvailabilityManagerImpl.class);
 +    private ConfigKey<Integer> MaxRetries = new ConfigKey<>("Advanced", 
Integer.class,
 +            "max.retries","5",
 +            "Total number of attempts for trying migration of a VM.",
 +            true, ConfigKey.Scope.Cluster);
 +
      WorkerThread[] _workers;
      boolean _stopped;
      long _timeToSleep;
@@@ -1037,17 -988,23 +1015,37 @@@
          return haWorks.size() > 0;
      }
  
 +    @Override
 +    public boolean hasPendingMigrationsWork(long vmId) {
 +        List<HaWorkVO> haWorks = _haDao.listPendingMigrationsForVm(vmId);
 +        for (HaWorkVO work : haWorks) {
 +            if (work.getTimesTried() <= _maxRetries) {
 +                return true;
 +            } else {
 +                s_logger.warn("HAWork Job of migration type " + work + " 
found in database which has max " +
 +                        "retries more than " + _maxRetries + " but still not 
in Done, Cancelled, or Error State");
 +            }
 +        }
 +        return false;
 +    }
++
+     /**
+      * @return The name of the component that provided this configuration
+      * variable.  This value is saved in the database so someone can easily
+      * identify who provides this variable.
+      **/
+     @Override
+     public String getConfigComponentName() {
+         return HighAvailabilityManager.class.getSimpleName();
+     }
+ 
+     /**
+      * @return The list of config keys provided by this configuable.
+      */
+     @Override
+     public ConfigKey<?>[] getConfigKeys() {
+         return new ConfigKey[] {TimeBetweenCleanup, MaxRetries, TimeToSleep, 
TimeBetweenFailures,
+             StopRetryInterval, RestartRetryInterval, MigrateRetryInterval, 
InvestigateRetryInterval,
+             HAWorkers, ForceHA};
+     }
  }

Reply via email to