@@ -96,7 +96,7 @@ func (service *Service) ReleaseLock(ctx context.Context, noteID uuid.UUID, userI
9696 return true
9797}
9898
99- func (service * Service ) GetLock (ctx context.Context , noteID uuid.UUID ) * DragLock {
99+ func (service * Service ) GetLock (ctx context.Context , noteID uuid.UUID ) ( * DragLock , error ) {
100100 ctx , span := tracer .Start (ctx , "scrumlr.draglock.service.get" )
101101 defer span .End ()
102102 log := logger .FromContext (ctx )
@@ -110,18 +110,18 @@ func (service *Service) GetLock(ctx context.Context, noteID uuid.UUID) *DragLock
110110 span .SetStatus (codes .Error , "failed to get lock" )
111111 span .RecordError (err )
112112 log .Errorw ("failed to get lock" , "err" , err )
113- return nil
113+ return nil , err
114114 }
115115
116116 var lock DragLock
117117 err = json .Unmarshal (val , & lock )
118118 if err != nil {
119119 span .SetStatus (codes .Error , "failed to unmarschal lock data" )
120120 span .RecordError (err )
121- return nil
121+ return nil , err
122122 }
123123
124- return & lock
124+ return & lock , err
125125}
126126
127127func (service * Service ) IsLocked (ctx context.Context , noteID uuid.UUID ) bool {
@@ -133,15 +133,24 @@ func (service *Service) IsLocked(ctx context.Context, noteID uuid.UUID) bool {
133133 attribute .String ("scrumlr.draglock.service.islocked.noteid" , noteID .String ()),
134134 )
135135
136- _ , err := service .cache . Con . Get (ctx , noteID . String () )
136+ notes , err := service .noteService . GetStack (ctx , noteID )
137137 if err != nil {
138- span .SetStatus (codes .Error , "failed to get lock " )
138+ span .SetStatus (codes .Error , "failed to get stack " )
139139 span .RecordError (err )
140- log .Errorw ("failed to get lock " , "err" , err )
140+ log .Errorw ("failed to get stack " , "err" , err )
141141 return false
142142 }
143143
144- return true
144+ locked := false
145+ for _ , note := range notes {
146+ // if an error occured the lock is not found -> note not locked
147+ _ , err := service .cache .Con .Get (ctx , note .ID .String ())
148+ if err == nil {
149+ locked = true
150+ }
151+ }
152+
153+ return locked
145154}
146155
147156func (service * Service ) broadcastAcquireLock (ctx context.Context , boardID uuid.UUID , noteID uuid.UUID , userID uuid.UUID ) {
0 commit comments