275
return err
276
}
278
>
279
>
s.wLock()
280
>
281
>
// timeout check should be done within the shard lock, in case of shard lock contention
282
>
ctx, cancel, err := s.newDetachedContext(ctx)
283
>
if err != nil {
284
s.wUnlock()
285
return err
286
}
288
>
289
>
if err := s.errorByState(); err != nil {
290
s.wUnlock()
291
return err
292
}
293
295
>
ShardID: s.shardID,
296
>
RangeID: s.getRangeIDLocked(),
297
>
}
298
>
s.wUnlock()
299
>
300
>
err = s.persistenceShardManager.AssertShardOwnership(ctx, request)
301
>
return s.handleWriteError(request.RangeID, err)
302
}
303