2323import java .util .HashMap ;
2424import java .util .List ;
2525import java .util .Map ;
26+ import java .util .concurrent .Executors ;
2627import java .util .concurrent .ScheduledExecutorService ;
2728import java .util .concurrent .TimeUnit ;
2829
123124@ Local (value = {AutoScaleService .class , AutoScaleManager .class })
124125public class AutoScaleManagerImpl <Type > extends ManagerBase implements AutoScaleManager , AutoScaleService {
125126 private static final Logger s_logger = Logger .getLogger (AutoScaleManagerImpl .class );
126- private ScheduledExecutorService _executor = null ;
127+ private ScheduledExecutorService _executor = Executors . newScheduledThreadPool ( 1 ) ;
127128
128129 @ Inject
129130 EntityManager _entityMgr ;
@@ -1423,6 +1424,20 @@ public void doScaleDown(final long groupId) {
14231424 final long vmId = removeLBrule (asGroup );
14241425 if (vmId != -1 ) {
14251426 long profileId = asGroup .getProfileId ();
1427+
1428+ // update group-vm mapping
1429+ _autoScaleVmGroupVmMapDao .remove (groupId , vmId );
1430+ // update last_quiettime
1431+ List <AutoScaleVmGroupPolicyMapVO > GroupPolicyVOs = _autoScaleVmGroupPolicyMapDao .listByVmGroupId (groupId );
1432+ for (AutoScaleVmGroupPolicyMapVO GroupPolicyVO : GroupPolicyVOs ) {
1433+ AutoScalePolicyVO vo = _autoScalePolicyDao .findById (GroupPolicyVO .getPolicyId ());
1434+ if (vo .getAction ().equals ("scaledown" )) {
1435+ vo .setLastQuiteTime (new Date ());
1436+ _autoScalePolicyDao .persist (vo );
1437+ break ;
1438+ }
1439+ }
1440+
14261441 // get destroyvmgrace param
14271442 AutoScaleVmProfileVO asProfile = _autoScaleVmProfileDao .findById (profileId );
14281443 Integer destroyVmGracePeriod = asProfile .getDestroyVmGraceperiod ();
@@ -1431,21 +1446,9 @@ public void doScaleDown(final long groupId) {
14311446 @ Override
14321447 public void run () {
14331448 try {
1434- // destroy vm
1449+
14351450 _userVmManager .destroyVm (vmId );
1436- // update group-vm mapping
1437- _autoScaleVmGroupVmMapDao .remove (groupId , vmId );
1438- // update last_quiettime
1439- List <AutoScaleVmGroupPolicyMapVO > GroupPolicyVOs = _autoScaleVmGroupPolicyMapDao
1440- .listByVmGroupId (groupId );
1441- for (AutoScaleVmGroupPolicyMapVO GroupPolicyVO : GroupPolicyVOs ) {
1442- AutoScalePolicyVO vo = _autoScalePolicyDao
1443- .findById (GroupPolicyVO .getPolicyId ());
1444- if (vo .getAction ().equals ("scaledown" )) {
1445- vo .setLastQuiteTime (new Date ());
1446- break ;
1447- }
1448- }
1451+
14491452 } catch (ResourceUnavailableException e ) {
14501453 e .printStackTrace ();
14511454 } catch (ConcurrentOperationException e ) {
0 commit comments