globalsign / mgo

The MongoDB driver for Go
Other
1.97k stars 230 forks source link

Allow partial results flag to be set #291

Open kahuang opened 6 years ago

kahuang commented 6 years ago

This is useful in the case where n shards are failing to return data, but partial results are acceptable to use

maitesin commented 6 years ago

Hi @kahuang,

Thanks for your contribution, but can you write some test that checks the functionality you just added?

kahuang commented 6 years ago

Happy to add tests, what kind of tests did you have in mind?

As this is just allowing us to set a flag that already existed in code, and I don't see other tests for some of the other flags (or I might just be missing it?) I'm not sure how to proceed

maitesin commented 5 years ago

Hi @kahuang ,

The test I had in mind was one that proofed that you can actually obtain partial results.

eminano commented 5 years ago

Hi @kahuang,

The testing harness should allow you to setup a test with multiple shards where you can have a query with partial results enabled, so you can make sure the function you've added works as expected.

Please do target development branch instead of master.

Thanks! Esther

kahuang commented 5 years ago

I've added a separate sharded cluster to the startdb process where I insert some test data, then shutdown one of the nodes.

The test then connects to this sharded cluster via a mongos and confirms that it gets the partial results

kahuang commented 5 years ago

Any concerns on this PR?

eminano commented 5 years ago

Hi @kahuang,

Thanks for taking the time to add the tests for this. However the build is failing due to your changes, I believe you've forgotten some setup for your sharded cluster.

Could you please have a look at how other testing clusters are done to see what's missing?

Thanks, Esther

kahuang commented 5 years ago

Looks like I accidentally force-pushed a commit that didn't include the daemons. I've added those now, we'll see if the tests pass now

eminano commented 5 years ago

Hi @kahuang,

It looks like the build is still failing for mongo versions 3.0 and 3.2, any chance those issues are compatibility related?

Thanks, Esther

jacksontj commented 5 years ago

Did a bit of looking, it seems that in <=3.2 mongo actually called the flag partial (it was changed here ). Likely we can send both flags-- as mongo will read the one that it knows.