17 Commits

Author SHA1 Message Date
Stephan Behnke
c9961486be Rename OOM monitor wording (#11086)
Seems clearer.
2026-07-15 19:15:26 +00:00
Stephan Behnke
51181b17cc Improve memory diagnostics for test jobs (#10742)
## What changed?

- Poll CI memory every 1s with cheap process snapshots.
- Capture pprof and process memory diagnostics when memory crosses
threshold, then every 30s while above it.
- Upload memory diagnostics artifacts from post-test reporting.

## Why?

Make OOM failures easier to diagnose before the runner terminates the
test process.

Example:
https://github.com/temporalio/temporal/actions/runs/29111099672/job/86424089913?pr=10742#step:7:77
2026-07-13 18:59:29 +00:00
Yaniv Kaul
49c695f44e chore: upgrade dev/CI Cassandra from 3.11 to 5.0 (#9482)
Cassandra 3.11 reached EOL in July 2023. Upgrade both development and CI
compose files to Cassandra 5.0 for current driver compatibility and
feature parity with ScyllaDB.

Changes:
- develop/docker-compose: cassandra:3.11 -> cassandra:5.0
- develop/github CI compose: cassandra:3.11 -> cassandra:5.0, increase
healthcheck retries from 30 to 60 (5.0 is slower to start)
- macOS docs: update to 5.0, remove stale ARM JNA workaround that is no
longer needed

## What changed?
Big change, but:
1. Cassandra 3.11 is End-of-Life. 
2. Allowed me separately to change the Golang CQL driver to ScyllaDB's,
which doesn't support that EOL Cassandra anymore (my fault too, I
removed that support I think).

## Why?
If I wanted (and I do) to switch to ScyllaDB's GoCQL driver, I needed to
perform this change.

## How did you test it?
- [x] built
- [x] run locally and tested manually
- [x] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

## Potential risks
I also did not see any performance regression!
2026-03-23 21:27:23 -07:00
Stephan Behnke
24ab712993 Docker compose healthchecks (#9335)
## What changed?

Add health checks for docker compose dependencies.

## Why?

Seeing connection timeouts for cass_es8
[[example](https://github.com/temporalio/temporal/actions/runs/22005015596/job/63897748984?pr=9292)]
that are failing tests.

## How did you test it?
- [ ] built
- [ ] run locally and tested manually
- [x] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

## Potential risks

Might make tests a little bit slower due to extra wait time.
2026-02-17 11:27:55 -08:00
Stephan Behnke
a4e21187d7 ARM runners for all database setups (#9312)
## What changed?

Use only ARM runners for running tests.

## Why?

They are faster and cheaper and are available faster.

<img width="390" height="249" alt="Screenshot 2026-02-12 at 8 02 58 PM"
src="https://github.com/user-attachments/assets/0de5865e-971a-4d7c-8dd1-a57860412f12"
/>

## How did you test it?
- [ ] built
- [ ] run locally and tested manually
- [x] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

Tested explicitly on all databases.
2026-02-13 14:17:20 -08:00
Stephan Behnke
2770e4c19e Print goroutine profile in CI (#9162)
## What changed?

1. Extended existing Go test memory monitor to include goroutine
profile.
2. Changed snapshot to be of moment with _highest_ memory usage (instead
of latest).
3. Unified report into a single one (both printing and disk snapshot).
4. (bonus) added monitor to unit and integration test jobs.

## Why?

Inspect where high goroutine count comes from.

## How did you test it?

Example:
https://github.com/temporalio/temporal/actions/runs/21695994550/job/62566409323?pr=9162#step:10:17
2026-02-11 21:45:24 +00:00
Stephan Behnke
f5bfe42239 Parallel Workflow Update Tests (#8811)
## What changed?

Migrated `TestWorkflowUpdateSuite` away from testify's `Suite`; enabling
parallel test execution.

**How it works**

- a test invokes `testcore.NewEnv(t)` to obtain a new `TestEnv`
- `TestEnv` sets `t.Parallel()` (_intentionally not giving a way to opt
out!_)
- `TestEnv` obtains a test cluster from `clusterPool` (_or blocks if all
are in-use right now_)
- env var `TEMPORAL_TEST_SHARED_CLUSTERS` controls size of the pool
- if a test relies on APIs like InjectHook, a dedicated cluster is used
to prevent overlap
- env var `TEMPORAL_TEST_DEDICATED_CLUSTERS` controls number of
dedicated clusters

**testify suites**

Existing test suites are limited by the same dedicated cluster pool to
prevent creating too many clusters.

**Database connections**

SQLite setup for TestEnv-based func tests (ie only
TestWorkflowUpdateSuite so far) has been changed to a file-based
approach since that supports much better concurrency due to its WAL that
an in-memory SQLite database does not support.

Connection limits for other databases were also raised due to connection
errors.

**Planned follow-ups**

- Migrating the other testify suites should be fairly straight-forward
with the use of AI agents.
- Reduce need for dedicated clusters by leveraging isolated
namespace-per-test more.
- Eliminate all `time.Sleep`s.
- Tweak test cluster pool behavior.

## Why?

1. **Local speedup**: benchmarks show a ~50% speed increase (36.1s →
16.6s) for `TestWorkflowUpdateSuite`.

5. **Namespace isolation**: every test runs in its own namespace. This
greatly reduces the risk of (accidental) collisions and also reduces the
need to craft unique identifiers such as for task queues and workflow
IDs.

6. **Deprecate testify suites**: Long-term strategy to remove use of
testify suites in functional tests (one reason being their inability to
run tests within a suite in parallel).

## How did you test it?
- [ ] built
- [ ] run locally and tested manually
- [x] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

## Potential Issues

1. Logs become less useful since there is more interleaving of tests. 
2. Higher resource consumption: it requires more concurrent connections
to databases and shows higher memory consumption (see 3 and 4). This
could cause some short-term instability on CI. Note that some other PRs
were merged to add mechanics for monitoring memory usage much better;
which will help here.
4. Until all functional tests are converted, there is an imbalance in
test cluster creation: migrated tests use the shared pool while current
tests create one cluster each. Especially given the fact that some tests
don't allow for test cluster sharing as they use non-parallelizable
actions such as `InjectHook` or dynamic config overrides. With some more
effort the number of these can be reduced.
7. Setup of test clusters was designed around the idea of short-lived
clusters, one per suite. But when re-using them for longer, some of the
assumptions don't hold anymore and increase memory usage. There's a band
aid in place to limit how often a test cluster can be used before it's
torn down. A long-term solution requires some design changes to how test
clusters are started/used/torn down.
8. If there are certain cross-namespace issues or bugs that affect
multiple tests, it might be harder to identify the root cause now.
However; the existing test re-runs should at least mitigate these
short-term.

---------

Co-authored-by: Dan Davison <dandavison7@gmail.com>
2026-01-24 04:08:49 +00:00
Stephan Behnke
1b90c94f47 Capture memory monitor report before OOM crash (#9079)
## What changed?

Follow-up to https://github.com/temporalio/temporal/pull/9027

1. Print memory stats to both file and stdout (new!)
2. Print Go heap report once a memory threshold is reached (ie close to
OOM kill)
3. Add `alloc_objects` to Go heap report


See
[example](https://github.com/temporalio/temporal/actions/runs/21153910359/job/60835302610?pr=9079#step:9:89):
<img width="1328" height="1197" alt="Screenshot 2026-01-19 at 4 23
28 PM"
src="https://github.com/user-attachments/assets/fe910197-d813-4f63-8907-797c5f11bc90"
/>
(note that Go test output is buffered so they all appear mostly
sequentially)

## Why?

Gain ability to capture memory usage and Go heap report **before an OOM
kill**.

## How did you test it?
- [ ] built
- [ ] run locally and tested manually
- [x] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)
2026-01-23 17:32:21 -08:00
Stephan Behnke
6736479902 Memory watcher for functional tests (#9027)
## What changed?

Added script to take memory report snapshots during test execution and
print report after test success/failure.

## Why?

Gain insights into memory usage; especially when job is OOM killed.



## How did you test it?

see example:
https://github.com/temporalio/temporal/actions/runs/21011468266/job/60407413329?pr=9027#step:9:15

<details><summary>Example</summary>
<p>

```
Memory snapshot at 2026-01-14 22:16:53

Time      Used(%)  Used(MB)  Goroutines  Top Processes
---------------------------------------------------------------
22:06:03    16%      5347         ?     java (2468MB), java (1322MB)
22:06:33    20%      6460         ?     java (2450MB), java (1322MB), compile (376MB)
22:07:03    16%      5418         ?     java (2430MB), java (1323MB)
22:07:33    16%      5401      2781     java (2531MB), java (1333MB)
22:08:06    17%      5702      5861     java (2493MB), java (1339MB), xdc.test (649MB)
22:08:36    18%      6034      5971     java (2528MB), java (1346MB), xdc.test (936MB)
22:09:07    20%      6455      6149     java (2539MB), java (1350MB), xdc.test (1314MB)
22:09:38    26%      8416     45668     xdc.test (3281MB), java (2535MB), java (1375MB)
22:10:10    33%     10596     43034     xdc.test (5657MB), java (2560MB), java (1405MB)
22:10:42    39%     12806     39209     xdc.test (7449MB), java (2551MB), java (1413MB)
22:11:13    42%     13580     33372     xdc.test (8166MB), java (2556MB), java (1413MB)
22:11:44    44%     14196     11067     xdc.test (8168MB), java (2548MB), java (1413MB)
22:12:15    44%     14171     11342     xdc.test (8653MB), java (2555MB), java (1415MB)
22:12:46    44%     14233     11724     xdc.test (8682MB), java (2546MB), java (1421MB)
22:13:17    45%     14536     10186     xdc.test (8858MB), java (2556MB), java (1427MB)
22:13:48    45%     14648     10392     xdc.test (8961MB), java (2555MB), java (1427MB)
22:14:19    45%     14710     10935     xdc.test (9027MB), java (2552MB), java (1428MB)
22:14:49    45%     14716     11060     xdc.test (9020MB), java (2557MB), java (1428MB)
22:15:20    45%     14702     11312     xdc.test (8925MB), java (2557MB), java (1428MB)
22:15:51    46%     14835     11571     xdc.test (9088MB), java (2545MB), java (1429MB)
22:16:22    46%     14839     11964     xdc.test (9082MB), java (2556MB), java (1429MB)
22:16:53    18%      5911      5792     java (2547MB), java (1434MB), xdc.test (628MB)

--- Top Processes ---
    PID %MEM        RSS COMMAND
   2550  7.9    2608560 java
   2679  4.4    1468908 java
  23586  1.9     643644 xdc.test
   1810  0.4     155452 provjobd
   2094  0.4     142716 Runner.Worker
   2079  0.3     113336 Runner.Listener
  23517  0.3      99448 go
   1161  0.2      78640 dockerd
    833  0.1      51476 php-fpm8.3
    910  0.1      51092 containerd
    270  0.1      43536 multipathd
   1417  0.1      36216 python3
    865  0.1      35444 python3
   3362  0.0      22220 go
   1184  0.0      21448 php-fpm8.3
   1185  0.0      21448 php-fpm8.3
    831  0.0      20332 networkd-dispat
   1987  0.0      19000 hca
    203  0.0      16660 systemd-journal

--- Memory Summary ---
               total        used        free      shared  buff/cache   available
Mem:           32098        5914       17968          51        8738       26183
Swap:              0           0           0

--- Go Heap Profile ---
File: xdc.test
Build ID: 2f2150795a26dac09836852e7ea9c9cf9f89fc14
Type: inuse_space
Time: 2026-01-14 22:16:53 UTC
Showing nodes accounting for 37251.65kB, 100% of 37251.65kB total
      flat  flat%   sum%        cum   cum%
 6002.03kB 16.11% 16.11%  6002.03kB 16.11%  go.temporal.io/sdk/internal.newLocalActivityTunnel (inline)
    2565kB  6.89% 23.00%     2565kB  6.89%  runtime.allocm
 2564.16kB  6.88% 29.88%  3635.80kB  9.76%  google.golang.org/protobuf/internal/filedesc.(*Message).unmarshalFull
 2384.64kB  6.40% 36.28%  2384.64kB  6.40%  go.temporal.io/server/common/aggregate.NewMovingWindowAvgImpl (inline)
 2048.35kB  5.50% 41.78%  2048.35kB  5.50%  github.com/aws/aws-sdk-go/aws/endpoints.init
 1537.50kB  4.13% 45.91%  1537.50kB  4.13%  go.uber.org/zap/internal/bufferpool.init.NewPool.func1
 1536.66kB  4.13% 50.03%  1536.66kB  4.13%  runtime.malg
 1072.75kB  2.88% 52.91%  1072.75kB  2.88%  go.temporal.io/sdk/internal.newBaseWorker
 1071.64kB  2.88% 55.79%  1071.64kB  2.88%  google.golang.org/protobuf/internal/strs.(*Builder).grow (inline)
 1045.40kB  2.81% 58.60%  1045.40kB  2.81%  github.com/gocql/gocql.(*Session).scanColumnMetadataSystem
 1024.11kB  2.75% 61.35%  1024.11kB  2.75%  time.newTimer
 1024.09kB  2.75% 64.09%  1024.09kB  2.75%  go.temporal.io/server/common/tasks.(*SequentialScheduler[go.shape.interface { Abort(); Ack(); Cancel(); Execute() error; HandleErr(error) error; IsRetryableError(error) bool; MarkPoisonPill() error; Nack(error); QueueID() interface {}; ReplicationTask() *go.temporal.io/server/api/replication/v1.ReplicationTask; Reschedule(); RetryPolicy() go.temporal.io/server/common/backoff.RetryPolicy; SourceClusterName() string; State() go.temporal.io/server/common/tasks.State; TaskCreationTime() time.Time; TaskID() int64 }]).pollTaskQueue
  532.26kB  1.43% 65.52%   532.26kB  1.43%  google.golang.org/protobuf/reflect/protoregistry.(*Files).RegisterFile.func2
  528.17kB  1.42% 66.94%   528.17kB  1.42%  bufio.NewReaderSize (inline)
  528.17kB  1.42% 68.36%   528.17kB  1.42%  google.golang.org/grpc/internal/transport.newBufWriter (inline)
  516.76kB  1.39% 69.75%   516.76kB  1.39%  runtime.procresize
     514kB  1.38% 71.13%      514kB  1.38%  github.com/gocql/gocql/internal/streams.New (inline)
  513.50kB  1.38% 72.50%   513.50kB  1.38%  go.temporal.io/server/api/history/v1.init
  512.50kB  1.38% 73.88%  7680.97kB 20.62%  go.uber.org/fx/internal/lifecycle.(*Lifecycle).Start
  512.44kB  1.38% 75.26%   512.44kB  1.38%  go/token.init.0
  512.25kB  1.38% 76.63%   512.25kB  1.38%  runtime.gcBgMarkWorker
  512.19kB  1.37% 78.01%   512.19kB  1.37%  github.com/gocql/gocql.(*Conn).executeQuery
  512.17kB  1.37% 79.38%   512.17kB  1.37%  google.golang.org/grpc/metadata.FromOutgoingContext
  512.17kB  1.37% 80.76%   512.17kB  1.37%  google.golang.org/grpc/metadata.MD.Set (inline)
  512.10kB  1.37% 82.13%   512.10kB  1.37%  context.(*cancelCtx).propagateCancel
  512.10kB  1.37% 83.51%   512.10kB  1.37%  go.uber.org/fx.moduleOption.apply
  512.09kB  1.37% 84.88%   512.09kB  1.37%  internal/abi.NewName
  512.07kB  1.37% 86.25%   512.07kB  1.37%  go.uber.org/dig.(*Scope).newGraphNode
  512.06kB  1.37% 87.63%   512.06kB  1.37%  google.golang.org/protobuf/internal/impl.fieldInfoForScalar
  512.05kB  1.37% 89.00%   512.05kB  1.37%  go.temporal.io/server/common/goro.NewAdaptivePool
  512.05kB  1.37% 90.38%   512.05kB  1.37%  go.temporal.io/server/common/nexus.(*EndpointRegistryImpl).setEnabled
  512.05kB  1.37% 91.75%   512.05kB  1.37%  google.golang.org/grpc/internal/transport.newWriteQuota (inline)
  512.05kB  1.37% 93.13%   512.05kB  1.37%  go.temporal.io/sdk/internal.(*baseWorker).runEagerTaskDispatcher
  512.02kB  1.37% 94.50%   512.02kB  1.37%  context.WithValue
  512.02kB  1.37% 95.88%   512.02kB  1.37%  encoding/json.typeFields
  512.02kB  1.37% 97.25%   512.02kB  1.37%  github.com/gocql/gocql.(*ring).addHostIfMissing
  512.02kB  1.37% 98.63%   512.02kB  1.37%  github.com/google/uuid.UUID.String (inline)
  512.02kB  1.37%   100%   512.02kB  1.37%  go.uber.org/dig.newParam
         0     0%   100%   512.10kB  1.37%  context.WithCancel
         0     0%   100%   512.10kB  1.37%  context.withCancel (inline)
         0     0%   100%   512.02kB  1.37%  encoding/json.(*Decoder).Decode
         0     0%   100%   512.02kB  1.37%  encoding/json.(*decodeState).object
         0     0%   100%   512.02kB  1.37%  encoding/json.(*decodeState).unmarshal
         0     0%   100%   512.02kB  1.37%  encoding/json.(*decodeState).value
         0     0%   100%   512.02kB  1.37%  encoding/json.cachedTypeFields
         0     0%   100%   512.02kB  1.37%  encoding/json.newStructEncoder (inline)
         0     0%   100%   512.02kB  1.37%  encoding/json.newTypeEncoder
         0     0%   100%   512.02kB  1.37%  encoding/json.typeEncoder
         0     0%   100%   512.02kB  1.37%  encoding/json.typeEncoder.func1
         0     0%   100%  1557.42kB  4.18%  github.com/gocql/gocql.(*ClusterConfig).CreateSession (inline)
         0     0%   100%   512.19kB  1.37%  github.com/gocql/gocql.(*Query).Iter
         0     0%   100%   512.19kB  1.37%  github.com/gocql/gocql.(*Query).MapScanCAS
         0     0%   100%   512.19kB  1.37%  github.com/gocql/gocql.(*Query).execute
         0     0%   100%  1045.40kB  2.81%  github.com/gocql/gocql.(*Session).KeyspaceMetadata

File: xdc.test
Build ID: 2f2150795a26dac09836852e7ea9c9cf9f89fc14
Type: alloc_space
Time: 2026-01-14 22:16:53 UTC
Showing nodes accounting for 99.45MB, 80.53% of 123.49MB total
Dropped 305 nodes (cum <= 0.62MB)
      flat  flat%   sum%        cum   cum%
   51.44MB 41.65% 41.65%    51.44MB 41.65%  regexp.(*bitState).reset
    5.86MB  4.75% 46.40%     5.86MB  4.75%  go.temporal.io/sdk/internal.newLocalActivityTunnel (inline)
    3.53MB  2.85% 49.26%     4.59MB  3.72%  compress/flate.NewWriter (inline)
    2.50MB  2.03% 51.28%     2.50MB  2.03%  runtime.allocm
    2.50MB  2.03% 53.31%     3.55MB  2.88%  google.golang.org/protobuf/internal/filedesc.(*Message).unmarshalFull
    2.33MB  1.89% 55.20%     2.33MB  1.89%  go.temporal.io/server/common/aggregate.NewMovingWindowAvgImpl (inline)
       2MB  1.62% 56.82%        2MB  1.62%  go.uber.org/zap/internal/bufferpool.init.NewPool.func1
       2MB  1.62% 58.44%        2MB  1.62%  github.com/aws/aws-sdk-go/aws/endpoints.init
    1.52MB  1.23% 59.67%     1.52MB  1.23%  github.com/gocql/gocql.(*Session).scanColumnMetadataSystem
    1.51MB  1.22% 60.89%     1.51MB  1.22%  github.com/grpc-ecosystem/grpc-gateway/v2/runtime.(*ServeMux).Handle
    1.50MB  1.22% 62.11%     1.50MB  1.22%  runtime.malg
    1.50MB  1.21% 63.32%     1.50MB  1.21%  fmt.init.func1
    1.50MB  1.21% 64.54%     1.50MB  1.21%  github.com/gocql/gocql.newFramer (inline)
    1.50MB  1.21% 65.75%        2MB  1.62%  go.uber.org/dig.getParamOrder
    1.07MB  0.86% 66.62%     1.07MB  0.86%  compress/flate.(*compressor).initDeflate (inline)
    1.05MB  0.85% 67.46%     1.05MB  0.85%  go.temporal.io/sdk/internal.newBaseWorker
    1.05MB  0.85% 68.31%     1.05MB  0.85%  google.golang.org/protobuf/internal/strs.(*Builder).grow (inline)
    1.03MB  0.84% 69.15%     1.03MB  0.84%  compress/flate.(*dictDecoder).init (inline)
    1.02MB  0.83% 69.97%     1.02MB  0.83%  google.golang.org/protobuf/reflect/protoregistry.(*Files).RegisterFile.func2
       1MB  0.81% 70.79%        1MB  0.81%  github.com/gocql/gocql/internal/streams.New (inline)
       1MB  0.81% 71.60%        2MB  1.62%  go.uber.org/dig.(*Scope).findAndValidateResults
       1MB  0.81% 72.41%        1MB  0.81%  context.(*cancelCtx).propagateCancel
       1MB  0.81% 73.22%        1MB  0.81%  time.newTimer
       1MB  0.81% 74.03%        1MB  0.81%  go.temporal.io/server/common/tasks.(*SequentialScheduler[go.shape.interface { Abort(); Ack(); Cancel(); Execute() error; HandleErr(error) error; IsRetryableError(error) bool; MarkPoisonPill() error; Nack(error); QueueID() interface {}; ReplicationTask() *go.temporal.io/server/api/replication/v1.ReplicationTask; Reschedule(); RetryPolicy() go.temporal.io/server/common/backoff.RetryPolicy; SourceClusterName() string; State() go.temporal.io/server/common/tasks.State; TaskCreationTime() time.Time; TaskID() int64 }]).pollTaskQueue
       1MB  0.81% 74.84%        7MB  5.67%  go.uber.org/dig.(*Scope).provide
       1MB  0.81% 75.65%        1MB  0.81%  container/list.New (inline)
       1MB  0.81% 76.46%        2MB  1.62%  go.uber.org/dig.newParam
    0.52MB  0.42% 76.88%     1.54MB  1.25%  google.golang.org/protobuf/reflect/protoregistry.(*Files).RegisterFile
    0.51MB  0.41% 77.29%     1.54MB  1.24%  io.ReadAll
    0.50MB  0.41% 77.69%     8.50MB  6.88%  go.uber.org/fx/internal/lifecycle.(*Lifecycle).Start
    0.50MB  0.41% 78.10%        2MB  1.62%  github.com/gocql/gocql.(*Conn).executeQuery
    0.50MB  0.41% 78.50%     1.50MB  1.22%  go.temporal.io/server/common/log.(*zapLogger).cloneWithTags
    0.50MB  0.41% 78.91%    10.98MB  8.89%  go.uber.org/dig.paramObject.Build
    0.50MB   0.4% 79.31%    37.04MB 29.99%  go.uber.org/fx/internal/fxreflect.CallerStack
    0.50MB   0.4% 79.72%     2.50MB  2.02%  go.uber.org/dig.(*graphHolder).EdgesFrom
    0.50MB   0.4% 80.12%     7.50MB  6.07%  go.uber.org/dig.(*Scope).Provide
    0.50MB   0.4% 80.53%        1MB  0.81%  go.uber.org/dig.(*Scope).getAllProviders (inline)
         0     0% 80.53%     1.07MB  0.86%  compress/flate.(*compressor).init
         0     0% 80.53%     1.03MB  0.84%  compress/flate.NewReader
         0     0% 80.53%     1.03MB  0.84%  compress/gzip.(*Reader).Reset
         0     0% 80.53%     1.03MB  0.84%  compress/gzip.(*Reader).readHeader
         0     0% 80.53%     4.59MB  3.72%  compress/gzip.(*Writer).Write
         0     0% 80.53%     1.03MB  0.84%  compress/gzip.NewReader (inline)
         0     0% 80.53%        1MB  0.81%  context.WithCancel
         0     0% 80.53%        1MB  0.81%  context.withCancel (inline)
         0     0% 80.53%        1MB  0.81%  fmt.(*pp).doPrintf
         0     0% 80.53%     1.02MB  0.82%  fmt.(*pp).handleMethods
         0     0% 80.53%     1.52MB  1.23%  fmt.(*pp).printArg
         0     0% 80.53%        2MB  1.62%  fmt.Fprintf
         0     0% 80.53%        1MB  0.81%  fmt.Sprintf
         0     0% 80.53%     1.50MB  1.21%  fmt.newPrinter
         0     0% 80.53%     4.02MB  3.26%  github.com/gocql/gocql.(*ClusterConfig).CreateSession (inline)
         0     0% 80.53%        2MB  1.62%  github.com/gocql/gocql.(*Conn).recv
```

</p>
</details>

---------

Co-authored-by: David Reiss <dnr@dnr.im>
2026-01-15 09:11:24 -08:00
Rodrigo Zhou
dbc08f1839 Set the "missing" key in ES sorter (#8964)
## What changed?
Explicitly set the `"missing"` key in ES sorter. This is to address
pagination bug in OpenSearch 2.8.0+ (see
https://github.com/opensearch-project/OpenSearch/issues/8212#issuecomment-1615325095).

Run CI tests with latest version of OpenSearch 2 and OpenSearch 3.

## Why?
Full support of OpenSearch as visibility store.

## How did you test it?
- [ ] built
- [ ] run locally and tested manually
- [x] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

## Potential risks
2026-01-12 11:32:08 -08:00
Rodrigo Zhou
00e21a5569 Enable functional tests with OpenSearch 2 (#8121)
## What changed?
Enable functional tests with OpenSearch 2 in CICD

## Why?
Run compatibility with OpenSearch 2

## How did you test it?
- [ ] built
- [ ] run locally and tested manually
- [ ] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

## Potential risks
2025-08-01 16:06:32 -05:00
Stephan Behnke
9779a7235e Export OTEL by test suite (#7941)
## What changed?

Redo of https://github.com/temporalio/temporal/pull/7871.

(1) Instead of collecting OTEL trace across all suites, it tracks it per
suite and only exports traces on failure.
(2) It annotates the test's RPCs with the test name.

## Why?

(1) More efficient.
(2) Allows filtering traces by test name.

## How did you test it?
- [ ] built
- [ ] run locally and tested manually
- [x] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

Example run with artifacts:
https://github.com/temporalio/temporal/actions/runs/15786189984?pr=7941

<img width="1100" alt="Screenshot 2025-06-20 at 12 37 20 PM"
src="https://github.com/user-attachments/assets/d46668e3-4766-4689-8ebf-b9df4ef9e569"
/>
2025-06-23 15:22:34 -07:00
Stephan Behnke
80a957acec Collect OTEL traces from CI tests (#7871)
## What changed?

Collecting OTEL traces from functional tests. And packaging them up as
an artifact.

## Why

Help debug flaky tests.

## Testing

You can see the trace artifacts on [this
run](https://github.com/temporalio/temporal/actions/runs/15719131802?pr=7871).
2025-06-18 09:10:52 -07:00
David Reiss
11bcaa695d Reduce cassandra heap size in CI (#6673)
## What changed?
Run cassandra with smaller heap (2GB) in CI. Default (on standard GHA
workers) comes out to 4GB, so this is 1/2 of what it was before.

## Why?
Try to reduce CI flakiness.
2024-10-17 16:51:48 -07:00
YeZhu
d4d43259b6 Remove version field from docker compose yaml file (#6610)
## What changed?
Remove the version field from all the docker compose yaml files

## Why?
I followed the dev
[doc](https://github.com/temporalio/temporal/blob/main/develop/docker-compose/README.md)
to setup the local env, and it showed the warning message like
`WARN[0003] /xxxx/temporal/develop/docker-compose/docker-compose.yml:
the attribute `version` is obsolete, it will be ignored, please remove
it to avoid potential confusion`
Some discussions are
[here](https://forums.docker.com/t/docker-compose-yml-version-is-obsolete/141313)
and the `version` field was confirmed to be deprecated. So I want to
raise this PR to remove this deprecated field.

![image](https://github.com/user-attachments/assets/a880a612-7165-45c0-a6ff-97a47c7f36d7)


## How did you test it?
N/A

## Potential risks
N/A

## Documentation
N/A

## Is hotfix candidate?
No

Co-authored-by: Roey Berman <roey@temporal.io>
2024-10-09 10:38:26 -07:00
Rodrigo Zhou
9a88296b53 Fix ES docker container for GHA tests (#6284) 2024-07-16 19:12:44 -05:00
Rodrigo Zhou
bcdb99ab32 Github workflow to run tests (#5248)
## What changed?
<!-- Describe what has changed in this PR -->
Github workflow to run tests.
I couldn't add tests on `windows-latest` nor `macos-latest` at this moment.
In Windows, there are issues with filepaths in the archiver (eg: `file:///home/` vs `file:///c:\\`, note that in Windows, it needs a forward slash before the actual path `c:\\`, but it messes up with the actual path)
In MacOS, it doesn't have Docker installed by default.
Also, in both Windows and MacOS, some TLS related unit tests are failing.

## Why?
<!-- Tell your future self why have you made these changes -->
Replace buildkite.

## How did you test it?
<!-- How have you verified this change? Tested locally? Added a unit test? Checked in staging env? -->
Ran in my fork: https://github.com/rodrigozhou/temporal/actions/runs/7401242980

## Potential risks
<!-- Assuming the worst case, what can be broken when deploying this change to production? -->
No.

## Is hotfix candidate?
<!-- Is this PR a hotfix candidate or does it require a notification to be sent to the broader community? (Yes/No) -->
No.
2024-01-08 14:06:58 -06:00