change video link to @Scale
Update README.markdown
Only warn once about waiting for mysql port.
Update README.markdown
Merge pull request #90 from youtube/healthcheck

Only warn once about waiting for mysql port.
Rename .markdown to .md and move Contributing.md

The prevailing convention on GitHub seems to be .md

Also by moving CONTRIBUTING.md to the root, GitHub will automatically
link to it when someone tries to contribute:

https://github.com/blog/1184-contributing-guidelines
Merge pull request #91 from youtube/markdown

Rename .markdown to .md and move Contributing.md
Simplify instructions for contributing and deprecate createcl.
Merge pull request #92 from youtube/contributing

Simplify instructions for contributing and deprecate createcl.
Pin our docker image on wheezy.

The golang image we base on has moved on to jessie, which breaks our
build.
Merge pull request #93 from youtube/docker

Pin our docker image on wheezy.
Lowercase shards for ResilientSrvTopoServer.GetEndPoints.

This prevents using duplicative cache entries and counters for
essentially the same value.
Merge pull request #94 from plobsing/resilient-topo-srv

Lowercase shards for ResilientSrvTopoServer.GetEndPoints.
tabletserver: efficient update rewrites

tabletserver rewrites a DML this way:
From:
update table set val=:val where (where clause)
To:
select table where (where clause) for update
loop: update table set val=:val where pk1=:v0 and pk2=:v1
(one statement per row)

The new implementation rewrites it as a single statement:
update table set val=:val where (pk1, pk2) = (:v0,:v1)
or (pk1, pk2) = ...

Such rewrites allow us to identify rows that are changing.
Additionally, they make replicas do less work because the
statements do not incur the full cost of the original where
clause. However, it's offset by the number of statements
that are generated per original DML. This last problem will
be addressed by the new change.

I've also changed all internal bind variables to start with
'#' so they won't collide with any user-defined ones.
Distinguish log drop counts between internal and per-client.

If you're seeing drops, it would be nice to know what is slow.
Remove StreamLogger.size.

This value optimises for the wrong case: the case where the feature is
unused. If a feature is inefficient, the correct approach is not to
optimise for avoiding its use, but to resolve the inefficiency.

Additionally, the common case is for this feature to be used. We have
found it useful to have an always-on querylog. We have found it to be
reasonably efficient.

This "optimisation" was added with the first iteration of this feature
and likely falls into the category of premature optimisation.

TODO(plobsing): eliminate flakiness and sleepy races in the
streamlog_test.
tabletserver: unify select rowcache codepaths

With the new where clause generation that works for both
single and composite primary keys, we can unify the code paths
for all the select plans.
Fixup streamlog test.

If we're more synchronous, we can be less flaky. ServiceManagement is
too heavyweight for what we're trying to accomplish in this test.

Also discovered that the ServeLogs handler doesn't return to the client
until it serves the first method (this broke a test rewrite). This has
been annoying me anyways on some low-traffic servers, so fixing that was
a nice pickup.
Add positive-result counters to streamlog.

It would be useful to consider drop counts as a fraction.
rowcache: subqueries for composite pk tables

Rowcache is even betterer now! IN clauses and subqueries
can work for tables with composite pk also.