Commit Graph

3313 Commits

Author SHA1 Message Date
David Glasser
0a2b213682 Ensure that hook.each is called from a Fiber
That gives us enough guarantees that we can simplify the error-handling
code.

We also ensure that the "new connection" handler in livedata_server runs
in a Fiber, which fixes a bug introduced in d049bf7506 where connections
from pre-pre1 clients would crash (due to Meteor.setTimeout which only
works in a Fiber).
2014-03-17 12:35:19 -07:00
David Glasser
da96352c65 Make some white-box tests less flaky
If we want the *internal* state of the oplog driver to be consistent, we
need to make sure that we start our observes at a consistent point in
the oplog.  (ie, initial inserts need to have been fully processed, so
that we don't process them during the original QUERYING phase, which can
give us a different unpublished buffer.)

Note that only the white-box tests (looked at _unpublishedBuffer, eg)
appeared to be flaky: the actual docs published seemed to be correct in
all cases.
2014-03-17 12:11:21 -07:00
David Glasser
17297d98d7 make LocalCollection.Cursor easier to read
and whitespace cleanup
2014-03-17 02:17:06 -07:00
David Glasser
15fa6b2ab7 Pass Matcher to Sorter constructor 2014-03-17 02:17:06 -07:00
David Glasser
cda5152491 Refactor a test to remove magic numbers 2014-03-17 02:17:06 -07:00
David Glasser
d4241aa998 Improve ELEMENT_OPERATORS comment.
Make there be one consistent syntax for element operators.
2014-03-17 02:17:06 -07:00
David Glasser
8488047c13 support non-initial keys in sort selector filter 2014-03-17 02:17:06 -07:00
David Glasser
29cfa27ef3 support regexps in sort key filter
also in EJSON.clone
2014-03-17 02:17:06 -07:00
David Glasser
125051f2f8 more tests for sort/select, and fix a silly bug 2014-03-17 02:17:06 -07:00
David Glasser
17ec29603c Initial stab at fixing the sort/selector issue 2014-03-17 02:17:06 -07:00
David Glasser
8822386d7b test for affectedByModifier for $elemMatch 2014-03-17 02:17:06 -07:00
David Glasser
9968f19f8a Failing test for sort/selector issue 2014-03-17 02:17:05 -07:00
Nick Martin
4b2696eda4 Make test-only package internal. 2014-03-17 00:05:26 -07:00
Nick Martin
82fd3201a1 Fix CSS error in Firefox. default is not a good thing to put here. sans-serif makes it look better. 2014-03-16 22:46:02 -07:00
Nick Martin
0bb6b0bb4c Fix hot code reload in Private Browsing mode in Safari. Doesn't actually save the migration data, just log an exception. But better than never reloading. 2014-03-16 21:18:29 -07:00
David Glasser
21e7c961b4 Use polling driver for {sort: {$natural: 1}} 2014-03-14 17:23:06 -07:00
David Glasser
76f03776b6 disallow {sort: {$natural: 1}} in minimongo 2014-03-14 17:08:44 -07:00
David Glasser
c9c75fee84 oplog-limit: don't ignore modifiers to sort key
Previously we would ignore modifier updates to documents outside our
current buffer if they did not affect the selector but did affect the
sort key.
2014-03-14 17:04:31 -07:00
David Glasser
9e6c07c57f failing (with oplog) test for updating a sort key 2014-03-14 17:04:31 -07:00
David Glasser
22f2c6e4df expand an oplog/limit test a little
- put more info in state comments
- add a few more assertions
- stop requiring "usesOplog &&" before some helpers
2014-03-14 17:04:31 -07:00
David Glasser
0d4b220111 Better error if non-doc passed to documentMatches 2014-03-14 12:19:44 -07:00
Tim Haines
fcf08c966a Update Google oauth scopes. The previous ones were deprecated. 2014-03-13 17:27:36 -07:00
David Glasser
a46f5591a6 Better error for new Meteor.Collection({})
Fixes #1879.
2014-03-13 17:22:53 -07:00
Emily Stark
dd4a4f0734 remove trailing comma 2014-03-13 11:04:27 -07:00
Emily Stark
d737c06fc6 no need for loginHandlers to be global 2014-03-13 11:03:13 -07:00
Emily Stark
1f276e7ff8 Use 'self', since we have it declared 2014-03-13 10:59:19 -07:00
Zoltan Olah
0b9368e6ce Tests for the html option to email templates 2014-03-12 17:27:51 -07:00
Zoltan Olah
7a85b92a09 Optionally pass in 'html' template function to Accounts email templates 2014-03-12 17:27:51 -07:00
Nick Martin
749d966817 Merge branch 'login-hooks' into devel 2014-03-12 17:04:52 -07:00
Nick Martin
14856d5600 Tweak error message. 2014-03-12 15:53:03 -07:00
Nick Martin
d920f4c7e2 Also report login failures that stop in beginPasswordExchange 2014-03-12 02:41:30 -07:00
Nick Martin
59a03b6e65 restore login cancelled behavior. 2014-03-12 00:32:52 -07:00
David Glasser
70cbca849a add XXX about a recent MongoDB change 2014-03-11 16:02:56 -07:00
David Glasser
2f4ccb76d1 More code review from nim
Mostly naming and comments.
2014-03-11 12:22:51 -07:00
David Glasser
102a03c100 expand a comment, as suggested by code review 2014-03-11 11:54:00 -07:00
David Glasser
571dce65a9 Add tests for "index parallel arrays" error 2014-03-11 11:50:03 -07:00
David Glasser
e71027cb23 more _generateKeysFromDoc unit tests 2014-03-11 11:50:03 -07:00
David Glasser
de9d28adcc Fix non-array fields with array fields 2014-03-11 11:50:03 -07:00
David Glasser
bf32d79227 a more direct _generateKeysFromDoc unit test 2014-03-11 11:50:03 -07:00
David Glasser
0876ed46a2 Make sorter closer to Mongo sort key semantics
Specifically, this ensures that with sort specifier {'a.x': 1, 'a.y': 1},
{a: [{x: 0, y: 4}]} sorts before {a: [{x: 0, y: 5}, {x: 1, y: 3}]} by
ensuring that the latter only has sort keys [0,5] and [1,3], and not
[0,3].

