EricssonResearch / calvin-base

Calvin is an application environment that lets things talk to things, among other things.
Apache License 2.0
282 stars 91 forks source link

Replication of components is not working #87

Open persquare opened 7 years ago

persquare commented 7 years ago

I tested replication of a component across multiple runtimes as part of en experiment trying to automatically cover an area with sensors. The problem is that a component in this context should be seen as an atomic unit, but the deployer treats it as a "sub-graph".

I've boiled the example down to the following code:

component Filter() token -> token {
    left: std.Identity()
    right: std.Identity()

    .token > left.token
    left.token > right.token
    right.token > .token
}

src : std.CountTimer()
filter : Filter()
collect : flow.Collect()
log : io.Print()

src.integer > filter.token
filter.token > collect.token
collect.token > log.token

apply filter : device_scaling(max=4)

and looking at the actual outcome of the deployment using csweb I get the picture below, where the cross-component-instance connections token > token from left to right are in error, there should only be a connection left.token > right.token in each component instance.

screen shot 2017-08-31 at 15 15 57