Commit Graph

2614 Commits

Author SHA1 Message Date
David Glasser
cd0bdecaec keep prototype on timestamps when they are cloned (all tests pass) 2013-12-02 19:17:27 -08:00
David Glasser
ab34a277fc make test do what it says 2013-12-02 19:17:27 -08:00
David Glasser
ff000110a0 only one mongo-livedata test fails 2013-12-02 19:17:27 -08:00
David Glasser
fbfda21dfb whoa, we're halfway there 2013-12-02 19:17:27 -08:00
David Glasser
c5c19114ab refactor oplog stuff into its own file 2013-12-02 19:17:27 -08:00
David Glasser
0017eacbe9 use docfetcher 2013-12-02 19:17:27 -08:00
David Glasser
33528ddbc3 test doc fetcher 2013-12-02 19:17:27 -08:00
David Glasser
85ada6a874 doc fetcher! 2013-12-02 19:17:26 -08:00
David Glasser
6905807375 rename writes collection to sequencers. will be used for observe catchup too 2013-12-02 19:17:26 -08:00
David Glasser
4f23be3168 oops, stop listenersHandle 2013-12-02 19:17:26 -08:00
David Glasser
c9c465bcfb all tests now pass (mostly because I made sure the failing tests
avoid oplog, but they are testing basically implementation details)

there's a "insert found for already-existing ID" somewhere though

trasnform: null, interesting...
2013-12-02 19:17:26 -08:00
David Glasser
5ffb4a9a15 handle _id properly in replace. many tests pass. 2013-12-02 19:17:26 -08:00
David Glasser
5a4ae936aa Until I do the right thing, it's slightly more right to do the query before
listening.
2013-12-02 19:17:26 -08:00
David Glasser
a93f742b3a ok, rewrite is done.
now "replace" updates work too. also give up on idea of knowing
what fields changed (more correct, does require an in memory diff).

many tests pass.
2013-12-02 19:17:26 -08:00
David Glasser
0344e946fd more progress 2013-12-02 19:17:26 -08:00
David Glasser
ffc70c1611 xxx now 2013-12-02 19:17:25 -08:00
David Glasser
d3d285426d somewhat implement write fence (latency compensation) 2013-12-02 19:17:25 -08:00
David Glasser
c4c9837194 fix $unset 2013-12-02 19:17:25 -08:00
David Glasser
abcc7d9bb9 very basic update support 2013-12-02 19:17:25 -08:00
David Glasser
1c8c7d171c very basic insert support 2013-12-02 19:17:25 -08:00
David Glasser
cae886b2f0 remove processing works. 2013-12-02 19:17:25 -08:00
David Glasser
ba63548d4d checkpoint monday morning 2013-12-02 19:17:25 -08:00
David Glasser
123c06ac3f oplog checkpoint from friday 2013-12-02 19:17:24 -08:00
David Glasser
a832b11211 Factor tailing code out of observe-changes code. 2013-12-02 19:17:24 -08:00
David Glasser
878dfe9a1f In "meteor run", run mongo in repl-set mode, so that oplog is available.
Note: this is pretty slow. Before merging this branch, should cache the fact
that replset has been initiated on port N so that on the next run, if the port
hasn't changed, we don't need to re-initiate.
2013-12-02 19:17:24 -08:00
David Glasser
4d2097912d Add cursorSupportedByOplogTailing. 2013-12-02 19:17:24 -08:00
David Glasser
4ea191e452 Drop uglify dependency from handlebars module
This reduces the npm download done when updating the handlebars package
by 2M.  (Uglify is only used by bin/handlebars, not the handlebars API.)
2013-12-02 19:12:09 -08:00
David Glasser
0a4663bafd Upgrade websocket-driver from 0.3.0 to 0.3.1
This fixes a DoS we found:
https://github.com/faye/faye-websocket-node/issues/26
2013-12-02 16:49:09 -08:00
Naomi Seyfer
b1cc446fc8 rename event with a meteor prefix 2013-12-02 16:25:40 -08:00
Naomi Seyfer
bc3b42a941 glasser comments 2013-12-02 15:15:06 -08:00
Naomi Seyfer
d1767da26d Short socket timeout while no pending request. Long timeout with pending req 2013-12-02 14:21:29 -08:00
Naomi Seyfer
e58156bd58 Handle long-polling sockets when we are shutting down the server with SIGHUP better 2013-11-27 15:28:28 -08:00
Nick Martin
4a8bbce814 Oops, missed one. Add deps package to autoupdate dependencies. 2013-11-21 16:52:23 -08:00
Nick Martin
f25b733bc6 Change AutoUpdate symbol name to be one word not two.
perl -pi -e 's/AutoUpdate/Autoupdate/g' **/*.{js,md}
perl -pi -e 's/autoUpdate/autoupdate/g' **/*.{js,md}
2013-11-21 16:34:07 -08:00
Nick Martin
5803dfbf2f Comments and safety belts from glasser's review. 2013-11-21 16:31:49 -08:00
Emily Stark
d564ab4b99 Fix SeededRandom's use of Random's alea.
Thanks glasser
2013-11-21 10:14:03 -08:00
Nick Martin
f4a41a1726 Also include path of file in hash computation.
Followup to 72d3e08067. Without this, the hash wouldn't change and the client
wouldn't reload if a file was renamed in a way that didn't change the order
of files (eg, preserving its name in alphabetical order).