It does this by ensuring that the different fields used to generate a
sort key are only matched up if they use the same "path" (series of
array indices used during lookup).  This is a little stronger than what
MongoDB does: MongoDB lets you do {'a.x': 1, 'a.y.z': 1} where 'a' and
'a.y' are both arrays, and our new rule requires all fields to have
either the exact same set of arrays or to use no arrays at all.

(MongoDB does still have some constraints; eg, with sort key {a: 1,
b:1}, a and b cannot both be arrays.  Basically, there may be at most
one "outermost" array across all the fields; and so on recursively, sort
of.

The previously failing test passes now.
2014-03-11 11:50:03 -07:00
David Glasser
ed47055526 Key-based sort.
This rewrites the sorter to generate "keys" for each doc and find the
lexicographically minimum "key", rather than to look at each sort key
field separately.

This commit doesn't actually change the semantics (and the failing test
still fails) because the key generator actually still computes the full
cartesian product of all keys, rather than only using fields that are
next to each other in arrays.
2014-03-11 11:50:03 -07:00
David Glasser
95e4cad3c6 Failing test-case for a sort bug 2014-03-11 11:50:03 -07:00
David Glasser
ee7230dadd Drop Sorter name and use _.extend for prototype
Should be a no-op.
2014-03-11 11:50:03 -07:00
David Glasser
2601b3b8ea minimongo: Save all array indices, not just first
This 'x' thing is a bit of a hack. The idea is that there are two
consumers of arrayIndices. One is '$', which only looks at the first
index. The other is (soon) sort ken generators, which cares if indices
are explicit or implicit, but doesn't really need to "parse"
arrayIndices; it just will use them to associate branches from different
lookup functions with the matching arrayIndices.  'x' is a simple way to
accomplish this, though I could have made the values of arrayIndices be
objects too.
2014-03-11 11:50:03 -07:00
Nick Martin
af4bf909fd Add comment linking to hackpad. 2014-03-11 01:37:58 -07:00
Nick Martin
f0b692679e Merge remote-tracking branch 'origin/devel' into login-hooks 2014-03-11 01:02:20 -07:00
Avital Oliver
b25d765b3e Remove unused Deps._makeNonreactive 2014-03-10 15:55:37 -07:00
Avital Oliver
46964c77e6 Improve Deps performance by not using _.bind 2014-03-10 15:54:43 -07:00
Slava Kim
53f2b73d6f Merge branch 'oplog-limits-buffered' into devel 2014-03-03 23:28:54 -08:00
David Glasser
6069da6427 Update facebook config instructions. 2014-03-03 23:15:30 -08:00