Skip to content

Commit 908f096

Browse files
committed
Merge branch 'dev' into TEST-merge-dev-into-1.6
# Conflicts: # src/contrib/persistence/Akka.Persistence.Query.Sql/AllEventsPublisher.cs # src/contrib/persistence/Akka.Persistence.Query.Sql/AllPersistenceIdsPublisher.cs # src/contrib/persistence/Akka.Persistence.Query.Sql/DeliveryBuffer.cs # src/contrib/persistence/Akka.Persistence.Query.Sql/EventsByPersistenceIdPublisher.cs # src/contrib/persistence/Akka.Persistence.Query.Sql/EventsByTagPublisher.cs # src/contrib/persistence/Akka.Persistence.Query.Sql/Properties/AssemblyInfo.cs # src/contrib/persistence/Akka.Persistence.Query.Sql/QueryThrottler.cs # src/contrib/persistence/Akka.Persistence.Query.Sql/SqlReadJournal.cs # src/contrib/persistence/Akka.Persistence.Query.Sql/SqlReadJournalProvider.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Extensions/DbConnectionExtensions.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Extensions/IsolationLevelExtensions.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Journal/BatchingSqlJournal.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Journal/ITimestampProvider.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Journal/Messages.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Journal/MultiValueDictionaryExtensions.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Journal/QueryApi.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Journal/QueryExecutor.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Journal/SqlJournal.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Properties/AssemblyInfo.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Settings.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Snapshot/QueryExecutor.cs # src/contrib/persistence/Akka.Persistence.Sql.Common/Snapshot/SqlSnapshotStore.cs # src/contrib/persistence/Akka.Persistence.Sql.TestKit/DefaultConfigSpec.cs # src/contrib/persistence/Akka.Persistence.Sql.TestKit/Properties/AssemblyInfo.cs # src/contrib/persistence/Akka.Persistence.Sql.TestKit/SqlJournalConnectionFailureSpec.cs # src/contrib/persistence/Akka.Persistence.Sql.TestKit/SqlSnapshotConnectionFailureSpec.cs # src/contrib/persistence/Akka.Persistence.Sql.TestKit/TestActor.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/AssemblyVersioning/BackwardsCompatSqliteJournalSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/AssemblyVersioning/BackwardsCompatSqliteSnapshotStoreSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Batching/BatchingSqliteAllEventsSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Batching/BatchingSqliteCurrentAllEventsSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Batching/BatchingSqliteCurrentEventsByPersistenceIdSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Batching/BatchingSqliteCurrentEventsByTagSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Batching/BatchingSqliteCurrentPersistenceIdsSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Batching/BatchingSqliteEventsByPersistenceIdSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Batching/BatchingSqliteEventsByTagSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Batching/BatchingSqliteJournalConnectionFailureSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Batching/BatchingSqliteJournalSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Batching/BatchingSqlitePersistenceIdSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Bugfix4360Spec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/CustomObjectSerializerSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Legacy/PersistedLegacyActor.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Legacy/SqliteLegacyJournalSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Performance/SqliteJournalPerfSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Properties/AssemblyInfo.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Query/SqliteAllEventsSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Query/SqliteCurrentAllEventsSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Query/SqliteCurrentEventsByPersistenceIdSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Query/SqliteCurrentEventsByTagSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Query/SqliteCurrentPersistenceIdsSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Query/SqliteEventsByPersistenceIdSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Query/SqliteEventsByTagSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Query/SqlitePersistenceIdsSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Serialization/SqliteJournalSerializationSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/Serialization/SqliteSnapshotStoreSerializationSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/SqliteConfigSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/SqliteJournalConnectionFailureSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/SqliteJournalSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/SqliteSnapshotStoreConnectionFailureSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/SqliteSnapshotStoreSaveSnapshotSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite.Tests/SqliteSnapshotStoreSpec.cs # src/contrib/persistence/Akka.Persistence.Sqlite/ConnectionContext.cs # src/contrib/persistence/Akka.Persistence.Sqlite/Extension.cs # src/contrib/persistence/Akka.Persistence.Sqlite/Journal/BatchingSqliteJournal.cs # src/contrib/persistence/Akka.Persistence.Sqlite/Journal/SqliteJournal.cs # src/contrib/persistence/Akka.Persistence.Sqlite/Journal/SqliteQueryExecutor.cs # src/contrib/persistence/Akka.Persistence.Sqlite/Properties/AssemblyInfo.cs # src/contrib/persistence/Akka.Persistence.Sqlite/Snapshot/SqliteSnapshotStore.cs # src/contrib/testkits/Akka.TestKit.Xunit/Properties/AssemblyInfo.cs # src/core/Akka.Tests/MatchHandler/CachedMatchCompilerTests.cs # src/core/Akka.Tests/MatchHandler/MatchBuilderSignatureTests.cs # src/core/Akka.Tests/MatchHandler/MatchExpressionBuilder_BuildLambdaExpression_Tests.cs # src/core/Akka.Tests/MatchHandler/MatchExpressionBuilder_CreateArgumentValuesArray_Tests.cs # src/core/Akka.Tests/MatchHandler/MatchHandlerBuilderTests.cs # src/core/Akka.Tests/MatchHandler/PartialActionBuilderTests.cs # src/core/Akka/Util/MatchHandler/Argument.cs # src/core/Akka/Util/MatchHandler/CachedMatchCompiler.cs # src/core/Akka/Util/MatchHandler/CompiledMatchHandlerWithArguments.cs # src/core/Akka/Util/MatchHandler/HandlerKind.cs # src/core/Akka/Util/MatchHandler/ILambdaExpressionCompiler.cs # src/core/Akka/Util/MatchHandler/IMatchCompiler.cs # src/core/Akka/Util/MatchHandler/IMatchExpressionBuilder.cs # src/core/Akka/Util/MatchHandler/IPartialActionBuilder.cs # src/core/Akka/Util/MatchHandler/LambdaExpressionCompiler.cs # src/core/Akka/Util/MatchHandler/MatchBuilder.cs # src/core/Akka/Util/MatchHandler/MatchBuilderSignature.cs # src/core/Akka/Util/MatchHandler/MatchExpressionBuilder.cs # src/core/Akka/Util/MatchHandler/MatchExpressionBuilderResult.cs # src/core/Akka/Util/MatchHandler/PartialAction.cs # src/core/Akka/Util/MatchHandler/PartialActionBuilder.cs # src/core/Akka/Util/MatchHandler/PartialHandlerArgumentsCapture.cs # src/core/Akka/Util/MatchHandler/PredicateAndHandler.cs # src/core/Akka/Util/MatchHandler/TypeHandler.cs
2 parents cd077a1 + 39bf725 commit 908f096

