Go to file
Alex Miller d78b29625c Make fdbcli gracefully handle malformed and partial command errors.
Previously, running a command like `set \xffx\02abcded/` would cause a crash.
The `x\02` is a malformed typo of `\x02`, and the previously existing code to
handle this case looks like

    loop {
      err = parse_command
      if (err)  continue;
      // do things
    }

Thus, if we hit an error, we'd go back to the top of the loop, and try again.
This should be an infinite loop.  However, the actor compiler implementation of
loops involves function calls, so this actually turns into a series of the loop
head calling the loop body calling the loop head calling ... and we eventually
crash due to running out of stack.

This is now fixed by simply letting the code continue on to the check later
that does

    if (there was an error) {
      print nasty message
      return error
    }

With output that looks like

    ERROR: malformed escape sequence
    WARNING: the previous command failed, the remaining commands will not be executed.

And therefore the world becomes a happy place.
2017-08-15 17:49:39 -07:00
bindings Merge branch 'release-5.0' 2017-08-09 15:30:43 -07:00
build Initial repository commit 2017-05-25 13:48:44 -07:00
fdbbackup fix: call initSignalSafeUnwind in fdbcli and backup to avoid hangs in slow task profiling. 2017-08-07 15:55:08 -07:00
fdbcli Make fdbcli gracefully handle malformed and partial command errors. 2017-08-15 17:49:39 -07:00
fdbclient Merge branch 'release-5.0' 2017-08-09 15:30:43 -07:00
fdbmonitor replace wd40 references from fdbmonitor with command to unset environment variables 2017-07-19 15:38:29 -07:00
fdbrpc Merge commit '89ac94853c70d08289e7fb58055bc5d0cd4e494d' 2017-07-26 15:35:36 -07:00
fdbserver Merge branch 'release-5.0' 2017-08-14 16:56:58 -07:00
fdbservice Initial repository commit 2017-05-25 13:48:44 -07:00
flow Merge branch 'release-5.0' 2017-08-09 10:37:43 -07:00
layers Initial repository commit 2017-05-25 13:48:44 -07:00
packaging Merge pull request #140 from cie/remove-wd40-refs 2017-08-14 10:22:52 -07:00
recipes updated paths and formatting with go docs and examples 2017-07-05 17:25:32 -07:00
tests java tester support on release-5.0 2017-07-17 16:42:50 -07:00
.gitignore Initial repository commit 2017-05-25 13:48:44 -07:00
ACKNOWLEDGEMENTS Initial repository commit 2017-05-25 13:48:44 -07:00
LICENSE Initial repository commit 2017-05-25 13:48:44 -07:00
Makefile Added min version compilation option for OS X 2017-08-07 11:56:12 -07:00
README.md Initial repository commit 2017-05-25 13:48:44 -07:00
foundationdb.sln Initial repository commit 2017-05-25 13:48:44 -07:00
versions.target Update versions.target for next release. 2017-08-09 23:34:14 -07:00

README.md

FoundationDB

FoundationDB is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. It organizes data as an ordered key-value store and employs ACID transactions for all operations. It is especially well-suited for read/write workloads but also has excellent performance for write-intensive workloads. Users interact with the database using API language binding.