Skip to content

Commit 8e6d850

Browse files
authored
Merge pull request #1724 from aboch/nmd
Make sure sbJoin programming rollback happens on each error
2 parents 5f62c01 + 384ce78 commit 8e6d850

1 file changed

Lines changed: 12 additions & 13 deletions

File tree

endpoint.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ func (ep *endpoint) Join(sbox Sandbox, options ...EndpointOption) error {
427427
return ep.sbJoin(sb, options...)
428428
}
429429

430-
func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
430+
func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) (err error) {
431431
n, err := ep.getNetworkFromStore()
432432
if err != nil {
433433
return fmt.Errorf("failed to get network from store during join: %v", err)
@@ -462,7 +462,7 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
462462

463463
d, err := n.driver(true)
464464
if err != nil {
465-
return fmt.Errorf("failed to join endpoint: %v", err)
465+
return fmt.Errorf("failed to get driver during join: %v", err)
466466
}
467467

468468
err = d.Join(nid, epid, sb.Key(), ep, sb.Labels())
@@ -471,8 +471,8 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
471471
}
472472
defer func() {
473473
if err != nil {
474-
if err := d.Leave(nid, epid); err != nil {
475-
logrus.Warnf("driver leave failed while rolling back join: %v", err)
474+
if e := d.Leave(nid, epid); e != nil {
475+
logrus.Warnf("driver leave failed while rolling back join: %v", e)
476476
}
477477
}
478478
}()
@@ -528,8 +528,7 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
528528
}()
529529

530530
if sb.needDefaultGW() && sb.getEndpointInGWNetwork() == nil {
531-
err = sb.setupDefaultGW()
532-
return err
531+
return sb.setupDefaultGW()
533532
}
534533

535534
moveExtConn := sb.getGatewayEndpoint() != extEp
@@ -539,11 +538,11 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
539538
logrus.Debugf("Revoking external connectivity on endpoint %s (%s)", extEp.Name(), extEp.ID())
540539
extN, err := extEp.getNetworkFromStore()
541540
if err != nil {
542-
return fmt.Errorf("failed to get network from store during join: %v", err)
541+
return fmt.Errorf("failed to get network from store for revoking external connectivity during join: %v", err)
543542
}
544543
extD, err := extN.driver(true)
545544
if err != nil {
546-
return fmt.Errorf("failed to join endpoint: %v", err)
545+
return fmt.Errorf("failed to get driver for revoking external connectivity during join: %v", err)
547546
}
548547
if err = extD.RevokeExternalConnectivity(extEp.network.ID(), extEp.ID()); err != nil {
549548
return types.InternalErrorf(
@@ -571,9 +570,9 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
571570
}
572571

573572
if !sb.needDefaultGW() {
574-
if err := sb.clearDefaultGW(); err != nil {
573+
if e := sb.clearDefaultGW(); e != nil {
575574
logrus.Warnf("Failure while disconnecting sandbox %s (%s) from gateway network: %v",
576-
sb.ID(), sb.ContainerID(), err)
575+
sb.ID(), sb.ContainerID(), e)
577576
}
578577
}
579578

@@ -706,7 +705,7 @@ func (ep *endpoint) sbLeave(sb *sandbox, force bool, options ...EndpointOption)
706705

707706
d, err := n.driver(!force)
708707
if err != nil {
709-
return fmt.Errorf("failed to leave endpoint: %v", err)
708+
return fmt.Errorf("failed to get driver during endpoint leave: %v", err)
710709
}
711710

712711
ep.Lock()
@@ -766,11 +765,11 @@ func (ep *endpoint) sbLeave(sb *sandbox, force bool, options ...EndpointOption)
766765
logrus.Debugf("Programming external connectivity on endpoint %s (%s)", extEp.Name(), extEp.ID())
767766
extN, err := extEp.getNetworkFromStore()
768767
if err != nil {
769-
return fmt.Errorf("failed to get network from store during leave: %v", err)
768+
return fmt.Errorf("failed to get network from store for programming external connectivity during leave: %v", err)
770769
}
771770
extD, err := extN.driver(true)
772771
if err != nil {
773-
return fmt.Errorf("failed to leave endpoint: %v", err)
772+
return fmt.Errorf("failed to get driver for programming external connectivity during leave: %v", err)
774773
}
775774
if err := extD.ProgramExternalConnectivity(extEp.network.ID(), extEp.ID(), sb.Labels()); err != nil {
776775
logrus.Warnf("driver failed programming external connectivity on endpoint %s: (%s) %v",

0 commit comments

Comments
 (0)