Skip to content

Adds support for weighted lock #35

@loganmzz

Description

@loganmzz

Description

Sometime a resource (as in lock management) can be split into sub-part. For example, Cloud Foundry quota, nodes in a distributed architecture, ...

So, it will be nice to support easily such kind of lock.

Proposal

Solution 1 : Pool metadata

Pool directory may contain metadata which describe pool & lock capacities. When acquired, lock weight may be specified and recorded into new file. When released, lock weight is read from same file.

Note: When lock weight isn't specified, all capacity is assumed.

Solution 2 : Multi acquire/release (simplest)

Users have to create enough locks as pool capacity. acquire now accepts a number (or adds acquire_count). A new count file is generated providing lock count (and/or a names file with lock names). Then, name.<index> and metadata.<index> are generated as existing.

release doesn't change signature but support new directory structure.

Workaround

Currently I use as enough lock as necessary.

But need:

  • to split into a reasonable amount of locks. For example, I divided my 10240 MB Cloud Foundry quota into 40 slots of 256 MB ; while static web component only requires 64 MB.
  • to add enough put to acquire/release (not also being sure how to arrange release in order to be sure they are all correctly release in all cases)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions