File tree Expand file tree Collapse file tree 3 files changed +22
-1
lines changed
Expand file tree Collapse file tree 3 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -123,6 +123,19 @@ func (s *Store) Release() error {
123123 return s .client .Delete (s .LockPath ())
124124}
125125
126+ func (s * Store ) ReleaseByToken (token string ) error {
127+ if b , err := s .client .Read (s .LockPath (), false ); err != nil {
128+ return err
129+ } else if b != nil {
130+ if t , err := Decode (b ); err != nil {
131+ return err
132+ } else if t .Token == token {
133+ return s .Release ()
134+ }
135+ }
136+ return nil
137+ }
138+
126139func (s * Store ) LoadTopom (must bool ) (* Topom , error ) {
127140 return LoadTopom (s .client , s .product , must )
128141}
Original file line number Diff line number Diff line change @@ -18,3 +18,11 @@ type Topom struct {
1818func (t * Topom ) Encode () []byte {
1919 return jsonEncode (t )
2020}
21+
22+ func Decode (b []byte ) (* Topom , error ) {
23+ s := & Topom {}
24+ if err := jsonDecode (s , b ); err != nil {
25+ return nil , err
26+ }
27+ return s , nil
28+ }
Original file line number Diff line number Diff line change @@ -168,7 +168,7 @@ func (s *Topom) Close() error {
168168 defer s .store .Close ()
169169
170170 if s .online {
171- if err := s .store .Release ( ); err != nil {
171+ if err := s .store .ReleaseByToken ( s . model . Token ); err != nil {
172172 log .ErrorErrorf (err , "store: release lock of %s failed" , s .config .ProductName )
173173 return errors .Errorf ("store: release lock of %s failed" , s .config .ProductName )
174174 }
You can’t perform that action at this time.
0 commit comments