Proto commits in DBOS-project/apiary

These 16 commits are when the Protocol Buffers files have changed:

Commit:8dd3bb7
Author:Qian Li
Committer:GitHub

Add role in Apiary (#128) * Remove WFQ stuff * Refactored "service" to "role" in Apiary. --------- Co-authored-by: Peter Kraft <petereliaskraft@gmail.com>

The documentation is generated from this commit.

Commit:d9ab48a
Author:Qian Li
Committer:GitHub

WP Option Case Study and Fixes (#124) - Fixed the bug in replay: now use a thread pool to asynchronously execute replay tasks. -- - - Within concurrent tasks, always launch committed tasks first, and the aborted ones later, because we wanted to reproduce those constraint violation errors and lock failures. - Propagated error messages back to the client. Added case study code for WordPress 11437, MediaWiki 69815, 40594.

Commit:f99177b
Author:Qian Li
Committer:GitHub

Retro End Condition (#123) This PR allows the retro replay to stop right before a given request, by providing an endExecID to the replay function.

Commit:e45c47f
Author:Qian Li
Committer:GitHub

Selective Retro (#122) This PR implements a basic selective retro replay mode. We track which tables are updated during replay, and skip based on a few heuristics: - If a request triggers a workflow of functions, we only need to check the first function of each request. Functions in a workflow is either all skipped or not. - If a workflow contains any modified function, then we must replay it. - If a workflow is read-only and doesn't contain modified functions, then we skip it. - If a workflow contains write but doesn't interact with tables in the write set, then we can skip it. Also refactored the Moodle tests to a new file.

Commit:7b5fbab
Author:Qian Li
Committer:GitHub

Retro replay (#111) This PR implements retroReplay -- replay an execution and everything after it, using the original transaction log for the execution order. In order to implement this feature, I made several changes: - Changed isReplay to replayMode. 0: not a replay, 1: replay a single execution using the provenance log, 2: replay an execution and everything after. - Added an option to log requests. We only need to log the initial client input of each workflow. It uses the provenance buffer so it should not impact performance. - The Apiary worker uses a single thread to do retroReplay and returns the result once everything is finished. -RetroReplay does not generate more TCP requests to the worker. - Added tests to make sure that we can faithfully follow the original execution order, especially if two requests are interleaving. Now we can reset the database and re-execute from any point in the past. Will add more optimizations on selective replay in future PRs.

Commit:d1f3e2d
Author:Qian Li
Committer:GitHub

Refactor + Infra for Replay (#104) - Refactored provenance tables and tests. - Propagated replay flag throughout the execution pipeline. Next step: implement basic replay support by answering queries with provenance data.

Commit:71c9bce
Author:Peter Kraft
Committer:GitHub

Exactly-Once Semantics for Postgres (#52)

Commit:563d726
Author:Peter Kraft
Committer:GitHub

Returning Array Types (#43)

Commit:6716ef1
Author:Qian Li
Committer:GitHub

Basic provenance (#40) * Basic provenance logging for functions * Add execution id to function execution * Refactor apiary worker client

Commit:1fb7e53
Author:Peter Kraft
Committer:GitHub

Improved Typing (#41)

Commit:ed218d0
Author:Peter Kraft
Committer:GitHub

WFQ Scheduler (#29)

Commit:6625366
Author:Qian Li
Committer:GitHub

Async Benchmark (#28) Co-authored by Peter Kraft <petereliaskraft@gmail.com> Co-authored by Qian Li <qianli@cs.stanford.edu>

Commit:8f17f05
Author:Qian Li
Committer:GitHub

Async Workers (#16)

Commit:08d60d8
Author:Peter Kraft
Committer:GitHub

Remove Pkeys (#15)

Commit:36028e7
Author:Qian Li
Committer:GitHub

Partition Info (#13) Add partition info interface inside ApiaryConnection. Now we can easily get the hostname given a pkey. Update related tests and clean up the codebase (use Integer for pkey everywhere).

Commit:e8ad1cd
Author:Peter Kraft
Committer:GitHub

Decentralized Scheduler (#10)