implicitval deserialization = KeyValueDeserialization.usingJackson[ValueType](objectMapper)
val keeper = new CommitKeeper[ValueType](zkClient, "/path/in/zk")
val unerlyingStorage = new DbCommitStorage[ValueType](db, "table_name")
val wrappedStorage = CommitStorage.keeperPublishing(unerlyingStorage, keeper)
val keeperMirror: Var[Map[String, Commit[ValueType]]] = keeper.mirror()
val mirrorRef = new AtomicReference[Map[Pipeline.Name, Commit[Pipeline]]]
keeperMirror.changes.register(Witness(mirrorRef))
val servlet = new RainerServlet[ValueType] with RainerMirrorServlet[ValueType] {
overridedef commitStorage = wrappedStorage
overridedef valueDeserialization = implicitly[KeyValueDeserialization[DictValue]]
overridedef mirror = mirrorRef
Mixin trait to make com.metamx.rainer.http.RainerServlet lightnight fast
Uses com.metamx.rainer.CommitKeeper for read requests and com.metamx.rainer.CommitStorage for write requests
Example