@@ -453,8 +453,9 @@ protected void removeSegment(String segmentName) {
453453 String siteId = getDefaultSiteId ();
454454 String enforcementPointPath = getDefaultEnforcementPointPath (siteId );
455455 SegmentPorts segmentPortsService = (SegmentPorts ) nsxService .apply (SegmentPorts .class );
456- PolicyGroupMembersListResult segmentPortsList = segmentPortsService .list (DEFAULT_DOMAIN , segmentName , null , enforcementPointPath ,
457- false , null , 50L , false , null );
456+ PolicyGroupMembersListResult segmentPortsList = getSegmentPortList (segmentPortsService , segmentName , enforcementPointPath );
457+ Long portCount = segmentPortsList .getResultCount ();
458+ portCount = retrySegmentDeletion (segmentPortsService , portCount , segmentName , enforcementPointPath );
458459 if (segmentPortsList .getResultCount () == 0L ) {
459460 LOGGER .debug (String .format ("Removing the segment with ID %s" , segmentName ));
460461 removeGroupForSegment (segmentName );
@@ -466,6 +467,25 @@ protected void removeSegment(String segmentName) {
466467 }
467468 }
468469
470+ private PolicyGroupMembersListResult getSegmentPortList (SegmentPorts segmentPortsService , String segmentName , String enforcementPointPath ) {
471+ return segmentPortsService .list (DEFAULT_DOMAIN , segmentName , null , enforcementPointPath ,
472+ false , null , 50L , false , null );
473+ }
474+
475+ private Long retrySegmentDeletion (SegmentPorts segmentPortsService , Long portCount , String segmentName , String enforcementPointPath ) {
476+ int retries = 5 ;
477+ do {
478+ try {
479+ Thread .sleep (5000 );
480+ portCount = getSegmentPortList (segmentPortsService , segmentName , enforcementPointPath ).getResultCount ();
481+ retries --;
482+ } catch (InterruptedException e ) {
483+ throw new CloudRuntimeException (String .format ("Unable to delete segment %s due to: %s" , segmentName , e .getLocalizedMessage ()));
484+ }
485+ } while (retries > 0 && portCount > 0 );
486+ return portCount ;
487+ }
488+
469489 public void createStaticNatRule (String vpcName , String tier1GatewayName ,
470490 String ruleName , String publicIp , String vmIp ) {
471491 try {
0 commit comments