This didn't used to be a problem, as the hash computation was only used in
appcached, which included the file path already and would change if the
file was renamed.
2013-11-19 11:31:25 -08:00
Nick Martin
32000d4c5e Comments. 2013-11-19 02:20:47 -08:00
Andrew Wilcox
3245f0d9d6 Comment on hack encoding knowledge of autoupdate in livedata. 2013-11-19 01:34:54 -08:00
Andrew Wilcox
22f9183c6b use Deps.autorun, remove unused crypto 2013-11-19 01:34:54 -08:00
Andrew Wilcox
005e4a2e85 livedata doesn't need to use localstorage because it's now using
reload migration instead.
2013-11-19 01:34:54 -08:00
Andrew Wilcox
a2c4a78743 Have using test-in-browser cause autoupdate to reload on server changes,
which is convenient when running unit tests in the browser.
2013-11-19 01:34:54 -08:00
Andrew Wilcox
15f5ca3d7e Have the client send the "connect" message on stream open
instead of waiting for the welcome message.
2013-11-19 01:34:54 -08:00
Andrew Wilcox
8d3929e450 Fix typo. 2013-11-19 01:34:54 -08:00
Andrew Wilcox
8c0e02635b Add an overview of autoupdate and the code push process. 2013-11-19 01:34:54 -08:00
Andrew Wilcox
78b9a47fcb Fix livedata tests. 2013-11-19 01:34:54 -08:00
Andrew Wilcox
6239d388ef Reuse stream reconnect exponential backoff code for DDP version
negotiation failure retries.
2013-11-19 01:34:53 -08:00
Andrew Wilcox
456e6916be Use reload migration API instead of localstorage.
Remove the unused `serverRequestedVersion` argument to
`onDDPVersionNegotiationFailure`.

And let's call the remaining argument `description` instead of `error`
since it isn't an Error object.
2013-11-19 01:34:53 -08:00
Andrew Wilcox
e27e2d8c82 Calculate the client hash in webapp so that autoupdate doesn't have to
be a strong dependency of appcache.

Delaying publishing the current client version document until the auto
update version is available isn't necessary because the publish
callback won't be called before webapp starts listening, and that
happens after startup.

In the app cache manifest include both the client hash and the
AUTOUPDATE_VERSION, which both allows the browser to load new
client code even when the auto update version is explicitly set by the
developer, and also ensures that if the developer changes the auto
update version this is propagated to the client in the app HTML so
that autoupdate doesn't get into an infinite loop of reloads.
2013-11-19 01:34:53 -08:00
Andrew Wilcox
572fc333c7 Avoid having test-in-browser shutdown the autoupdate subscription,
so that developers still get hot code pushes when writing tests.

Fix livedata tests.

Add a sanity check to deciding when to reload: only reload if there is
an available client version marked "current".  (Otherwise if the
server fails to publish any valid client versions, perhaps as a bug in
a forked autopublish package, the client will go into an infinite loop
of reloads).

Update QA notes.
2013-11-19 01:34:53 -08:00