Status
Current state: ["Under Discussion"]
Discussion thread: [link]
JIRA:
Released: 0.5.0
Motivation
Currently a DL namespace is a flat namespace that doesn't accept filesystem path like stream name. So when more and more logs are created under a same namespace, it will quickly blow up the namespace.
In order to get rid of this limitation, we need to support a more generic filesystem-like namespace and be able to migrate the existing system to use the new namespace. This is where symlinked log is introduced. The idea behind symlinked log is to create references to the original log without changing and affecting existing logs when migrating from one namespace to the other namespace.
Public Interfaces
Added one new API in DistributedLogNamespace
createSymlink(URI targetLogUri, String linkName, boolean createParent)
Proposed Changes
- Change to accept filesystem path-like log name. ( )
- Extend the log metadata to support symlink. ( )
- Create a symlink log. ( )
- Tool to clone a namespace as symlinked logs. ( )
Compatibility, Deprecation, and Migration Plan
- What impact (if any) will there be on existing users?
It won't impact any existing users. It will be new API
- If we are changing behavior how will we phase out the older behavior?
N/A
- If we need special migration tools, describe them here.
We will have a tool for migrating a namespace as symlinked logs. (
)- When will we remove the existing behavior?
N/A
Test Plan
Describe in few sentences how the DP will be tested. We are mostly interested in system tests (since unit-tests are specific to implementation details). How will we know that the implementation works as expected? How will we know nothing broke?
N/A
Rejected Alternatives
If there are alternative ways of accomplishing the same thing, what were they? The purpose of this section is to motivate why the design is the way it is and not some other way.