Introducer behaviour on shares and devices

Hi all. I’ve used (and read more than once the documentation of) the “Introducer” feature.

I’m sure I’m missing something but let me explain my doubts and maybe “nice to haves” about how an Introducer works.

I’ve just tested using v1.15.1, that when I create a share in my Introducer device A and then share it to two other devices B,C (which use A as introducer), the propagation of the sharing works as expected.

Let’s say C has been introduced to B by A. When I remove C in A, B also removes C, which is what I expect, but then C starts asking for connection to B, and if I grant that connection, it then asks for sharing the folder from which it’s been removed.

This is not what I’d expect. I’d expect that C stops asking anything to the “swarm” of devices that had that shared folder, I’d also expect C to align the sharing configuration on that folder (leading it to a “Not shared” state).

In other words, if an Introducer has shared a folder with C and introduced to it the involved devices, when that introducer removes C from that share (and/or even deletes C from known devices), C has to be recyprocal, just as it was when the introducer added it.

I hope I was clear enough in my explaination.

Thanks for any help / support. Cheers! Marco

Please note I had to correct some typos / mistakes on my first post.

One last thing about that: if we assume I was right expecting C to end up with a “not shared” folder, should the ID od that folder in C be changed? Not sure, just offering my thought… this is more security-wise than feature-wise.

Thanks again.

The only reason B removed C, is because it saw it’s not longer on A as they connected.

C doesn’t know why A is no longer connecting, and it will continue trying to connect to A.

In theory, you should remove A from C, and I guess you’d expect all links introduced via A to be also removed as part of that.

Now imagine you want to decommission A.

Suddenly removing A from any device, would remove all of the sharing links that were established by it. Not sure if that was expected.

Yes, this is a complicated feature with a lot of rough edge-cases, and things being “unexpected” depending on the context you are looking from. I don’t think there is a way to make this feature do “what makes sense” in all situations.

I understand what you’re saying. Thanks for your reply @AudriusButkevicius.

Maybe the matter can be broken down into two independent aspects, one is the “sharing propagation” for which we have the Introducer role, and another, perhaps at a “higher level layer”, represented by the question “given a share, can there be a device which is set as owner of it?”. I imagine that ownership could be trasfered to another device (if accepted by the target device). If we assume we have such a role implemented somehow, the user (or the sysadmin of a company) would benefit from a clear and simple path on how to maintain the shared folders… just my 2 cents.

Thanks again, kind regards. Marco

The problem is that there is no ownership, and we don’t want to have ownership, because there is no “authority” to attest the ownership. All devices are equal.

What makes matters worse is that you can’t even have any sort of quorum, because you might see only a small part of the “network” of devices involved. Imagine two highly connected clusters of devices, and the only link between the two clusters is some one device in the middle.

Neither cluster is aware of the other cluster existing, hence it can’t make any “global” decision.

I.e, even if you say that we could arbitrarily decide on some ownership, transferring it doesn’t work, imagine the following relationships:

   B
 /  \
A    C  
 \  /
  D 

Let’s say B is the initial owner. You remove B, A thinks it’s the other, C thinks it’s the owner, what does D think?

People start setting up syncthing thinking:

“Ah, this is my mothership device, where I control everything from, and this is my fleet which follow what the mothership says”

No, that’s not how syncthing works, all devices are of equal superiority, and your mothership is not special in any way.

If you are running a larger setup, you could try arigi for managing multiple devices from a central place for adding removing things easier, but that still doesn’t give you some mothership functionality. It’s mostly just a “add device on all, remove device on all” type of functionality.

1 Like

Thanks @AudriusButkevicius for the explaination and suggestions.

I’ll definitely have a closer look at Arigi, which can pretty much be the missing feature I was looking for.