Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
neoppod
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vincent Pelletier
neoppod
Commits
35787987
Commit
35787987
authored
Aug 10, 2012
by
Julien Muchembled
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clean up TODO
parent
dc85ab7e
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
32 deletions
+7
-32
TODO
TODO
+7
-32
No files found.
TODO
View file @
35787987
...
@@ -42,18 +42,6 @@ RC - Review output of pylint (CODE)
...
@@ -42,18 +42,6 @@ RC - Review output of pylint (CODE)
- Empty storages rejected during recovery process
- Empty storages rejected during recovery process
Masters implies in the election process should still reject any connection
Masters implies in the election process should still reject any connection
as the primary master is still unknown.
as the primary master is still unknown.
- Connections must support 2 simultaneous handlers (CODE)
Connections currently define only one handler, which is enough for
monothreaded code. But when using multithreaded code, there are 2
possible handlers involved in a packet reception:
- The first one handles notifications only (nothing special to do
regarding multithreading)
- The second one handles expected messages (such message must be
directed to the right thread)
The second handler must be possible to set on the connection when that
connection is thread-safe (MT version of connection classes).
Also, the code to detect wether a response is expected or not must be
genericised and moved out of handlers.
- Implement transaction garbage collection API (FEATURE)
- Implement transaction garbage collection API (FEATURE)
NEO packing implementation does not update transaction metadata when
NEO packing implementation does not update transaction metadata when
deleting object revisions. This inconsistency must be made possible to
deleting object revisions. This inconsistency must be made possible to
...
@@ -72,7 +60,6 @@ RC - Review output of pylint (CODE)
...
@@ -72,7 +60,6 @@ RC - Review output of pylint (CODE)
- Make SIGINT on primary master change cluster in STOPPING state.
- Make SIGINT on primary master change cluster in STOPPING state.
- Review PENDING/HIDDEN/SHUTDOWN states, don't use notifyNodeInformation()
- Review PENDING/HIDDEN/SHUTDOWN states, don't use notifyNodeInformation()
to do a state-switch, use a exception-based mechanism ? (CODE)
to do a state-switch, use a exception-based mechanism ? (CODE)
- Split protocol.py in a 'protocol' module ?
- Review handler split (CODE)
- Review handler split (CODE)
The current handler split is the result of small incremental changes. A
The current handler split is the result of small incremental changes. A
global review is required to make them square.
global review is required to make them square.
...
@@ -142,20 +129,11 @@ RC - Review output of pylint (CODE)
...
@@ -142,20 +129,11 @@ RC - Review output of pylint (CODE)
increases the risk of starting from underestimated values.
increases the risk of starting from underestimated values.
This risk is (currently) unavoidable when all nodes stop running, but this
This risk is (currently) unavoidable when all nodes stop running, but this
case must be avoided.
case must be avoided.
- Differential partition table updates (BANDWITH)
- If the cluster can't start automatically because the last partition table
When a storage asks for current partition table (when it connects to a
is not operational, allow the user to select an older operational one,
cluster in service state), it must update its knowledge of the partition
and truncate the DB.
table. Currently it's done by fetching the entire table. If the master
keeps a history of a few last changes to partition table, it would be able
to only send a differential update (via the incremental update mechanism)
- During recovery phase, store multiple partition tables (ADMINISTATION)
When storage nodes know different version of the partition table, the
master should be abdle to present them to admin to allow him to choose one
when moving on to next phase.
- Optimize operational status check by recording which rows are ready
- Optimize operational status check by recording which rows are ready
instead of parsing the whole partition table. (SPEED)
instead of parsing the whole partition table. (SPEED)
- Improve partition table tweaking algorithm to reduce differences between
frequently and rarely used nodes (SCALABILITY)
- tpc_finish failures propagation to client (FUNCTIONALITY)
- tpc_finish failures propagation to client (FUNCTIONALITY)
When a storage node notifies a problem during lock/unlock phase, an error
When a storage node notifies a problem during lock/unlock phase, an error
must be propagated to client.
must be propagated to client.
...
@@ -164,12 +142,8 @@ RC - Review output of pylint (CODE)
...
@@ -164,12 +142,8 @@ RC - Review output of pylint (CODE)
- Merge Application into Storage (SPEED)
- Merge Application into Storage (SPEED)
- Optimize cache.py by rewriting it either in C or Cython (LOAD LATENCY)
- Optimize cache.py by rewriting it either in C or Cython (LOAD LATENCY)
- Use generic bootstrap module (CODE)
- Use generic bootstrap module (CODE)
- Find a way to make ask() from the thread poll to allow send initial packet
- If too many storage nodes are dead, the client should check the partition
(requestNodeIdentification) from the connectionCompleted() event instead
table hasn't changed by pinging the master and retry if necessary.
of app. This requires to know to what thread will wait for the answer.
- Discuss about dead storage notification. If a client fails to connect to
a storage node supposed in running state, then it should notify the master
to check if this node is well up or not.
- Implement restore() ZODB API method to bypass consistency checks during
- Implement restore() ZODB API method to bypass consistency checks during
imports.
imports.
- tpc_finish might raise while transaction got successfully committed.
- tpc_finish might raise while transaction got successfully committed.
...
@@ -184,13 +158,14 @@ RC - Review output of pylint (CODE)
...
@@ -184,13 +158,14 @@ RC - Review output of pylint (CODE)
Admin
Admin
- Make admin node able to monitor multiple clusters simultaneously
- Make admin node able to monitor multiple clusters simultaneously
- Send notifications (ie: mail) when a storage node is lost
- Send notifications (ie: mail) when a storage
or master
node is lost
Tests
Tests
- Use another mock library that is eggified and maintained.
- Use another mock library that is eggified and maintained.
See http://garybernhardt.github.com/python-mock-comparison/
See http://garybernhardt.github.com/python-mock-comparison/
for a comparison of available mocking libraries/frameworks.
for a comparison of available mocking libraries/frameworks.
- Fix epoll descriptor leak.
- Fix epoll descriptor leak.
- Fix occasional deadlocks in threaded tests.
Later
Later
- Consider auto-generating cluster name upon initial startup (it might
- Consider auto-generating cluster name upon initial startup (it might
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment