Thanks for the explanation, I finally understand.
I will print this reply and paste it next to my computer☺

So getting back to my bug prone question, I remember Robert saying in Seattle 
that you shouldn’t write in the same transaction to different shards. Because 
you can’t know in the code how will the final sharding be configured, would you 
say as a good practice to avoid writing to different yang modules in the same 
transaction?

From: Muthukumaran K [mailto:muthukumara...@ericsson.com]
Sent: Thursday, January 12, 2017 11:08 AM
To: Sela, Guy <guy.s...@hpe.com>; Tom Pantelis <tompante...@gmail.com>
Cc: odl netvirt dev <netvirt-...@lists.opendaylight.org>; Kochba, Alon 
<alo...@hpe.com>; integration-...@lists.opendaylight.org; 
controller-dev@lists.opendaylight.org
Subject: RE: [controller-dev] [netvirt-dev] [mdsal-dev] Netvirt Scale tests: 
OutOfMemory from datastore

Hi Sela,

There are 3 related aspects viz., module  - yang tree / yang module, shards – a 
group of yang trees whose data is placed together, sharding strategy – how 
trees and shards are related.

Default strategy in ODL is module-level. By that virtue, we can control to the 
extent of mapping one yang module to one shard.

When Tom says that everything else goes into default shard, it’s the built in 
behavior of the sharding and not user controllable. So, at user-controllable 
level its 1:1 --> module:shard and whatever module not configured by user with 
dedicated shard will go into default shard.

Effectively, by default, we would have inventory X 2 + topology X 2 + default X 
2 + toaster X 2 + EOS Shard (implicit and not configured) X 1 = 9 shards will 
be there in the system. Here 2 implies one for oper and one for config

This section describes the default behavior - 
https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Architecture:Clustering#Configuration


Regards


From: 
controller-dev-boun...@lists.opendaylight.org<mailto:controller-dev-boun...@lists.opendaylight.org>
 [mailto:controller-dev-boun...@lists.opendaylight.org] On Behalf Of Sela, Guy
Sent: Wednesday, January 11, 2017 8:37 PM
To: Tom Pantelis <tompante...@gmail.com<mailto:tompante...@gmail.com>>
Cc: odl netvirt dev 
<netvirt-...@lists.opendaylight.org<mailto:netvirt-...@lists.opendaylight.org>>;
 Kochba, Alon <alo...@hpe.com<mailto:alo...@hpe.com>>; 
integration-...@lists.opendaylight.org<mailto:integration-...@lists.opendaylight.org>;
 
controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>
Subject: Re: [controller-dev] [netvirt-dev] [mdsal-dev] Netvirt Scale tests: 
OutOfMemory from datastore

Oh so that’s really different than option 1 I wrote.
You are saying that I have a capability of creating shards by taking different 
yang trees and combining them into shards?.
My smallest unit of work is a yang tree ?

I still don’t see how it is done.
Let’s say I wanted to take the 2 trees in my example and put them in one shard 
only for them.
How will module-shards.conf look like and how will modules.conf will look like?
If you have an example of that in some WIKI, you can just point me to that.


From: Tom Pantelis [mailto:tompante...@gmail.com]
Sent: Wednesday, January 11, 2017 4:58 PM
To: Sela, Guy <guy.s...@hpe.com<mailto:guy.s...@hpe.com>>
Cc: Robert Varga <n...@hq.sk<mailto:n...@hq.sk>>; Kochba, Alon 
<alo...@hpe.com<mailto:alo...@hpe.com>>; Williams, Marcus 
<marcus.willi...@intel.com<mailto:marcus.willi...@intel.com>>; Daniel Farrell 
<dfarr...@redhat.com<mailto:dfarr...@redhat.com>>; odl netvirt dev 
<netvirt-...@lists.opendaylight.org<mailto:netvirt-...@lists.opendaylight.org>>;
 
controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>;
 
integration-...@lists.opendaylight.org<mailto:integration-...@lists.opendaylight.org>
Subject: Re: [netvirt-dev] [controller-dev] [mdsal-dev] Netvirt Scale tests: 
OutOfMemory from datastore

Shards are (currently) statically configured in module-shards.conf. There's 3 
OOB - "topology", "inventory", and "default". Anything not under topology and 
inventory go into the default shard.

On Wed, Jan 11, 2017 at 9:51 AM, Sela, Guy 
<guy.s...@hpe.com<mailto:guy.s...@hpe.com>> wrote:
So what you mean is that if I create a yang tree in a yang file, it will 
ultimately translate into maximum two shards?
One for the operational and one for the configuration?

So for example elan.yang:
    container elan-interface-forwarding-entries {
        config false;

        list elan-interface-mac {
            key "elan-interface";
            description "All the MAC addresses learned on a particular elan 
interface";
            max-elements "unbounded";
            min-elements "0";
            leaf elan-interface {
                type leafref {
                    path "/if:interfaces/if:interface/if:name";
                }
            }

            uses forwarding-entries;
        }
    }

container elan-tag-name-map {
        config false;

        list elan-tag-name {
            key elan-tag;
            leaf elan-tag {
                type uint32;
            }

            leaf name {
                type string;
                description
                "The name of the elan-instance.";
            }
        }
    }

These 2 only live in the operational (Because config false), so it means 2 
Shards ?

-----Original Message-----
From: Robert Varga [mailto:n...@hq.sk<mailto:n...@hq.sk>]
Sent: Wednesday, January 11, 2017 4:45 PM
To: Sela, Guy <guy.s...@hpe.com<mailto:guy.s...@hpe.com>>; Tom Pantelis 
<tompante...@gmail.com<mailto:tompante...@gmail.com>>; Kochba, Alon 
<alo...@hpe.com<mailto:alo...@hpe.com>>
Cc: Williams, Marcus 
<marcus.willi...@intel.com<mailto:marcus.willi...@intel.com>>; Daniel Farrell 
<dfarr...@redhat.com<mailto:dfarr...@redhat.com>>; odl netvirt dev 
<netvirt-...@lists.opendaylight.org<mailto:netvirt-...@lists.opendaylight.org>>;
 
controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>;
 
integration-...@lists.opendaylight.org<mailto:integration-...@lists.opendaylight.org>
Subject: Re: [netvirt-dev] [controller-dev] [mdsal-dev] Netvirt Scale tests: 
OutOfMemory from datastore
On 01/11/2017 03:42 PM, Sela, Guy wrote:
> I have some blurriness about what a shard is, that I still didn’t
> figure out.
>
> I have some guesses:
>
> 1)      Every yang tree == one shard.
>
> 2)      Shard can be a collection of a number of yang trees.
>
> 3)      None of the above?
>

Mostly 1. Each shard encapsulates a single ShardDataTree, which encapsulates a 
single DataTree. The sum of shards is presented as the data store (CDS).

Regards,
Robert

_______________________________________________
controller-dev mailing list
controller-dev@lists.opendaylight.org
https://lists.opendaylight.org/mailman/listinfo/controller-dev

Reply via email to