Skip to content
This repository has been archived by the owner on Apr 12, 2019. It is now read-only.

Latest commit

 

History

History
77 lines (58 loc) · 5.1 KB

TODO.md

File metadata and controls

77 lines (58 loc) · 5.1 KB
  • make EtcdWatcher continuously read DataTree state... does it need a revision?

  • shall watch filter out our own operations, or do we not apply and only watch?

  • remove initialLoad(), or just make private and call from constructor?

  • study jetcd Txn and make class Etcd put() etc. transactional

  • Watcher's updates must be applied properly transactionally instead of each individually

  • extend 1 byte O/C prefix to 2 bytes DO and DC ? Or just watch the ENTIRE tree root?

  • fix still failing tests... it must await the latest revision?

  • EtcdDOMDataBrokerWiring needs to refactor and move from testutils/ into ds/ to become runtime *Wiring

  • update README to document architecture better

  • publicize etc.

  • jetcd PR engage

  • etcd crashing etcd-io/etcd#10012

  • demo https://asciinema.org/a/DShFpWOXFmaQV3AD5n8nHeHX6

  • start up must block first write usage until initial content loaded, just like read

  • testPutInvalidDueToMissingMandatory ?

  • fix InterruptedException and reactivate LogCaptureRule

  • add txn.if(...) in EtcdKV.EtcdTxn etcd-io/etcd#7062

  • optimize RevAwaiter

  • TEST if DataTree "collapses" several overlapping changes, because "Modifications to the same key multiple times in the same transaction are forbidden"

  • build a JUnitRule for EtcdLauncher, like https://github.com/vorburger/MariaDB4j/pull/139 did for MariaDB4j

  • ODL repo and carry on there

  • git filter out the (un-used) dom2kv/ sub-project into a separate repo

  • apply existing mdsal ds tests to this new impl (upstream refactoring?)

  • instead EtcdDataStore extends InMemoryDOMDataStore, discuss an upstream artifact for what is shared "you should just need an InMemoryDataTree. Pattern after ShardDataTree instead." https://git.opendaylight.org/gerrit/#/c/73208/

  • instead org.opendaylight.etcd.ds.stream.copypaste, make it visible on ODL upstream

  • instead of org.opendaylight.etcd.utils, move to jetcd upstream

  • merge VS put

  • why does testRealConflict() fail when run standalone, but pass when run with other tests?

  • review ModificationType APPEARED/DISAPPEARED handling in EtcdDataStore.. is that right? For all cases, sub-lists etc. TDD.

  • get rid of jetcd/ artifact (as jetcd already ships an OSGi bundle and Karaf feature, now; just not released...)

  • Karaf feature odl-etcd-datastore, NOT using etcd-io/jetcd#269 (do not only support opendaylight-simple)

  • odl-daexim-onetcd

  • typical KV size? Back up ODL scale lab, DAEXIM export CDS, odl-daexim-onetcd re-import

  • CDS TX rate how to? grep metric-capture-enabled, CommonConfig / MeteringBehavior in sal-clustering-commons. Measure DAEXIM bulk-import through-put.

  • jetcd TXs/sec Test etcd-io/jetcd#367. Compare CDS & etcd.

  • test the semantics of DTCL vs ClusteredDTCL

  • remote RPCs? Still Akka. https://pantheon.tech/opendaylight-rpcs-or-what-could-possibly-go-wrong-with-adding-this-one-cool-feature/

  • EntityOwnershipService EOS ? https://coreos.com/blog/transactional-memory-with-etcd3.html

  • MUCH clean-up and other MANY TODOs ;)

  • Charset etcd-io/jetcd#342

  • add infrautils.metrics Meters & Timers to implementation

  • etcd alarms should be logged via slf4j errors in ODL (just for convenience, just in case etcd is not monitored correctly)

  • io.etcd.jetcd.Maintenance ?

  • make etcd clustering tests (start several EtcdLauncher, not just clients)

  • write a PortForwarder util, and use it to write tests simulating network disconnects

  • jetcd Java client retry and failover, like Go client, see https://etcd.readthedocs.io/en/latest/client-architecture.html

  • jetcd could optimize and always send to leader, dynamically adapt, to prevents extra hop from ODL to etcd follower to leader, see https://etcd.readthedocs.io/en/latest/faq.html#do-clients-have-to-send-requests-to-the-etcd-leader

  • compaction could cause e.g. WatchOption.Builder.withRevision(long) to return ErrCompacted.. must handle?

  • safe keys in a much more compact form; basically do compression, by keeping a dictionary (persisted in etcd) of all PathArgument

  • compare performance of this VS CDS? But DO realize that real app performance issues are NOT because of slow datastore anyway..

  • PerformanceMain: Disable logging, write separate keys

  • properly performance profile the code, using e.g. https://wiki.opendaylight.org/view/HowToProfilePerformance

  • etcd new feature to keep certain sub-tress purely in-memory instead of persisted on disk (for operational VS configuration datastore); how does K8S do this?

  • add to https://github.com/coreos/etcd/blob/master/Documentation/production-users.md ;) (AKA https://coreos.com/etcd/docs/latest/production-users.html)

  • {LOW-PRIO} refactor code to make generic non-etcd specific kv layer, pluggable for other KV stores

  • {LOW-PRIO} is is worth adapting to others, see https://jepsen.io/analyses, say.. Redis? Couch DB? Infinispan?