Back to top

ReQL command: wait

Command syntax

table.wait([{:wait_for => 'all_replicas_ready', :timeout => <sec>}]) → object

database.wait([{:wait_for => 'all_replicas_ready', :timeout => <sec>}]) → object

r.wait(table | database, [{:wait_for => 'all_replicas_ready', :timeout => <sec>}]) → object


Wait for a table (or tables) to be ready. A table may be temporarily unavailable after creation, rebalancing or reconfiguring.

The wait command takes two optional arguments:

  • wait_for: a string indicating a table status to wait on before returning, one of ready_for_outdated_reads, ready_for_reads, ready_for_writes, or all_replicas_ready. The default is all_replicas_ready.
  • timeout: a number indicating maximum time, in seconds, to wait for the table to be ready. If this value is exceeded, a ReqlRuntimeError will be thrown. A value of0 means no timeout. The default is 0 (no timeout).

The return value is an object consisting of a single field, ready. The value is an integer indicating the number of tables waited for. It will always be 1 when wait is called on a table, and the total number of tables when called on a database.

Versions of RethinkDB prior to 2.3 allowed wait to be called without a table or database specified. This is no longer valid; wait requires explicit selection of a database or table.

Example: Wait on a table to be ready.

> r.table('superheroes').wait().run(conn)

{:ready => 1}

Get more help

Couldn't find what you were looking for?