├── .github ├── arcon_logo.png ├── arcon_overview.jpg ├── arcon_vision.png └── workflows │ ├── ci.yaml │ └── gh-pages.yml ├── .gitignore ├── .gitmodules ├── CONTRIBUTING.md ├── Cargo.toml ├── LICENSE ├── README.md ├── arcon ├── Cargo.toml ├── arcon_allocator │ ├── Cargo.toml │ ├── README.md │ └── src │ │ └── lib.rs ├── arcon_state │ ├── Cargo.toml │ ├── README.md │ └── src │ │ ├── backend │ │ ├── handles.rs │ │ ├── macros.rs │ │ ├── metrics_utils.rs │ │ ├── mod.rs │ │ ├── ops.rs │ │ ├── rocks │ │ │ ├── aggregator_ops.rs │ │ │ ├── map_ops.rs │ │ │ ├── mod.rs │ │ │ ├── reducer_ops.rs │ │ │ ├── value_ops.rs │ │ │ └── vec_ops.rs │ │ ├── serialization.rs │ │ ├── sled │ │ │ ├── aggregator_ops.rs │ │ │ ├── map_ops.rs │ │ │ ├── mod.rs │ │ │ ├── reducer_ops.rs │ │ │ ├── value_ops.rs │ │ │ └── vec_ops.rs │ │ └── test_common.rs │ │ ├── data.rs │ │ ├── error.rs │ │ └── lib.rs ├── benches │ ├── allocator.rs │ ├── buffer_pool.rs │ ├── hash_table.rs │ └── value.rs └── src │ ├── application │ ├── builder.rs │ ├── conf │ │ ├── logger.rs │ │ └── mod.rs │ └── mod.rs │ ├── buffer │ ├── event │ │ └── mod.rs │ ├── mod.rs │ └── network │ │ └── mod.rs │ ├── data │ ├── arrow.rs │ ├── flight_serde.rs │ ├── mod.rs │ ├── partition.rs │ └── ser_id.rs │ ├── dataflow │ ├── builder.rs │ ├── conf.rs │ ├── constructor.rs │ ├── dfg.rs │ ├── mod.rs │ ├── sink │ │ └── mod.rs │ ├── source │ │ ├── kafka.rs │ │ └── mod.rs │ └── stream │ │ ├── arrow │ │ └── mod.rs │ │ ├── filter.rs │ │ ├── keyed │ │ └── mod.rs │ │ ├── map.rs │ │ ├── mod.rs │ │ ├── operator.rs │ │ └── partition.rs │ ├── error │ ├── mod.rs │ ├── source.rs │ └── timer.rs │ ├── index │ ├── appender │ │ ├── eager.rs │ │ └── mod.rs │ ├── hash_table │ │ ├── bitmask.rs │ │ ├── eager.rs │ │ ├── generic.rs │ │ ├── mod.rs │ │ ├── sse2.rs │ │ └── table.rs │ ├── mod.rs │ ├── value │ │ ├── eager.rs │ │ ├── local.rs │ │ └── mod.rs │ └── window │ │ ├── appender.rs │ │ ├── arrow.rs │ │ ├── incremental.rs │ │ └── mod.rs │ ├── lib.rs │ ├── manager │ ├── epoch.rs │ ├── mod.rs │ ├── node.rs │ ├── snapshot.rs │ ├── source.rs │ └── state.rs │ ├── metrics │ ├── ewma.rs │ ├── log_recorder.rs │ ├── meter.rs │ ├── mod.rs │ ├── perf_event.rs │ └── runtime_metrics.rs │ ├── stream │ ├── channel │ │ ├── mod.rs │ │ └── strategy │ │ │ ├── broadcast.rs │ │ │ ├── forward.rs │ │ │ ├── keyed.rs │ │ │ └── mod.rs │ ├── mod.rs │ ├── node │ │ ├── common.rs │ │ ├── debug.rs │ │ ├── mod.rs │ │ ├── source.rs │ │ └── timer.rs │ ├── operator │ │ ├── function │ │ │ ├── filter.rs │ │ │ ├── flatmap.rs │ │ │ ├── map.rs │ │ │ ├── map_in_place.rs │ │ │ └── mod.rs │ │ ├── mod.rs │ │ ├── sink │ │ │ ├── kafka.rs │ │ │ ├── local_file.rs │ │ │ ├── measure.rs │ │ │ ├── mod.rs │ │ │ └── socket.rs │ │ └── window │ │ │ ├── assigner.rs │ │ │ └── mod.rs │ ├── source │ │ ├── kafka.rs │ │ ├── local_file.rs │ │ ├── mod.rs │ │ ├── schema.rs │ │ └── socket.rs │ └── time │ │ └── mod.rs │ ├── table │ └── mod.rs │ ├── test │ ├── arcon_state.rs │ ├── keyby_integration.rs │ └── mod.rs │ └── util │ ├── io.rs │ ├── mod.rs │ ├── prost_helpers.rs │ └── system_killer.rs ├── arcon_build ├── Cargo.toml ├── README.md └── src │ └── lib.rs ├── arcon_macros ├── Cargo.toml ├── README.md ├── src │ ├── app.rs │ ├── arcon.rs │ ├── arrow.rs │ ├── decoder.rs │ ├── lib.rs │ ├── proto.rs │ └── state.rs └── tests │ └── decoder_test.rs ├── arcon_tests ├── Cargo.toml ├── build.rs └── src │ ├── basic_v3.proto │ ├── lib.rs │ └── proto_derive_test.rs ├── arcon_util ├── Cargo.toml ├── README.md └── src │ └── lib.rs ├── clippy.toml ├── docs ├── README.md ├── config.toml └── content │ ├── _index.md │ ├── authors │ ├── _index.md │ └── max-meldrum.md │ ├── blog │ ├── _index.md │ ├── arrow.md │ └── dev_update_22_08_10.md │ ├── docs │ ├── _index.md │ ├── arcon │ │ ├── _index.md │ │ ├── about.md │ │ ├── community.md │ │ └── roadmap.md │ └── getting-started │ │ ├── _index.md │ │ ├── data-types.md │ │ └── quick-start.md │ └── privacy-policy │ └── _index.md ├── examples ├── Cargo.toml ├── custom_operator.rs ├── file.rs ├── kafka_source.rs ├── stateful.rs └── window.rs ├── run_checks.sh └── rustfmt.toml /.github/arcon_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cda-group/arcon/e6d266579b134bbd1fd52c4a5ee30646f89dd914/.github/arcon_logo.png -------------------------------------------------------------------------------- /.github/arcon_overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cda-group/arcon/e6d266579b134bbd1fd52c4a5ee30646f89dd914/.github/arcon_overview.jpg -------------------------------------------------------------------------------- /.github/arcon_vision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cda-group/arcon/e6d266579b134bbd1fd52c4a5ee30646f89dd914/.github/arcon_vision.png -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | name: ci 2 | on: 3 | push: 4 | branches: ["master"] 5 | pull_request: 6 | branches: ["master"] 7 | 8 | env: 9 | CARGO_TERM_COLOR: always 10 | msrv: 1.56.1 11 | 12 | jobs: 13 | rustfmt: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: checkout 17 | uses: actions/checkout@v2 18 | - name: install toolchain 19 | uses: actions-rs/toolchain@v1 20 | with: 21 | toolchain: stable 22 | default: true 23 | profile: minimal 24 | components: rustfmt 25 | - name: rustfmt 26 | uses: actions-rs/cargo@v1 27 | with: 28 | command: fmt 29 | args: --all -- --check 30 | 31 | clippy: 32 | runs-on: ubuntu-latest 33 | steps: 34 | - uses: actions/checkout@v2 35 | - name: install toolchain 36 | uses: actions-rs/toolchain@v1 37 | with: 38 | toolchain: stable 39 | default: true 40 | profile: minimal 41 | components: clippy 42 | - name: clippy 43 | uses: actions-rs/clippy-check@v1 44 | with: 45 | token: ${{ secrets.GITHUB_TOKEN }} 46 | args: --workspace --all-features --all-targets -- -D warnings 47 | 48 | test: 49 | runs-on: ${{ matrix.os }} 50 | continue-on-error: ${{ matrix.experimental }} 51 | strategy: 52 | fail-fast: false 53 | matrix: 54 | build: [Linux, macOS] 55 | include: 56 | - build: Linux 57 | os: ubuntu-latest 58 | experimental: false 59 | - build: macOS 60 | os: macos-latest 61 | experimental: false 62 | steps: 63 | - uses: actions/checkout@v2 64 | - name: install toolchain 65 | uses: actions-rs/toolchain@v1 66 | with: 67 | toolchain: ${{ env.msrv }} 68 | default: true 69 | profile: minimal 70 | - name: Install cargo-hack 71 | run: cargo install cargo-hack 72 | 73 | # Run tests with all features on workspace 74 | - name: test all --all-features 75 | uses: actions-rs/cargo@v1 76 | with: 77 | command: test 78 | args: --all --all-features 79 | 80 | # Run tests for each Arcon feature 81 | - name: test --each-feature 82 | run: cargo hack test --each-feature 83 | working-directory: arcon 84 | 85 | # Verify benches 86 | - name: bench check 87 | uses: actions-rs/cargo@v1 88 | with: 89 | command: check 90 | args: --benches --all --all-features 91 | -------------------------------------------------------------------------------- /.github/workflows/gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: github pages 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | build: 10 | name: Publish website 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout main 14 | uses: actions/checkout@v3.0.0 15 | - name: Build and deploy 16 | uses: shalzz/zola-deploy-action@master 17 | env: 18 | BUILD_DIR: docs 19 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .swp 3 | .swo 4 | *.rs.swm 5 | *.rs.swn 6 | *.rs.swl 7 | *.rs.swo 8 | *.rs.swp 9 | *.proto.swp 10 | target/ 11 | shell.nix 12 | Cargo.lock 13 | 14 | op_* 15 | 16 | # Sublime Text 17 | *.sublime-project 18 | *.sublime-workspace 19 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "docs/themes/adidoks"] 2 | path = docs/themes/adidoks 3 | url = https://github.com/aaranxu/adidoks.git 4 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Arcon 2 | 3 | All contributions are appreciated! Whether if it is fixing a typo, refactoring existing code, or adding a new feature. 4 | 5 | If you are unsure where to start, have a look at the open issues here on Github. 6 | 7 | ## Getting Started 8 | 9 | Fork the arcon repository and create a new branch for the feature you aim to work on. Keep the master branch of the fork clean and have it follow arcon's master. 10 | 11 | Create a new branch 12 | 13 | ```bash 14 | git checkout -b my_feature_branch 15 | ``` 16 | Add remote upstream (SSH): 17 | 18 | ```bash 19 | git remote add upstream git@github.com:cda-group/arcon.git 20 | ``` 21 | Add remote upstream (HTTPS): 22 | 23 | ```bash 24 | git remote add upstream https://github.com/cda-group/arcon.git 25 | ``` 26 | Whenever you need to sync your fork: 27 | 28 | ```bash 29 | git pull upstream master 30 | ``` 31 | 32 | ## Pull Requests 33 | 34 | Arcon uses a squash and merge strategy for all pull requests. This means that all commits of a pull request will be squashed into a single commit. 35 | 36 | Some general tips for creating Pull Requests: 37 | 38 | 1. Provide a description of what your PR adds to Arcon. 39 | 2. Motivate your changes. If the PR now uses library X rather than Y to solve a problem, please motivate the change. 40 | 3. Keep the PR simple, that is, try not to add several features into a single PR. 41 | 4. Connect PR/commit to a github issue, e.g., "closes #4" 42 | 43 | 44 | Before submitting a PR, make sure to run all related tests and verifications to catch potential errors locally rather than at the CI. 45 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "arcon", 4 | "arcon_build", 5 | "arcon_util", 6 | "arcon_tests", 7 | "examples" 8 | ] 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |
3 |