Skip to content

Commit 1a4aec4

Browse files
committed
Merge remote-tracking branch 'origin/bfops/factor-ci' into bfops/ci-all
2 parents 107e1ed + c6813bd commit 1a4aec4

163 files changed

Lines changed: 6859 additions & 728 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cargo/config.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ llm = "run --package xtask-llm-benchmark --bin llm_benchmark --"
77
ci = "run -p ci --"
88
smoketest = "ci smoketests --"
99
smoketests = "smoketest"
10+
lint = "ci lint --"
1011

1112
[target.x86_64-pc-windows-msvc]
1213
# Use a different linker. Otherwise, the build fails with some obscure linker error that

.github/CODEOWNERS

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
/crates/core/src/db/datastore/traits.rs @cloutiertyler
22
/rust-toolchain.toml @cloutiertyler
3-
/.github/CODEOWNERS @cloutiertyler
43
LICENSE @cloutiertyler
54
LICENSE.txt @cloutiertyler
65
/licenses/ @cloutiertyler
76
/crates/client-api-messages/src/websocket.rs @centril @gefjon
87

98
/crates/cli/src/ @bfops @cloutiertyler @jdetter
109
/tools/ci/ @bfops @cloutiertyler @jdetter
11-
/tools/upgrade-version/ @bfops @jdetter
12-
/tools/license-check/ @bfops @jdetter
13-
/.github/ @bfops @jdetter
10+
/tools/upgrade-version/ @bfops @jdetter @cloutiertyler
11+
/tools/license-check/ @bfops @jdetter @cloutiertyler
12+
/.github/ @bfops @jdetter @cloutiertyler
1413

1514
/crates/sdk/examples/quickstart-chat/ @gefjon
1615
/modules/quickstart-chat/ @gefjon
16+
17+
/.github/CODEOWNERS @cloutiertyler

.github/workflows/ci.yml

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
- name: Linux
2828
runner: spacetimedb-new-runner-2
2929
- name: Windows
30-
runner: windows-latest
30+
runner: spacetimedb-windows-runner
3131
runs-on: ${{ matrix.runner }}
3232
timeout-minutes: 120
3333
env:
@@ -98,6 +98,10 @@ jobs:
9898
cd $env:USERPROFILE\emsdk
9999
.\emsdk install 4.0.21
100100
.\emsdk activate 4.0.21
101+
# Add emscripten to PATH for subsequent steps and subprocesses
102+
$emsdkPath = "$env:USERPROFILE\emsdk\upstream\emscripten"
103+
Add-Content -Path $env:GITHUB_PATH -Value $emsdkPath
104+
Write-Host "Added $emsdkPath to PATH"
101105
102106
- name: Install psql (Windows)
103107
if: runner.os == 'Windows'
@@ -171,13 +175,6 @@ jobs:
171175
}
172176
cargo ci smoketests -- --test-threads=1
173177
174-
- name: Check for changes
175-
run: |
176-
tools/check-diff.sh crates/smoketests || {
177-
echo 'Error: There is a diff in the smoketests directory.'
178-
exit 1
179-
}
180-
181178
test:
182179
needs: [lints]
183180
name: Test Suite
@@ -262,10 +259,6 @@ jobs:
262259
263260
wasm-bindgen --version
264261
265-
- name: Build typescript module sdk
266-
working-directory: crates/bindings-typescript
267-
run: pnpm build
268-
269262
# Source emsdk environment to make emcc (Emscripten compiler) available in PATH.
270263
- name: Run tests
271264
run: |

Cargo.lock

Lines changed: 11 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@ arrayvec = "0.7.2"
156156
async-channel = "2.5"
157157
async-stream = "0.3.6"
158158
async-trait = "0.1.68"
159-
axum = { version = "0.7", features = ["tracing"] }
160-
axum-extra = { version = "0.9", features = ["typed-header"] }
159+
axum = { version = "0.8.4", features = ["tracing"] }
160+
axum-extra = { version = "0.10", features = ["typed-header"] }
161161
backtrace = "0.3.66"
162162
base64 = "0.21.2"
163163
bigdecimal = "0.4.7"

crates/bindings-cpp/include/spacetimedb/internal/runtime_registration.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
#ifndef SPACETIMEDB_RUNTIME_REGISTRATION_H
22
#define SPACETIMEDB_RUNTIME_REGISTRATION_H
33

4+
#include <atomic>
45
#include <functional>
56
#include <optional>
67
#include <string>
8+
#include <type_traits>
9+
#include <utility>
710
#include <vector>
811
#include "../abi/opaque_types.h"
912
#include "autogen/Lifecycle.g.h"
@@ -33,6 +36,18 @@ std::vector<uint8_t> ConsumeBytes(BytesSource source);
3336
void SetMultiplePrimaryKeyError(const std::string& table_name);
3437
void SetConstraintRegistrationError(const std::string& code, const std::string& details);
3538

39+
template <typename F>
40+
__attribute__((noinline)) decltype(auto) __spacetimedb_begin_short_backtrace(F&& f) {
41+
if constexpr (std::is_void_v<std::invoke_result_t<F>>) {
42+
std::forward<F>(f)();
43+
std::atomic_signal_fence(std::memory_order_seq_cst);
44+
} else {
45+
decltype(auto) result = std::forward<F>(f)();
46+
std::atomic_signal_fence(std::memory_order_seq_cst);
47+
return result;
48+
}
49+
}
50+
3651
} // namespace Internal
3752
} // namespace SpacetimeDB
3853

