moby / moby/swarmkit

Consolidate and simplify IsServiceAllocated

Open
#1,903 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
3.7k
Forks
676
Avg merge
4d 9h
Merged PRs (30d)
6

Description

This issue is to track the consolidation and simplification of the implementation of IsServiceAllocated.

From the feedback of https://github.com/docker/swarmkit/pull/1875#discussion_r96991972 and https://github.com/docker/swarmkit/pull/1875#issuecomment-274223898 , there are several potential issues of the current implementation:

  1. IsServiceAllocated skipped the processing of host publish mode (inside isPortsAllocated). This may results in code maintenance issues in the future as they are decoupled into different places.
  2. IsServiceAllocated (and allocator overall) is getting more and more complex. It is getting harder to understand the logic and make code changes in the future.

For the above reasons, it would be good to revisit and simplify IsServiceAllocated and allocator so that it is easy to maintain in the future.

/cc @aaronlehmann @dongluochen

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading IsServiceAllocated, isPortsAllocated, and the surrounding allocator implementation. Review the feedback on moby/swarmkit#1875, especially the host publish mode concern, to understand the current separation. Done means the allocation logic is consolidated and simpler to maintain without omitting host publish processing.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
distributed-systems
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.