Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Dec 17 2022 04:45
    Nun022 opened #129
  • Dec 11 2022 21:14
    Build #1 passed
  • Dec 11 2022 21:11

    rofr on 0.8.0

    (compare)

  • Dec 10 2022 15:04
    Build #0 passed
  • Dec 10 2022 15:01

    rofr on master

    update testdependencies.sh update readme (compare)

  • Dec 10 2022 11:50
    Build #60 passed
  • Dec 10 2022 10:32

    dependabot[bot] on nuget

    (compare)

  • Dec 10 2022 10:32
    dependabot[bot] closed #128
  • Dec 10 2022 10:32
    dependabot[bot] edited #128
  • Dec 10 2022 10:32
    dependabot[bot] commented #128
  • Dec 10 2022 10:32
    dependabot[bot] edited #128
  • Dec 10 2022 10:31

    rofr on master

    upgrade to NET6, update nugets … (compare)

  • Dec 08 2022 13:49
    goblinfactory commented #128
  • Dec 08 2022 08:56
    CLAassistant commented #128
  • Dec 08 2022 08:56
    dependabot[bot] closed #127
  • Dec 08 2022 08:56

    dependabot[bot] on nuget

    (compare)

  • Dec 08 2022 08:56
    dependabot[bot] commented #127
  • Dec 08 2022 08:56
    dependabot[bot] labeled #128
  • Dec 08 2022 08:56
    dependabot[bot] opened #128
  • Dec 08 2022 08:56

    dependabot[bot] on nuget

    Bump Newtonsoft.Json from 12.0.… (compare)

Alan Hemmings
@goblinfactory
and write using a single writer of course.
Robert Friberg
@rofr
single node is trivial, that's a few hours of coding
Alan Hemmings
@goblinfactory
sure, but it's amazingly useful. that's what I need now. Multi-node (given what you said about clock drift) sounds like it can't work without a signifcant amount of effort
Robert Friberg
@rofr
I will check with the eventsourcing crowd if there is any table storage backend...
They would have the same requirements
Alan Hemmings
@goblinfactory
mmmmm, nice!
remind me again, what's the use case for multi-node that's so important for you? you said "availability", but what specifically about that is so important, and why?
that justifies the extra complexity from a few hours of work, to having to dramatically change the number of moving parts.
can you get the availability you want by just putting a load balancer in front of say three instances of memstate and configure two in some type of slave setup, so if a node goes down the load balancer tells the slave, you're it?
Robert Friberg
@rofr

can you get the availability you want by just putting a load balancer in front of say three instances of memstate and configure two in some type of slave setup, so if a node goes down the load balancer tells the slave, you're it?

This is exactly how OrigoDB works. There is one primary and 0 or more replicas. The nodes talk to each other. Memstate is different. It relies on the underlying storage for ordering guarantees, nodes don't talk to each other.

Alan Hemmings
@goblinfactory
Ah ok. so then when you said you'd be interested in adding multi-node support, is that because you have a hunch that it should be possible on top of some part of the azure stack?
or were you teasing, because you know just how impossibly hard the problem is? (grin)
...ever the teacher.
Robert Friberg
@rofr
No, not teasing! Just trying to figure it out myself
Alan Hemmings
@goblinfactory
here' go try do this seamingly easy thing... because, when you finally give up, you'll be a whole lot wiser young padawan #yoda
hahah... if it's got the wise RF chin scratching, not sure how much I can help ...
I'm quite good at seeing narrow opportunities to hack things, ...just when folk are saying, ha... we can't use this library it's rubbish, it will give a collission one in every million requests due to foo or baa or "clock drift" ... and I see it could be perfect for gaming ...
or banking. would be a big improvement on the current banking systems accurancy! lol
Robert Friberg
@rofr
the problem here is bigger, we could miss records while reading the tail due to commands arriving with an oldish timestamp from a funky node
Alan Hemmings
@goblinfactory
that makes sense
Robert Friberg
@rofr
that would put is in the mongodb category :)
Alan Hemmings
@goblinfactory

I've found this while we were chatting which is either marketing bullshit, or possibly something we could use?

Azure Storage simplifies cloud development
The Azure storage service supports all three strategies, although it is distinctive in its ability to provide full support for optimistic and pessimistic concurrency because it was designed to embrace a > strong consistency model which guarantees that when the Storage service commits a data insert or update operation all further accesses to that data will see the latest update. Storage platforms
that use an eventual consistency model have a lag between when a write is performed by one user and when the updated data can be seen by other users thus complicating development of client > applications in order to prevent inconsistencies from affecting end users.

is that possibly good news?
Robert Friberg
@rofr
it won't help a late arriving record that get's inserted before other records because it has an older timestamp
Alan Hemmings
@goblinfactory
you mean problems like this ? cockroachdb/cockroach#13808
this sounds like ... if you can invent a protocol that could work around drift, you wouldnt have solved a big database problem, ...you'd have solved a big server clock problem, an even bigger market in terms of patent value?
Robert Friberg
@rofr
The problem remains even with perfectly synchronized clocks.
Alan Hemmings
@goblinfactory
if there was a work around for database folk, then the server clock manufacturers would use the same technique to improve their clocks.
Robert Friberg
@rofr
Memstate is not at all sensitive to the system time
Alan Hemmings
@goblinfactory
ok, I'll take the bait..."why does the problem still remain with perfectly syncrhonized clocks?" :D
Robert Friberg
@rofr
Latency.
Alan Hemmings
@goblinfactory
only if we're back to server generating the IDs
I may have misunderstood, ... your original suggestion that started this discussion was that we use reverse time ticks on clients, and add in a client ID?
Robert Friberg
@rofr
Well, if a node reads the tail and then a late arriving command is inserted then the read had a missing record
Alan Hemmings
@goblinfactory
so is that a non starter then? in order for it to be remotely possible, what building blocks are needed?
how have other tech offered what you'd like to see in memstate?
you have this already with cassandra right?
Robert Friberg
@rofr
Seems like a showstopper, yes. Anyway, I found an event sourcing implementation :)
Not cassandra
postgres, sqlstreamstore, eventstore are the main ones. Working on a provider for Pravega
Cosmos might work...
Alan Hemmings
@goblinfactory
I have that on my trello board for domanium to investigate
cant' remember how I found it.
Robert Friberg
@rofr
and the answer is....
drum roll.....
Alan Hemmings
@goblinfactory
Ah, just read the homepage docs and remember where I saw it... I had googled table storage limitations, and it came up in top results for the limitations
Robert Friberg
@rofr
optimistic concurrency!
Alan Hemmings
@goblinfactory
dont you still need to sort clock problem?