Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V1.4 dev rebase #3612

Closed
wants to merge 76 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
7a5a7c3
upgraded to XUnit 2.3.1 and VsTest SDK 15.7.2
Aaronontheweb Jun 12, 2018
87efae3
forced API tests to copy their output
Aaronontheweb Jun 14, 2018
4685bdc
Merge pull request #3504 from Aaronontheweb/upgrade-vstest-sdk
Horusiath Jun 14, 2018
6f32f6a
RestartShard handled on Shard (#3509)
zbynek001 Jun 14, 2018
3dedcfd
fixed NRE issue with ClusterClientSettings.Copy mentioned in #3417
Aaronontheweb Jun 14, 2018
8e739b3
bumped ClusterClient message drop log messages from DEBUG to WARNING …
Aaronontheweb Jun 14, 2018
adb25b9
Merge branch 'dev' into fix-clusterclient-NRE
Aaronontheweb Jun 15, 2018
762c2b8
Merge pull request #3512 from Aaronontheweb/fix-clusterclient-NRE
Horusiath Jun 17, 2018
98a740f
cluster coordinated leave fix for empty cluster (#3516)
zbynek001 Jun 19, 2018
292ebcb
sharding rebalance small fix
zbynek001 Jun 20, 2018
825e9bb
Merge pull request #3518 from zbynek001/sharding-rebalance-fix
Horusiath Jun 21, 2018
dad1bfb
updated ActorCell children container updates (#3514)
Horusiath Jun 21, 2018
8463034
RemoteWatcher race-condition fix (#3519)
zbynek001 Jun 22, 2018
68dc1b5
help fix https://github.com/akkadotnet/Akka.Logger.Serilog/issues/51 …
Aaronontheweb Jun 22, 2018
fdc1765
Allow persisting events when recovery has completed (#3366)
ismaelhamed Jun 25, 2018
41c116d
Sharding update (#3524)
zbynek001 Jun 25, 2018
1b6ff98
close #3529 - added DDataClusterShardingConfigSpec
Aaronontheweb Jun 27, 2018
6a1e7e9
removed duplicate spec
Aaronontheweb Jun 27, 2018
98a1a12
File publisher allows opening the same file for reading multiple time…
Sam13 Jun 29, 2018
b028ef3
code cleanup and perf fixes to InMemorySnapshotStore
Aaronontheweb Jun 25, 2018
f7382fd
more code cleanup to MemorySnapshotStore
Aaronontheweb Jun 25, 2018
2ff1e07
added spec to verify existence of #3526 and subsequent fix
Aaronontheweb Jun 25, 2018
1b8ec6c
removed unnecessary lock
Aaronontheweb Jun 25, 2018
c147933
Update CoreAPISpec.ApprovePersistence.approved.txt
Aaronontheweb Jun 25, 2018
4cc7372
resetting file
Aaronontheweb Jun 28, 2018
d256162
fixed contents of Akka.Persistence API approval
Aaronontheweb Jun 28, 2018
05fc7c7
Ignore CodeRush, GhostDoc, NDepend, VS Code files (#3535)
pshrosbree Jul 5, 2018
d9523d5
[docs] Remove Akka.Persistence.Query warning (#3541)
sean-gilliam Jul 10, 2018
a4e6a89
Edits to "Part 1: Top-level Architecture" #3433 (#3542)
jtaylor100 Jul 10, 2018
14cdefa
Check remembered entities before remembering entity
zbynek001 Jul 15, 2018
9d95dd7
Merge pull request #3550 from zbynek001/cluster-sharding-remember-ent…
Horusiath Jul 15, 2018
c8fa67c
Optimized recovery (#3549)
ismaelhamed Jul 17, 2018
f58db6e
[docs] Fix various issues (#3540)
sean-gilliam Jul 17, 2018
d1c1efe
Fix ReceiveTimeout issue with NotInfluenceReceiveTimeout (#3555)
ismaelhamed Jul 23, 2018
f406bfd
sharding log formatting fix (#3554)
zbynek001 Jul 23, 2018
a19051a
confirm TakeOverFromMe when singleton already in oldest state (#3553)
zbynek001 Jul 25, 2018
f5596d0
Fix small typo (#3559)
fdbeirao Jul 31, 2018
fabf39b
Create a new linked CancellationToken for each database operation(#34…
jarlrasm Jul 31, 2018
dc8b77d
Coordinated downing improvements (#3551)
zbynek001 Jul 31, 2018
9d5bc4c
fixed documentation example project build (#3561)
Aaronontheweb Jul 31, 2018
fcf5314
_lastTemperatureReading should be updatable
nyolamike Aug 5, 2018
7220f2d
Sequence number should not be set if snapshot is unhandled
ismaelhamed Jul 29, 2018
a8f81cc
Port KeepAliveConcat and UnfoldFlow (#3560)
alex-bogomaz Aug 8, 2018
1234561
Correct casing (#3569)
SCKelemen Aug 10, 2018
aa01127
KillSwitches: flow stage from CancellationToken (#3568)
Horusiath Aug 18, 2018
aace21d
Port PagedSource & IntervalBasedRateLimiter (#3570)
alex-bogomaz Aug 22, 2018
9fe4e12
Akka.NET v1.3.9 Release Notes (#3574)
Aaronontheweb Aug 23, 2018
bca8815
added v1.3.10 placeholder for nightly builds
Aaronontheweb Aug 23, 2018
5a346f2
Merge pull request #3578 from Aaronontheweb/v1.3.10-placeholder
Aaronontheweb Aug 23, 2018
90bba61
Deleting file, reason issue 3537 (#3581)
moerwald Sep 5, 2018
810312c
GetOrElse null handling fix (#3575)
zbynek001 Sep 5, 2018
2db71c8
Add ToString override to TestProbe. (#3579)
Sep 5, 2018
75b1333
Handle AskTimeoutException when initializing a logger. (#3586)
alexvy86 Sep 7, 2018
e67152d
resolve issue with production beta packages like Cluster.Sharding dep…
Aaronontheweb Sep 7, 2018
e3ec1f6
#3563 return type changed TMat -> TMat3
mmisztal1980 Sep 13, 2018
f23807f
#3563 Akka.Streams API signature modified
mmisztal1980 Sep 14, 2018
0553c54
Merge pull request #3595 from mmisztal1980/bug/3563
Horusiath Sep 15, 2018
8f0bb3f
#3423 SearchBar fix (#3596)
mmisztal1980 Sep 18, 2018
3c6115e
Removed Todo from DeviceGroup_actor_must_be_able_to_collect_temperatu…
moerwald Sep 18, 2018
308a9fb
Don't automatically down quarantined node (#3605)
ismaelhamed Oct 1, 2018
a4ccd84
#3128 ActorSelection wildcard matching rules (#3601)
pshrosbree Oct 2, 2018
0f096dd
refactored ChatClient into ReceiveActor
Aaronontheweb Oct 2, 2018
7ecf73b
rewrote ChatServerActor as ReceiveActor
Aaronontheweb Oct 2, 2018
a04a36f
changed HOCON to use short-hand for RemoteActorRefProvider
Aaronontheweb Oct 2, 2018
83b13f0
Merge pull request #3609 from Aaronontheweb/modernize-chat-sample
sean-gilliam Oct 2, 2018
5e1a093
bumped v1.4 branch to v1.4 versions (#3511)
Aaronontheweb Jun 14, 2018
4462fbe
Add Exception overloads to all logging methods; close #3424
Aaronontheweb Jun 22, 2018
f9d919a
fixed issues with cause not being propagated / implemented
Aaronontheweb Jun 22, 2018
bf81a11
fully tested all new methods and combinations
Aaronontheweb Jun 22, 2018
0f62e70
API approval
Aaronontheweb Jun 22, 2018
5930a04
reintroduced FunctionRefs
Horusiath Jul 5, 2018
68342f4
reintroduced stream refs
Horusiath Jul 6, 2018
53b9ab3
Flow Ask and Watch operations
Horusiath Jul 8, 2018
e6e7538
FlowAskSpec: configured test dispatcher
Horusiath Jul 10, 2018
cca549f
added logging for testing purposes of linux netcore issue
Horusiath Aug 2, 2018
7528151
Merge branch 'v1.4' into v1.4-dev-rebase
Aaronontheweb Oct 4, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Configuration for probot-stale - https://github.com/probot/stale

# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 60

# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 7

# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels: []

# Set to true to ignore issues in a project (defaults to false)
exemptProjects: false

# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: false

# Label to use when marking as stale
staleLabel: wontfix

# Comment to post when marking as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.

# Comment to post when removing the stale label.
# unmarkComment: >
# Your comment here.

# Comment to post when closing a stale Issue or Pull Request.
# closeComment: >
# Your comment here.

# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30

# Limit to only `issues` or `pulls`
# only: issues

# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':
# pulls:
# daysUntilStale: 30
# markComment: >
# This pull request has been automatically marked as stale because it has not had
# recent activity. It will be closed if no further activity occurs. Thank you
# for your contributions.

# issues:
# exemptLabels:
# - confirmed
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -206,3 +206,17 @@ build/
/src/core/Akka.API.Tests/CoreAPISpec.ApproveStreams.received.txt
launchSettings.json
.idea/

# GhostDoc is a C# XML comment helper
*.[Gg]host[Dd]oc.xml
*.[Gg]host[Dd]oc.user.dic

# CodeRush
.cr/

# Visual Studio Code
.vscode/

# NDepend
*.ndproj
/[Nn][Dd]epend[Oo]ut
97 changes: 92 additions & 5 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,93 @@
#### 1.4.0 June 14 2018 ####
Placeholder for nightlies.

#### 1.3.10 August 22 2018 ####
Placeholder for nightlies

#### 1.3.9 August 22 2018 ####
**Maintenance Release for Akka.NET 1.3**

Akka.NET v1.3.9 features some major changes to Akka.Cluster.Sharding, additional Akka.Streams stages, and some general bug fixes across the board.

**Akka.Cluster.Sharding Improvements**
The [Akka.Cluster.Sharding documentation](http://getakka.net/articles/clustering/cluster-sharding.html#quickstart) already describes some of the major changes in Akka.NET v1.3.9, but we figured it would be worth calling special attention to those changes here.

**Props Factory for Entity Actors**

> In some cases, the actor may need to know the `entityId` associated with it. This can be achieved using the `entityPropsFactory` parameter to `ClusterSharding.Start` or `ClusterSharding.StartAsync`. The entity ID will be passed to the factory as a parameter, which can then be used in the creation of the actor.

In addition to the existing APIs we've always had for defining sharded entities via `Props`, Akka.NET v1.3.9 introduces [a new method overload for `Start`](http://getakka.net/api/Akka.Cluster.Sharding.ClusterSharding.html#Akka_Cluster_Sharding_ClusterSharding_Start_System_String_System_Func_System_String_Akka_Actor_Props__Akka_Cluster_Sharding_ClusterShardingSettings_Akka_Cluster_Sharding_ExtractEntityId_Akka_Cluster_Sharding_ExtractShardId_) and [`StartAsync`](http://getakka.net/api/Akka.Cluster.Sharding.ClusterSharding.html#Akka_Cluster_Sharding_ClusterSharding_StartAsync_System_String_System_Func_System_String_Akka_Actor_Props__Akka_Cluster_Sharding_ClusterShardingSettings_Akka_Cluster_Sharding_ExtractEntityId_Akka_Cluster_Sharding_ExtractShardId_) which allows users to pass in the `entityId` of each entity actor as a constructor argument to those entities when they start.

For example:

```
var anotherCounterShard = ClusterSharding.Get(Sys).Start(
typeName: "AnotherCounter",
entityProps: Props.Create<AnotherCounter>(),
typeName: AnotherCounter.ShardingTypeName,
entityPropsFactory: entityId => AnotherCounter.Props(entityId),
settings: ClusterShardingSettings.Create(Sys),
extractEntityId: Counter.ExtractEntityId,
extractShardId: Counter.ExtractShardId);
```

This will give you the opportunity to pass in the `entityId` for each actor as a constructor argument into the `Props` of your entity actor and possibly other use cases too.

**Improvements to Starting and Querying Existing Shard Entity Types**
Two additional major usability improvements to Cluster.Sharding come from some API additions and changes.

The first is that it's now possible to look up all of the currently registered shard types via the [`ClusterSharding.ShardTypeNames` property](http://getakka.net/api/Akka.Cluster.Sharding.ClusterSharding.html#Akka_Cluster_Sharding_ClusterSharding_ShardTypeNames). So long as a `ShardRegion` of that type has been started in the cluster, that entity type name will be added to the collection exposed by this property.

The other major usability improvement is a change to the `ClusterSharding.Start` property itself. Historically, you used to have to know whether or not the node you wanted to use sharding on was going to be hosting shards (call `ClusterSharding.Start`) or simply communicated with shards hosted on a different cluster role type (call `ClusterSharding.StartProxy`). Going forward, it's safe to call `ClusterSharding.Start` on any node and you will either receive an `IActorRef` to active `ShardRegion` or a `ShardRegion` running in "proxy only" mode; this is determined by looking at the `ClusterShardingSettings` and determining if the current node is in a role that is allowed to host shards of this type.

* [Akka.Cluster.Sharding: Sharding API Updates](https://github.com/akkadotnet/akka.net/pull/3524)
* [Akka.Cluster.Sharding: sharding rebalance fix](https://github.com/akkadotnet/akka.net/pull/3518)
* [Akka.Cluster.Sharding: log formatting fix](https://github.com/akkadotnet/akka.net/pull/3554)
* [Akka.Cluster.Sharding: `RestartShard` escapes into userspace](https://github.com/akkadotnet/akka.net/pull/3509)

**Akka.Streams Additions and Changes**
In Akka.NET v1.3.9 we've added some new built-in stream stages and API methods designed to help improve developer productivity and ease of use.

* [Akka.Streams: add CombineMaterialized method to Source](https://github.com/akkadotnet/akka.net/pull/3489)
* [Akka.Streams:
KillSwitches: flow stage from CancellationToken](https://github.com/akkadotnet/akka.net/pull/3568)
* [Akka.Streams: Port KeepAliveConcat and UnfoldFlow](https://github.com/akkadotnet/akka.net/pull/3560)
* [Akka.Streams: Port PagedSource & IntervalBasedRateLimiter](https://github.com/akkadotnet/akka.net/pull/3570)

**Other Updates, Additions, and Bugfixes**
* [Akka.Cluster: cluster coordinated leave fix for empty cluster](https://github.com/akkadotnet/akka.net/pull/3516)
* [Akka.Cluster.Tools: bumped ClusterClient message drop log messages from DEBUG to WARNING](https://github.com/akkadotnet/akka.net/pull/3513)
* [Akka.Cluster.Tools: Singleton - confirm TakeOverFromMe when singleton already in oldest state](https://github.com/akkadotnet/akka.net/pull/3553)
* [Akka.Remote: RemoteWatcher race-condition fix](https://github.com/akkadotnet/akka.net/pull/3519)
* [Akka: fix concurrency bug in CircuitBreaker](https://github.com/akkadotnet/akka.net/pull/3505)
* [Akka: Fixed ReceiveTimeout not triggered in some case when combined with NotInfluenceReceiveTimeout messages](https://github.com/akkadotnet/akka.net/pull/3555)
* [Akka.Persistence: Optimized recovery](https://github.com/akkadotnet/akka.net/pull/3549)
* [Akka.Persistence: Allow persisting events when recovery has completed](https://github.com/akkadotnet/akka.net/pull/3366)

To [see the full set of changes for Akka.NET v1.3.9, click here](https://github.com/akkadotnet/akka.net/milestone/27).

| COMMITS | LOC+ | LOC- | AUTHOR |
| --- | --- | --- | --- |
| 28 | 2448 | 5691 | Aaron Stannard |
| 11 | 1373 | 230 | zbynek001 |
| 8 | 4590 | 577 | Bartosz Sypytkowski |
| 4 | 438 | 99 | Ismael Hamed |
| 4 | 230 | 240 | Sean Gilliam |
| 2 | 1438 | 0 | Oleksandr Bogomaz |
| 1 | 86 | 79 | Nick Polideropoulos |
| 1 | 78 | 0 | v1rusw0rm |
| 1 | 4 | 4 | Joshua Garnett |
| 1 | 32 | 17 | Jarl Sveinung Flø Rasmussen |
| 1 | 27 | 1 | Sam13 |
| 1 | 250 | 220 | Maxim Cherednik |
| 1 | 184 | 124 | Josh Taylor |
| 1 | 14 | 0 | Peter Shrosbree |
| 1 | 1278 | 42 | Marc Piechura |
| 1 | 1 | 1 | Vasily Kirichenko |
| 1 | 1 | 1 | Samuel Kelemen |
| 1 | 1 | 1 | Nyola Mike |
| 1 | 1 | 1 | Fábio Beirão |

#### 1.3.8 June 04 2018 ####
**Maintenance Release for Akka.NET 1.3**

Expand Down Expand Up @@ -34,7 +121,7 @@ Relevant documentation for Akka.Streams pre-materialization, for those who are i
| --- | --- | --- | --- |
| 17 | 498 | 171 | Aaron Stannard |
| 4 | 1054 | 23 | Bartosz Sypytkowski |
| 2 | 2 | 2 | Fábio Beirão |
| 2 | 2 | 2 | Fábio Beirão |
| 2 | 16 | 2 | Aaron Palmer |
| 1 | 1063 | 4 | Oleksandr Bogomaz |
| 1 | 1 | 1 | Ismael Hamed |
Expand Down Expand Up @@ -105,7 +192,7 @@ You can see [the full set of changes for Akka.NET v1.3.6 here](hhttps://github.c
| 1 | 64 | 6 | Robert |
| 1 | 23 | 29 | nathvi |
| 1 | 2 | 1 | Sebastien Bacquet |
| 1 | 1 | 2 | Ondřej Piálek |
| 1 | 1 | 2 | Ondřej Piálek |
| 1 | 1 | 1 | Steffen Skov |
| 1 | 1 | 1 | Sean Gilliam |
| 1 | 1 | 1 | Matthew Herman |
Expand Down Expand Up @@ -252,7 +339,7 @@ You can [see the full changeset for Akka.NET 1.3.3 here](https://github.com/akka
| 1 | 4 | 5 | derrickcrowne |
| 1 | 3 | 2 | Mikhail Moussikhine |
| 1 | 20 | 0 | Arturo Sevilla |
| 1 | 2 | 0 | Paweł Bańka |
| 1 | 2 | 0 | Paweł Bańka |
| 1 | 17 | 11 | planerist |
| 1 | 1 | 4 | lesscode |

Expand Down Expand Up @@ -326,7 +413,7 @@ Akka.Remote's throughput has been significantly increased.
| 4 | 1644 | 2210 | Arkatufus |
| 3 | 32 | 6 | Lukas Rieger |
| 3 | 153 | 17 | Quartus Dev |
| 2 | 8 | 11 | Paweł Bańka |
| 2 | 8 | 11 | Paweł Bańka |
| 2 | 4866 | 12678 | olegz |
| 2 | 1148 | 176 | Ismael Hamed |
| 1 | 62 | 5 | Mikhail Kantarovskiy |
Expand Down Expand Up @@ -840,7 +927,7 @@ A special thanks to all of our contributors for making this happen!
| 1 | 2 | 2 | easuter |
| 1 | 2 | 1 | Danthar |
| 1 | 182 | 0 | derwasp |
| 1 | 179 | 0 | Onat Yiğit Mercan |
| 1 | 179 | 0 | Onat YiÄŸit Mercan |

#### 1.0.5 December 3 2015 ####
**Maintenance release for Akka.NET v1.0.4**
Expand Down
13 changes: 2 additions & 11 deletions build.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -298,15 +298,6 @@ Target "NBench" <| fun _ ->
// Nuget targets
//--------------------------------------------------------------------------------

let overrideVersionSuffix (project:string) =
match project with
| p when p.Contains("Akka.Serialization.Wire") -> preReleaseVersionSuffix
| p when p.Contains("Akka.Serialization.Hyperion") -> preReleaseVersionSuffix
| p when p.Contains("Akka.Cluster.Sharding") -> preReleaseVersionSuffix
| p when p.Contains("Akka.DistributedData") -> preReleaseVersionSuffix
| p when p.Contains("Akka.DistributedData.LightningDB") -> preReleaseVersionSuffix
| _ -> versionSuffix

Target "CreateNuget" (fun _ ->
let projects = !! "src/**/*.*sproj"
-- "src/**/*.Tests*.*sproj"
Expand All @@ -323,7 +314,7 @@ Target "CreateNuget" (fun _ ->
Project = project
Configuration = configuration
AdditionalArgs = ["--include-symbols"]
VersionSuffix = overrideVersionSuffix project
VersionSuffix = versionSuffix
OutputPath = outputNuGet })

projects |> Seq.iter (runSingleProject)
Expand Down Expand Up @@ -380,7 +371,7 @@ Target "CreateMntrNuget" (fun _ ->
Project = project
Configuration = configuration
AdditionalArgs = ["--include-symbols"]
VersionSuffix = overrideVersionSuffix project
VersionSuffix = versionSuffix
OutputPath = outputNuGet } )
)

Expand Down
18 changes: 6 additions & 12 deletions docs/articles/actors/dependency-injection.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ protected override void PreStart()
}
```

> [!INFO]
> [!NOTE]
> There is currently still an extension method available for the actor Context. `Context.DI().ActorOf<>`. However this has been officially **deprecated** and will be removed in future versions.

## Notes
Expand Down Expand Up @@ -77,7 +77,7 @@ guideline.

Currently the following Akka.NET Dependency Injection plugins are available:

## AutoFac
### AutoFac

In order to use this plugin, install the Nuget package with
`Install-Package Akka.DI.AutoFac`, then follow the instructions:
Expand All @@ -94,7 +94,7 @@ var system = ActorSystem.Create("MySystem");
var propsResolver = new AutoFacDependencyResolver(container, system);
```

## CastleWindsor
### CastleWindsor

In order to use this plugin, install the Nuget package with
`Install-Package Akka.DI.CastleWindsor`, then follow the instructions:
Expand All @@ -110,7 +110,7 @@ var system = ActorSystem.Create("MySystem");
var propsResolver = new WindsorDependencyResolver(container, system);
```

## Ninject
### Ninject

In order to use this plugin, install the Nuget package with
`Install-Package Akka.DI.Ninject`, then follow the instructions:
Expand All @@ -126,14 +126,8 @@ var system = ActorSystem.Create("MySystem");
var propsResolver = new NinjectDependencyResolver(container,system);
```

## Other frameworks
### Other frameworks

Support for additional dependency injection frameworks may be added in the
future, but you can easily implement your own by implementing an
[Actor Producer Extension](DI Core).






[Actor Producer Extension](xref:di-core).
Loading