Gut feeling about priorities:
- High
-
Needed soon.
- Medium
-
Good if done, but can be postponed.
- Low
-
Interesting idea, but OK if not done.
Medium Priority
-
tests: takeover testing
-
wal behind
-
wal ahead
-
branch behind
-
-
londiste takeover: check if all tables exist and are in sync. Inform user. Should the takeover stop if problems? How can such state be checked on-the-fly? Perhaps
londiste missingshould show in-copy tables. -
cascade takeover: wal failover queue sync. WAL-failover can be behind/ahead from regular replication with partial batch. Need to look up-batched events in wal-slave and full-batches on branches and sync them together. this should also make non-wal branch takeover with branch thats behind the others work - it needs to catch up with recent events.
-
Load top-ticks from branches
-
Load top-tick from new master, if ahead from branches all ok
-
Load non-batched events from queue (ev_txid not in tick_snapshot)
-
Load partial batch from branch
-
Replay events that do not exists
-
Replay rest of batches fully
-
Promote to root
-
-
tests for things that have not their own regtests or are not tested enough during other tests:
-
pgq.RemoteConsumer
-
pgq.CoopConsumer
-
skytools.DBStruct
-
londiste handlers
-
-
londiste add-table: automatic serial handling, --noserial switch? Currently,
--create-fulldoes not create sequence on target, even if source table was created withserialcolumn. It does associate column with sequence if that exists, but it requires that it was created previously. -
pgqd: rip out compat code for pre-pgq.maint_operations() schemas. All the maintenance logic is in DB now.
-
qadmin: merge cascade commands (medium) - may need api redesign to avoid duplicating pgq.cascade code?
-
londiste replay: when buffering queries, check their size. Current buffering is by count - flushed if 200 events have been collected. That does not take account that some rows can be very large. So separate counter for len(ev_data) needs to be added, that flushes if buffer would go over some specified amount of memory.
Low Priority
-
dbscript: switch (-q) for silence for cron/init scripts. Dunno if we can override loggers loaded from skylog.ini. Simply redirecting fds 0,1,2 to /dev/null should be enough then.
-
londiste: support creating slave from master by pg_dump / PITR. Take full dump from root or failover-branch and turn it into another branch.
-
Rename node
-
Check for correct epoch, fix if possible (only for pg_dump)
-
Sync batches (wal-failover should have it)
-
-
londiste copy: async conn-to-conn copy loop in Python/PythonC. Currently we simply pipe one copy_to() to another copy_from() in blocked manner with large buffer, but that likely halves the potential throughput.
-
qadmin: multi-line commands. The problem is whether we can use python’s readline in a psql-like way.
-
qadmin: recursive parser. Current non-recursive parser cannot express complex grammar (SQL). If we want SQL auto-completion, recursive grammar is needed. This would also simplify current grammar.
-
On rule reference, push state to stack
-
On rule end, pop state from stack. If empty then done.
-