neumino / rethinkdbdash

An advanced Node.js driver for RethinkDB with a connection pool, support for streams etc.
MIT License
848 stars 109 forks source link

Rebase linked list branch #374

Open mxstbr opened 6 years ago

mxstbr commented 6 years ago

This takes the linkedlist branch from #135 and merges the latest master into it. We're running into connection errors, and we have tons of changefeeds, so I'm suspecting this could be the solution.

I'm going to try and get all the tests to pass again.

mxstbr commented 6 years ago

A bunch of tests are failing locally, digging in.

EDIT: Basically all queries time out, they never return anything. Trying to figure out why.

mxstbr commented 6 years ago

Turns out a simple null => false change fixed most tests! (ccd4ae5) 2 test failures remaining, 794 passing!

mxstbr commented 6 years ago

The only two tests failing are the ones for backtraces, are those meant to fail?

mxstbr commented 6 years ago

All backtrace tests are fixed! Unsure why those were failing since the backtraces were correct, just slightly different in formatting.

Anyways, all the tests pass now! :tada: @neumino I'm going to try this branch in prod I think, let's see if it fixes our errors.

mxstbr commented 6 years ago

Huh, some backtrace tests still fail on wercker even though they pass locally? 🤔

mxstbr commented 6 years ago

Even with this branch we're getting changefeeds dropping out:

ReqlServerError: The connection was closed before the query could be completed for:
r.table("usersNotifications").changes({
  includeInitial: false
}).filter(r.row("old_val").eq(null).and(r.row("new_val").eq(null).not()).or(r.row("old_val")("entityAddedAt").ne(r.row("new_val")("entityAddedAt"))))("new_val")
    .filter({
        userId: "gVk5mYwccUOEKiN5vtOouqroGKo1"
    }).eqJoin("notificationId", r.table("notifications")).without({
        left: ["notificationId", "createdAt", "id", "entityAddedAt"]
    }).zip().filter(function(var_278) {
        return var_278("context")("type").ne("DIRECT_MESSAGE_THREAD")
    })

And also the server crashing due to:

Unhandled rejection { ReqlDriverError: The connection was closed by the other party.
    at Connection._send (/home/nowuser/src/node_modules/rethinkdbdash/lib/connection.js:734:15)
    at /home/nowuser/src/node_modules/rethinkdbdash/lib/term.js:202:22
    at tryCatcher (/home/nowuser/src/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/home/nowuser/src/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/home/nowuser/src/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromiseCtx (/home/nowuser/src/node_modules/bluebird/js/release/promise.js:606:10)
    at Async._drainQueue (/home/nowuser/src/node_modules/bluebird/js/release/async.js:138:12)
    at Async._drainQueues (/home/nowuser/src/node_modules/bluebird/js/release/async.js:143:10)
    at Immediate.Async.drainQueues (/home/nowuser/src/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:789:20)
    at tryOnImmediate (timers.js:751:5)
    at processImmediate [as _immediateCallback] (timers.js:722:5)
  msg: 'The connection was closed by the other party',
  message: 'The connection was closed by the other party.',
  isOperational: true }
thelinuxlich commented 6 years ago

merged in https://github.com/RebirthDB/rebirthdb-js

nikhilrayaprolu commented 2 years ago

@mxstbr @thelinuxlich What is the final solution for this issue of changefeeds dropping?

thelinuxlich commented 2 years ago

@nikhilrayaprolu replace your database with something supported, seriously, who would trust their primary database to a project that hasn't received updates in 5 years?

nikhilrayaprolu commented 2 years ago

You are right, but I am wondering from an engineering standpoint, how this issue was solved finally.

I had also read the discussion here, but looks like the complete discussion is unavailable after the shut down of spectrum. https://spectrum.chat/rethinkdb-old/general/changefeed-troubles~e0047056-899e-4bde-9493-20f8a7bb0919

On Fri, 25 Feb, 2022, 12:49 am Alisson Cavalcante Agiani, < @.***> wrote:

@nikhilrayaprolu https://github.com/nikhilrayaprolu replace your database with something supported, seriously, who would trust their primary database to a project that hasn't receive updates in 5 years?

— Reply to this email directly, view it on GitHub https://github.com/neumino/rethinkdbdash/pull/374#issuecomment-1050182320, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADUC65ZWN2KOYJVG5YAXPBDU42AERANCNFSM4EU2UBIQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>

mxstbr commented 2 years ago

What is the final solution for this issue of changefeeds dropping?

Not using RethinkDB anymore 🙈

I am wondering from an engineering standpoint, how this issue was solved finally.

It wasn't.

nikhilrayaprolu commented 2 years ago

@mxstbr I really liked the source code of spectrum, it has all features needed for a good online community. The only major issue I found in that is the choice of rethinkDB. Now an option for me is to see if I could convert the rethinkDB to MongoDB and use Apollo PubSub for real-time features (I think this is not a priority now but need to do this before I start facing scalability issues).

Since I am planning to host an online clubs for k12 kids with some customizations (gamification) and video rooms for them to collaborate and learn together, I cannot think of going with a solution like circle.so

thelinuxlich commented 2 years ago

You don't need mongodb for realtime features in 2022, graphql subscriptions over sse is a good choice