Unlock does not throw an exception when it is unable to unlock.

Unlock does not throw an exception when it is unable to unlock.

book

Article ID: KB0089112

calendar_today

Updated On:

Products Versions
TIBCO ActiveSpaces -
Not Applicable -

Description

Resolution:
This is expected behavior. If the thread/process has  lock, unlocking will occur as normal.

Unlock could throw an exception if you go below min_seeder, or if data loss is due to a seeder dropped (space becomes NOT_READY and protocol timeout happens if seeders do not come back), the space becomes invalid (closeAll from some other thread that makes the space reference  invalid).

To avoid data loss, we advise using replicate_all, high replication to avoid a data loss condition on lock space.

 If min_seeder is equal to 1, loosing the last seeder, is not a concern as the lock will disappear since no more seeders are in the space. Other than these conditions, unlock does not throw exception when

    - [1] entry is not locked.
    - [2] entry is not found.
    - [3] entry is locked by some other thread/process.

[1] and [3] can happen if the user has low lock ttl and the lock expired before they attempt to unlock.

We did not feel the need to throw exception when these conditions are met.

   If it is not locked, no need to get unlock to throw exception. User already has the goal.

   If it is not found, it is entry_not_found, we don't throw exception for any op (get/take/unlock)

   If it is locked by some other process, from the thread/process' perspective their lock is already released.

Issue/Introduction

Unlock does not throw an exception when it is unable to unlock.