File tree

525 files changed

+12124
-18618
lines changed

Some content is hidden

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

525 files changed

+12124
-18618
lines changed

.config/dotnet-tools.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"version": 1,
3+
"isRoot": true,
4+
"tools": {
5+
"docfx": {
6+
"version": "2.78.3",
7+
"commands": [
8+
"docfx"
9+
],
10+
"rollForward": true
11+
},
12+
"incrementalist.cmd": {
13+
"version": "1.1.0-beta1",
14+
"commands": [
15+
"incrementalist"
16+
],
17+
"rollForward": true
18+
}
19+
}
20+
}
File renamed without changes.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,5 @@ launchSettings.json
232232
*.ndproj
233233
/[Nn][Dd]epend[Oo]ut
234234
.ionide/symbolCache.db
235+
*.mdc
236+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"outputFile": "bin/output/incrementalist.txt",
3+
"gitBranch": "dev",
4+
"verbose": false,
5+
"timeoutMinutes": 10,
6+
"continueOnError": true,
7+
"runInParallel": false,
8+
"failOnNoProjects": false,
9+
"skip": [],
10+
"target": []
11+
}

.incrementalist/mutliNodeOnly.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"outputFile": "bin/output/incrementalist.txt",
3+
"gitBranch": "dev",
4+
"verbose": false,
5+
"timeoutMinutes": 30,
6+
"continueOnError": true,
7+
"runInParallel": false,
8+
"failOnNoProjects": false,
9+
"skip": [],
10+
"target": [
11+
"**/*.Tests.MultiNode.csproj"
12+
]
13+
}

.incrementalist/testsOnly.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"outputFile": "bin/output/incrementalist.txt",
3+
"gitBranch": "dev",
4+
"verbose": false,
5+
"timeoutMinutes": 20,
6+
"continueOnError": true,
7+
"runInParallel": false,
8+
"failOnNoProjects": false,
9+
"skip": [
10+
"**/.Tests.MultiNode.csproj",
11+
"src/examples/**"
12+
],
13+
"target": [
14+
"**/*.Tests.csproj",
15+
"**/**/Akka.Streams.Tests.TCK.csproj",
16+
"**/.Tests.fsproj"
17+
]
18+
}

