@@ -44,6 +44,19 @@ func (daemon *Daemon) getDNSSearchSettings(container *container.Container) []str
4444
4545 return nil
4646}
47+
48+ func (daemon * Daemon ) saveAndReplicate (container * container.Container ) error {
49+ container .Lock ()
50+ defer container .Unlock ()
51+ if err := daemon .containersReplica .Save (container .Snapshot ()); err != nil {
52+ return fmt .Errorf ("Error replicating container state: %v" , err )
53+ }
54+ if err := container .ToDisk (); err != nil {
55+ return fmt .Errorf ("Error saving container to disk: %v" , err )
56+ }
57+ return nil
58+ }
59+
4760func (daemon * Daemon ) buildSandboxOptions (container * container.Container ) ([]libnetwork.SandboxOption , error ) {
4861 var (
4962 sboxOptions []libnetwork.SandboxOption
@@ -1005,7 +1018,7 @@ func (daemon *Daemon) ConnectToNetwork(container *container.Container, idOrName
10051018 return err
10061019 }
10071020 }
1008- if err := container . ToDisk ( ); err != nil {
1021+ if err := daemon . saveAndReplicate ( container ); err != nil {
10091022 return fmt .Errorf ("Error saving container to disk: %v" , err )
10101023 }
10111024 return nil
@@ -1044,16 +1057,16 @@ func (daemon *Daemon) DisconnectFromNetwork(container *container.Container, netw
10441057 return err
10451058 }
10461059
1047- if err := container . ToDisk ( ); err != nil {
1060+ if err := daemon . saveAndReplicate ( container ); err != nil {
10481061 return fmt .Errorf ("Error saving container to disk: %v" , err )
10491062 }
10501063
10511064 if n != nil {
1052- attributes := map [string ]string {
1065+ daemon . LogNetworkEventWithAttributes ( n , "disconnect" , map [string ]string {
10531066 "container" : container .ID ,
1054- }
1055- daemon .LogNetworkEventWithAttributes (n , "disconnect" , attributes )
1067+ })
10561068 }
1069+
10571070 return nil
10581071}
10591072
0 commit comments