? From: Sela, Guy Sent: Thursday, September 15, 2016 6:17 PM To: 'Tom Pantelis' <tompante...@gmail.com> Cc: Muthukumaran K <muthukumara...@ericsson.com>; Moiz Raja (moraja) <mor...@cisco.com>; Srini Seetharaman <srini.seethara...@gmail.com>; controller-dev <controller-dev@lists.opendaylight.org> Subject: RE: [controller-dev] [documentation] Questions about ODL clustering
ReadOnlyTransaction tx = db.newReadOnlyTransaction(); CheckedFuture<Optional<DataObject>, ReadFailedException> read1 = tx.read(X, Y) CheckedFuture<Optional<DataObject>, ReadFailedException> read2 = tx.read(Z, H) read1 and read2 were read from different snapshots? Does the answer change if they were invoked on the same/different data trees? From: Tom Pantelis [mailto:tompante...@gmail.com] Sent: Thursday, September 15, 2016 6:13 PM To: Sela, Guy <guy.s...@hpe.com<mailto:guy.s...@hpe.com>> Cc: Muthukumaran K <muthukumara...@ericsson.com<mailto:muthukumara...@ericsson.com>>; Moiz Raja (moraja) <mor...@cisco.com<mailto:mor...@cisco.com>>; Srini Seetharaman <srini.seethara...@gmail.com<mailto:srini.seethara...@gmail.com>>; controller-dev <controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>> Subject: Re: [controller-dev] [documentation] Questions about ODL clustering Not sure I follow your exact meaning but the snapshot isn't retaken on every read operation for a transaction. After opening a transaction, the first read operation to a shard will take the snapshot and read from it The second read operation to that shard will also read from it. If you open another transaction, that will take another snapshot. On Thu, Sep 15, 2016 at 10:57 AM, Sela, Guy <guy.s...@hpe.com<mailto:guy.s...@hpe.com>> wrote: Understood, so this means there is no way to get a snapshot of the entire MD-SAL state, even in a single instance deployment, because the snapshot is retaken on every read operation. Correct? From: Tom Pantelis [mailto:tompante...@gmail.com<mailto:tompante...@gmail.com>] Sent: Thursday, September 15, 2016 4:29 PM To: Sela, Guy <guy.s...@hpe.com<mailto:guy.s...@hpe.com>> Cc: Muthukumaran K <muthukumara...@ericsson.com<mailto:muthukumara...@ericsson.com>>; Moiz Raja (moraja) <mor...@cisco.com<mailto:mor...@cisco.com>>; Srini Seetharaman <srini.seethara...@gmail.com<mailto:srini.seethara...@gmail.com>>; controller-dev <controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>> Subject: Re: [controller-dev] [documentation] Questions about ODL clustering I assume DataTree X and Y are in different shards. The snapshot of the DataTree in a backend shard is actually taken at the time of the first operation (read, write etc) referencing a path for that shard. Since the newXXXTransaction methods provide no path context, capturing the snapshot at the time of the newXXXTransaction call would entail creating a transaction/snapshot in every shard which would not be efficient. I think the new DataTreeProducer APIs are designed to overcome this b/c you specify the path on creation of the DataTreeProducer so it knows up front which backend shards will be accessed. On Thu, Sep 15, 2016 at 8:26 AM, Sela, Guy <guy.s...@hpe.com<mailto:guy.s...@hpe.com>> wrote: Hi, This question and answers raised another question in my head. Today when calling DataBroker.newReadTransaction() we are supposed to get a snaphost of the complete data tree. If we are running in a cluster, it means that some shard aren’t led by the current instance. How can the snapshost work? Let’s say I have 2 instances in the Cluster – ODL X and ODL Y. And I have 2 data trees – DataTree X and DataTree Y. Both reside in the configuration data store. In ODL X I call DataBroker.newReadTransaction(). Up until now I thought it does some kind of a reference to the data in all MD-SAL, and use some kind of “copy on write”, to handle modifications. Now, since I read that the reads are actually invoked in the Leader instance, I understand this can’t be the case. If I’ll take the transaction object and do two reads, first read from DataTree X and second read from DataTree Y, will they be of the same snapshot? The snapshot that was “created” at the time I called newReadTransaction()? From: controller-dev-boun...@lists.opendaylight.org<mailto:controller-dev-boun...@lists.opendaylight.org> [mailto:controller-dev-boun...@lists.opendaylight.org<mailto:controller-dev-boun...@lists.opendaylight.org>] On Behalf Of Muthukumaran K Sent: Thursday, September 15, 2016 7:29 AM To: Moiz Raja (moraja) <mor...@cisco.com<mailto:mor...@cisco.com>>; Tom Pantelis <tompante...@gmail.com<mailto:tompante...@gmail.com>>; Srini Seetharaman <srini.seethara...@gmail.com<mailto:srini.seethara...@gmail.com>> Cc: controller-dev <controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>> Subject: Re: [controller-dev] [documentation] Questions about ODL clustering Hi Srini, We have tried the approach what Moiz had mentioned – using CDTCN and caching data, and it was quite performant in one of our reference application. You may want to look - https://git.opendaylight.org/gerrit/#/c/45131/ Regards Muthu From: controller-dev-boun...@lists.opendaylight.org<mailto:controller-dev-boun...@lists.opendaylight.org> [mailto:controller-dev-boun...@lists.opendaylight.org] On Behalf Of Moiz Raja (moraja) Sent: Thursday, September 15, 2016 3:06 AM To: Tom Pantelis; Srini Seetharaman Cc: controller-dev Subject: Re: [controller-dev] [documentation] Questions about ODL clustering The single use ClusteredDataChange/ClusteredDataTreeChange listeners are fine and may perform better than the remote read but if you really have a lot of reads even this mechanism is expensive as there is quite a bit of overhead associated with setting up a listener. I would recommend that you setup a ClusteredDataTreeChangeListener (for long term use) for the data that you want to constantly read and cache the data in that listener. Then provide a way to read from that cache. -Moiz From: Tom Pantelis <tompante...@gmail.com<mailto:tompante...@gmail.com>> Date: Wednesday, September 14, 2016 at 2:26 PM To: Srini Seetharaman <srini.seethara...@gmail.com<mailto:srini.seethara...@gmail.com>> Cc: Moiz Raja <mor...@cisco.com<mailto:mor...@cisco.com>>, controller-dev <controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>> Subject: Re: [controller-dev] [documentation] Questions about ODL clustering All reads still go to the leader. There has been an enhancement https://bugs.opendaylight.org/show_bug.cgi?id=2504 open for this but hasn't been implemented. There is an alternative way using a DataTreeChangeListener as Moiz mentioned in the bug. On Wed, Sep 14, 2016 at 4:57 PM, Srini Seetharaman <srini.seethara...@gmail.com<mailto:srini.seethara...@gmail.com>> wrote: With Beryllium-SR3, I just verified using tcpdump on port 2550 that the data for the read operation at the follower came over the network from the shard leader. Is there any plan with Boron to make it a local read from the replica? On Wed, Sep 14, 2016 at 1:43 PM, Srini Seetharaman <srini.seethara...@gmail.com<mailto:srini.seethara...@gmail.com>> wrote: Hi Tom and Moiz Is it still the case with Beryllium and Boron that the read transactions from a follower are forwarded to the leader? Thanks Srini. On Sat, Feb 28, 2015 at 8:26 AM, Tom Pantelis <tompante...@gmail.com<mailto:tompante...@gmail.com>> wrote: Colin, Tianzhu Reads are also forwarded to the leader so, yes, remote reads would take longer. With IMDS, reads are actually synchronous so the returned Future is immediate but with CDS, the read is async, whether it's local or not. So it's best to not block on the Future as there will be some latency with CDS, but rather use a Future callback if possible. Tom On Sat, Feb 28, 2015 at 10:42 AM, Colin Dixon <co...@colindixon.com<mailto:co...@colindixon.com>> wrote: I'm cc'ing controller-dev since they will have the authoritative answer. I *think* the answer is that all data is replicated to all nodes in the cluster and so all reads can be local. Only writes have to go to the shard leader, but I could be wrong. Moiz and Tom Pantelis would know more. --Colin On Sat, Feb 28, 2015 at 4:55 AM, 我心永恒 <zhuzhuaiqiqi1...@gmail.com<mailto:zhuzhuaiqiqi1...@gmail.com>> wrote: Dear all, I am studying ODL and have one question: When a consumer launches a read transaction, if I'm not wrong, it has to be forwarded to the primary shard controller. So if this case is possible that the transaction is remote and the consumer has to wait longer since the transaction is not local? Thanks & regards Tianzhu _______________________________________________ documentation mailing list documentat...@lists.opendaylight.org<mailto:documentat...@lists.opendaylight.org> https://lists.opendaylight.org/mailman/listinfo/documentation _______________________________________________ controller-dev mailing list controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org> https://lists.opendaylight.org/mailman/listinfo/controller-dev _______________________________________________ controller-dev mailing list controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org> https://lists.opendaylight.org/mailman/listinfo/controller-dev
_______________________________________________ controller-dev mailing list controller-dev@lists.opendaylight.org https://lists.opendaylight.org/mailman/listinfo/controller-dev