crates/bindings-cpp/include/spacetimedb/internal/v10_builder.h

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,9 @@ class V10Builder {
337337
std::function<void(ReducerContext&, BytesSource)> handler;
338338
if constexpr (traits::arity == 1) {
339339
handler = [func](ReducerContext& ctx, BytesSource) {
340-
auto result = func(ctx);
340+
auto result = __spacetimedb_begin_short_backtrace([&] {
341+
return func(ctx);
342+
});
341343
if (result.is_err()) {
342344
::SpacetimeDB::fail_reducer(result.error());
343345
}
@@ -349,7 +351,9 @@ class V10Builder {
349351
bsatn::Reader reader(bytes.data(), bytes.size());
350352
auto args = std::make_tuple(bsatn::deserialize<typename traits::template arg_t<Js + 1>>(reader)...);
351353
std::apply([&ctx_inner, fn](auto&&... unpacked) {
352-
auto result = fn(ctx_inner, std::forward<decltype(unpacked)>(unpacked)...);
354+
auto result = __spacetimedb_begin_short_backtrace([&] {
355+
return fn(ctx_inner, std::forward<decltype(unpacked)>(unpacked)...);
356+
});
353357
if (result.is_err()) {
354358
::SpacetimeDB::fail_reducer(result.error());
355359
}
@@ -406,7 +410,9 @@ class V10Builder {
406410
std::function<void(ReducerContext&, BytesSource)> handler;
407411
if constexpr (traits::arity == 1) {
408412
handler = [func](ReducerContext& ctx, BytesSource) {
409-
auto result = func(ctx);
413+
auto result = __spacetimedb_begin_short_backtrace([&] {
414+
return func(ctx);
415+
});
410416
if (result.is_err()) {
411417
::SpacetimeDB::fail_reducer(result.error());
412418
}
@@ -418,7 +424,9 @@ class V10Builder {
418424
bsatn::Reader reader(bytes.data(), bytes.size());
419425
auto args = std::make_tuple(bsatn::deserialize<typename traits::template arg_t<Js + 1>>(reader)...);
420426
std::apply([&ctx_inner, fn](auto&&... unpacked) {
421-
auto result = fn(ctx_inner, std::forward<decltype(unpacked)>(unpacked)...);
427+
auto result = __spacetimedb_begin_short_backtrace([&] {
428+
return fn(ctx_inner, std::forward<decltype(unpacked)>(unpacked)...);
429+
});
422430
if (result.is_err()) {
423431
::SpacetimeDB::fail_reducer(result.error());
424432
}
@@ -461,7 +469,9 @@ class V10Builder {
461469
std::function<std::vector<uint8_t>(ViewContext&, BytesSource)> handler =
462470
[func](ViewContext& ctx, BytesSource args_source) -> std::vector<uint8_t> {
463471
(void)args_source;
464-
auto result = func(ctx);
472+
auto result = __spacetimedb_begin_short_backtrace([&] {
473+
return func(ctx);
474+
});
465475
auto result_vec = view_result_to_vec(std::move(result));
466476
IterBuf buf = IterBuf::take();
467477
{
@@ -475,7 +485,9 @@ class V10Builder {
475485
std::function<std::vector<uint8_t>(AnonymousViewContext&, BytesSource)> handler =
476486
[func](AnonymousViewContext& ctx, BytesSource args_source) -> std::vector<uint8_t> {
477487
(void)args_source;
478-
auto result = func(ctx);
488+
auto result = __spacetimedb_begin_short_backtrace([&] {
489+
return func(ctx);
490+
});
479491
auto result_vec = view_result_to_vec(std::move(result));
480492
IterBuf buf = IterBuf::take();
481493
{
@@ -525,7 +537,9 @@ class V10Builder {
525537
std::function<std::vector<uint8_t>(ProcedureContext&, BytesSource)> handler;
526538
if constexpr (traits::arity == 1) {
527539
handler = [func](ProcedureContext& ctx, BytesSource) -> std::vector<uint8_t> {
528-
auto result = func(ctx);
540+
auto result = __spacetimedb_begin_short_backtrace([&] {
541+
return func(ctx);
542+
});
529543
IterBuf buf = IterBuf::take();
530544
{
531545
bsatn::Writer writer(buf.get());
@@ -539,9 +553,11 @@ class V10Builder {
539553
return []<std::size_t... Js>(std::index_sequence<Js...>, Func fn, ProcedureContext& ctx_inner, const std::vector<uint8_t>& bytes) -> std::vector<uint8_t> {
540554
bsatn::Reader reader(bytes.data(), bytes.size());
541555
auto args = std::make_tuple(bsatn::deserialize<typename traits::template arg_t<Js + 1>>(reader)...);
542-
auto result = std::apply([&ctx_inner, fn](auto&&... unpacked) {
543-
return fn(ctx_inner, std::forward<decltype(unpacked)>(unpacked)...);
544-
}, args);
556+
auto result = __spacetimedb_begin_short_backtrace([&] {
557+
return std::apply([&ctx_inner, fn](auto&&... unpacked) {
558+
return fn(ctx_inner, std::forward<decltype(unpacked)>(unpacked)...);
559+
}, args);
560+
});
545561
IterBuf buf = IterBuf::take();
546562
{
547563
bsatn::Writer writer(buf.get());

0 commit comments

Comments
 (0)