AGENT.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Akka.NET Agent Guidelines
2+
3+
## Build/Test Commands
4+
- Build solution: `dotnet build`
5+
- Build with warnings as errors: `dotnet build -warnaserror`
6+
- Run all tests: `dotnet test -c Release`
7+
- Run specific test: `dotnet test -c Release --filter DisplayName="TestName"` or `dotnet test path/to/project.csproj`
8+
- Format check: `dotnet format --verify-no-changes`
9+
10+
## Git Repository Management
11+
- Setup remotes:
12+
- `git remote add upstream https://github.com/akkadotnet/akka.net.git` (main repository)
13+
- `git remote add origin https://github.com/yourusername/akka.net.git` (your fork)
14+
- Sync with upstream:
15+
- `git fetch upstream` (get latest changes from main repo)
16+
- `git checkout dev` (switch to dev branch)
17+
- `git merge upstream/dev` (merge changes from upstream)
18+
- `git push origin dev` (update your fork)
19+
- Create feature branch:
20+
- `git checkout -b feature/your-feature-name` (create and switch to new branch)
21+
- `git push -u origin feature/your-feature-name` (push branch to your fork)
22+
23+
## Code Style Guidelines
24+
- Use Allman style brackets for C# code (opening brace on new line)
25+
- 4 spaces for indentation
26+
- Prefer "var" everywhere when type is apparent
27+
- Private fields start with `_` (underscore), PascalCase for public/protected members
28+
- No "this." qualifier when unnecessary
29+
- Use exceptions for error handling (IllegalStateException for invalid states)
30+
- Sort using statements with System.* appearing first
31+
- XML comments for public APIs
32+
- Name tests with descriptive `DisplayName=` attributes
33+
- Default to `sealed` classes and records for data objects
34+
- Enable nullability in new/modified files with `#nullable enable`
35+
- Never use `async void`, `.Result`, or `.Wait()` - these cause deadlocks
36+
- Always pass `CancellationToken` in async methods
37+
38+
## API Approvals
39+
- Run API approval tests when making public API changes: `dotnet test -c Release src/core/Akka.API.Tests`
40+
- Approval files are located at `src/core/Akka.API.Tests/CoreAPISpec.ApproveCore.approved.txt`
41+
- Install a diff viewer like WinMerge or TortoiseMerge to approve API changes
42+
- Follow extend-only design principles - don't modify existing public APIs, only extend them
43+
- Mark deprecated APIs with `[Obsolete("Obsolete since v{current-akka-version}")]`
44+
45+
## Conventions
46+
- Stay close to JVM Akka where applicable but be .NET idiomatic
47+
- Use Task<T> instead of Future, TimeSpan instead of Duration
48+
- Include unit tests with changes
49+
- Preserve public API and wire compatibility
50+
- Keep pull requests small and focused (<300 lines when possible)
51+
- Fix warnings instead of suppressing them
52+
- Treat TBD comments as action items to be resolved
53+
- Benchmark performance-critical code changes with BenchmarkDotNet
54+
- Avoid adding new dependencies without license/security checks
55+
56+
## Akka.NET TestKit Guidelines
57+
- Actor tests should derive from `AkkaSpec` or `TestKit` to access actor testing facilities
58+
- Pass `ITestOutputHelper output` to the constructor and base constructor: `public MySpec(ITestOutputHelper output) : base(config, output)`
59+
- Use the `ITestOutputHelper` output for debugging: it captures all test output including actor system logs
60+
- Configure proper logging in tests: `akka.loglevel = DEBUG` or `akka.loglevel = INFO`
61+
- Use `EventFilter` to assert on log messages (e.g., `EventFilter.Error().ExpectOne(() => { /* test code */ });`)
62+
- For testing deadletters, use `EventFilter.DeadLetter().Expect(1, () => { /* code that should produce dead letter */ });`
63+
- Test message assertions using `ExpectMsg<T>()`, `ExpectNoMsg()`, or `FishForMessage<T>()`
64+
- Set explicit timeouts for message expectations to avoid long-running tests
65+
- Use `TestProbe` to create lightweight test actors to verify interactions
66+
- Tests should clean up after themselves (stop created actors, reset state)
67+
- To test specialized message types, verify the type wrapper in logs: `wrapped in [$TypeName]`
68+
69+
## Repository Landmarks
70+
- `src/` - All runtime / library code
71+
- `src/benchmark/` - Micro-benchmarks (BenchmarkDotNet)
72+
- `src/…Tests/` - xUnit test projects
73+
- `docs/community/contributing/` - Contributor policies & style guides
74+
- `docs/` - Public facing documentation

0 commit comments

Comments
 (0)