• Concurrent logins and data concurrency (last read msg pointers)

    From Matthew Asham@VERT to All on Monday, September 05, 2022 10:53:17
    Greetings!

    New Synchronet operator here - used to run some boards back in the 90s and am really happy to see Synchronet's longevity and open source model.

    While testing my board (Synchronet 3.19c on Debian 11 / git 2458bfc3e336939c4893a36007ad34bb11c646b2) I've noticed that if I am logged in via multiple nodes, my last message pointers don't seem to take affect on any other node that I'm logged in to or if reading messages through other protocols such as NNTP.

    eg:

    user #1234 - login to node 1
    user #1234 - login to node 2

    user #1234 - read all messages on node 1 - no new messages are present
    user #1234 - session on node 2 continues to see the messages as unread

    This leads me to wonder whether it is safe to allow concurrent logins if data for a session on node1 updates but the user has logged into another node performing work and if things like login time or other data might be overwritten when logging out.

    What can I expect in terms of data consistency when a user is logged in via multiple services (NNTP/IMAP) or nodes?

    Cheers

    Matthew
    --- SBBSecho 3.15-Linux
    * Origin: Reverse Polarity ~ Vancouver, Canada (1:153/149)
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Digital Man@VERT to Matthew Asham on Monday, September 05, 2022 11:55:20
    Re: Concurrent logins and data concurrency (last read msg pointers)
    By: Matthew Asham to All on Mon Sep 05 2022 10:53 am

    Greetings!

    New Synchronet operator here - used to run some boards back in the 90s and am really happy to see Synchronet's longevity and open source model.

    While testing my board (Synchronet 3.19c on Debian 11 / git 2458bfc3e336939c4893a36007ad34bb11c646b2) I've noticed that if I am logged in via multiple nodes, my last message pointers don't seem to take affect on any other node that I'm logged in to

    That's correct. Message pointers are stored in memory until the user logs off.

    or if reading messages through other
    protocols such as NNTP.

    Reading messages via NNTP does not use or change user's message pointers.

    eg:

    user #1234 - login to node 1
    user #1234 - login to node 2

    user #1234 - read all messages on node 1 - no new messages are present
    user #1234 - session on node 2 continues to see the messages as unread

    This is expected. That's why by default, concurrent user logins are not allowed.

    This leads me to wonder whether it is safe to allow concurrent logins if data for a session on node1 updates but the user has logged into another node performing work and if things like login time or other data might be overwritten when logging out.

    Correct, the "last" type user data fields are overwritten upon logout (the last concurrent user to logout 'wins' the data race).

    What can I expect in terms of data consistency when a user is logged in via multiple services (NNTP/IMAP) or nodes?

    NNTP is safe. IMAP, I'm not sure of, but you have the source in exec/imapservice.js (I didn't write that one). I suspect at least for email use, concurrent users with IMAP are "safe".
    --
    digital man (rob)

    Sling Blade quote #7:
    Karl: I don't reckon the Good Lord would send anybody like you to Hades.
    Norco, CA WX: 97.2øF, 42.0% humidity, 3 mph SE wind, 0.00 inches rain/24hrs
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net