Skip to content

Commit

Permalink
Merge pull request #3169 from akkadotnet/dev
Browse files Browse the repository at this point in the history
v1.3.2 stable release
  • Loading branch information
Aaronontheweb authored Oct 21, 2017
2 parents cc73cdc + 3feaa9c commit 74ab3ce
Show file tree
Hide file tree
Showing 207 changed files with 4,354 additions and 1,776 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,15 @@ PM> Install-Package Akka.FSharp
> *All contributions are welcome! Please consider the [issues categorized in the `Help!` column](http://waffle.io/akkadotnet/akka.net) first, as they are areas we could really use your help :)*
#### Contribution Guidelines
If you are interested in helping porting Akka to .NET please take a look at [Contributing to Akka.NET](http://getakka.net/docs/Contributing%20to%20Akka).
If you are interested in helping porting Akka to .NET please take a look at [Contributing to Akka.NET](http://getakka.net/community/contributor-guidelines.html).

Our [docs](http://getakka.net/docs/) are always a work in progress—to contribute to docs, please see the [docs contribution guidelines here](http://getakka.net/docs/Documentation%20guidelines).
Our [docs](http://getakka.net/articles/intro/what-is-akka.html) are always a work in progress—to contribute to docs, please see the [docs contribution guidelines here](http://getakka.net/community/documentation-guidelines.html).


#### Builds
Please see [Building Akka.NET](http://getakka.net/docs/Building%20and%20Distributing%20Akka).
Please see [Building Akka.NET](http://getakka.net/community/building-akka-net.html).

To access unstable nightly builds, please [see the instructions here](http://getakka.net/docs/akka-developers/nightly-builds).
To access unstable nightly builds, please [see the instructions here](http://getakka.net/community/getting-access-to-nightly-builds.html).

### Support
<a href="http://www.jetbrains.com/resharper"><img src="http://i61.tinypic.com/15qvwj7.jpg" alt="ReSharper" title="ReSharper"></a>
Expand Down
39 changes: 39 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,42 @@
#### 1.3.2 October 20 2017 ####
**Maintenance Release for Akka.NET 1.3**

**Updates and bugfixes**:
- Bugfix: Akka incorrectly schedules continuations after .Ask, causing deadlocks and/or delays
- Bugfix: ByteString.ToString is sometimes broken for Unicode encoding
- Bugfix: ClusterShardingMessageSerializer Exception after upgrade from 1.2.0 to 1.3.1
- Bugfix: Fix an inconstant ToString on ConsistentRoutee when the node is remote vs. local
- Various documentation fixes
- Akka.Streams: Implement MergePrioritized
- Akka.Streams: Implement Restart Flow/Source/Sink
- Akka.TestKit.Xunit: updated `xunit` dependency to 2.3.0 stable.
- Akka.Cluster.TestKit: removed dependency on Akka.Tests.Shared.Internals

| COMMITS | LOC+ | LOC- | AUTHOR |
| --- | --- | --- | --- |
| 9 | 137 | 59 | Aaron Stannard |
| 8 | 2713 | 997 | Alex Valuyskiy |
| 3 | 486 | 95 | Bartosz Sypytkowski |
| 3 | 12 | 12 | Sebastien Bacquet |
| 2 | 33 | 7 | ravengerUA |
| 2 | 184 | 102 | Arjen Smits |
| 1 | 71 | 7 | Adam Friedman |
| 1 | 7 | 4 | Sam Neirinck |
| 1 | 604 | 481 | zbynek001 |
| 1 | 6 | 6 | Kenneth Ito |
| 1 | 42 | 3 | Lukas Rieger |
| 1 | 40 | 2 | Joshua Benjamin |
| 1 | 4 | 5 | derrickcrowne |
| 1 | 3 | 2 | Mikhail Moussikhine |
| 1 | 20 | 0 | Arturo Sevilla |
| 1 | 2 | 0 | Paweł Bańka |
| 1 | 17 | 11 | planerist |
| 1 | 1 | 4 | lesscode |



You can [view the full v1.3.2 change set here](https://github.com/akkadotnet/akka.net/milestone/20).

#### 1.3.1 September 5 2017 ####
**Maintenance Release for Akka.NET 1.3**

Expand Down
16 changes: 8 additions & 8 deletions build.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,12 @@ Target "RunTests" (fun _ ->
let projects =
match getBuildParamOrDefault "incremental" "" with
| "true" -> log "The following test projects would be run under Incremental Test config..."
getIncrementalUnitTests() |> Seq.map (fun x -> printfn "\t%s" x; x)
getIncrementalUnitTests Net |> Seq.map (fun x -> printfn "\t%s" x; x)
| "experimental" -> log "The following test projects would be run under Incremental Test config..."
getIncrementalUnitTests() |> Seq.iter log
getUnitTestProjects()
(getIncrementalUnitTests Net) |> Seq.iter log
getUnitTestProjects Net
| _ -> log "All test projects will be run..."
getUnitTestProjects()
getUnitTestProjects Net

let runSingleProject project =
let result = ExecProcess(fun info ->
Expand All @@ -140,12 +140,12 @@ Target "RunTestsNetCore" (fun _ ->
let projects =
match getBuildParamOrDefault "incremental" "" with
| "true" -> log "The following test projects would be run under Incremental Test config..."
getIncrementalUnitTests() |> Seq.map (fun x -> printfn "\t%s" x; x)
getIncrementalUnitTests NetCore |> Seq.map (fun x -> printfn "\t%s" x; x)
| "experimental" -> log "The following test projects would be run under Incremental Test config..."
getIncrementalUnitTests() |> Seq.iter log
getUnitTestProjects()
getIncrementalUnitTests NetCore |> Seq.iter log
getUnitTestProjects NetCore
| _ -> log "All test projects will be run..."
getUnitTestProjects()
getUnitTestProjects NetCore

let runSingleProject project =
let result = ExecProcess(fun info ->
Expand Down
10 changes: 5 additions & 5 deletions build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,14 @@ Param(
[string[]]$ScriptArgs
)

$FakeVersion = "4.61.2"
$FakeVersion = "4.63.0"
$NBenchVersion = "1.0.1"
$DotNetChannel = "preview";
$DotNetVersion = "1.0.4";
$DotNetInstallerUri = "https://raw.githubusercontent.com/dotnet/cli/rel/1.0.0/scripts/obtain/dotnet-install.ps1";
$NugetVersion = "4.1.0";
$DotNetVersion = "2.0.0";
$DotNetInstallerUri = "https://raw.githubusercontent.com/dotnet/cli/v$DotNetVersion/scripts/obtain/dotnet-install.ps1";
$NugetVersion = "4.3.0";
$NugetUrl = "https://dist.nuget.org/win-x86-commandline/v$NugetVersion/nuget.exe"
$ProtobufVersion = "3.2.0"
$ProtobufVersion = "3.4.0"
$DocfxVersion = "2.21.1"

# Make sure tools folder exists
Expand Down
10 changes: 5 additions & 5 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
TOOLS_DIR=$SCRIPT_DIR/tools
NUGET_EXE=$TOOLS_DIR/nuget.exe
NUGET_URL=https://dist.nuget.org/win-x86-commandline/v4.0.0/nuget.exe
FAKE_VERSION=4.61.2
NUGET_URL=https://dist.nuget.org/win-x86-commandline/v4.3.0/nuget.exe
FAKE_VERSION=4.63.0
FAKE_EXE=$TOOLS_DIR/FAKE/tools/FAKE.exe
DOTNET_EXE=$SCRIPT_DIR/.dotnet/dotnet
DOTNET_VERSION=1.0.4
DOTNET_INSTALLER_URL=https://raw.githubusercontent.com/dotnet/cli/rel/1.0.0/scripts/obtain/dotnet-install.sh
PROTOBUF_VERSION=3.3.0
DOTNET_VERSION=2.0.0
DOTNET_INSTALLER_URL=https://raw.githubusercontent.com/dotnet/cli/v$DOTNET_VERSION/scripts/obtain/dotnet-install.sh
PROTOBUF_VERSION=3.4.0

# Define default arguments.
TARGET="Default"
Expand Down
46 changes: 32 additions & 14 deletions buildIncremental.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@ module IncrementalTests =
| Linux
| All

type Runtime =
| NetCore
| Net

let SkippedTest name runtime =
match (name, runtime) with
| (EndsWith "Sqlite.Tests.csproj", NetCore) -> false
| _ -> true


let (|IsRunnable|_|) name platform (csproj:string) =
let isSupported =
match platform with
Expand All @@ -30,19 +40,21 @@ module IncrementalTests =
| IsRunnable "Akka.API.Tests.csproj" Linux proj -> false
| _ -> true

let getUnitTestProjects() =
let getUnitTestProjects runtime =
let allTestProjects = !! "./**/core/**/*.Tests.csproj"
++ "./**/contrib/**/*.Tests.csproj"
-- "./**/serializers/**/*Wire*.csproj"
allTestProjects
|> Seq.filter IsRunnable
|> Seq.filter (fun p -> SkippedTest p runtime) // filter out specs that should not be run based on .NET Core / .NET differences

let isBuildScript (file:string) =
match file with
| EndsWith "fsx" -> true
| EndsWith "ps1" -> true
| EndsWith "cmd" -> true
| EndsWith "sh" -> true
| EndsWith "props" -> true // use common.props to trigger full build
| _ -> false

let getHeadHashFor repositoryDir branch =
Expand Down Expand Up @@ -131,16 +143,18 @@ module IncrementalTests =
// MultiNodeTestRunner incremental test selection
//--------------------------------------------------------------------------------

let getMntrProjects() =
let getMntrProjects runtime =
!! "./src/**/*Tests.MultiNode.csproj"
|> Seq.map (fun x -> x.ToString())
|> Seq.filter (fun p -> SkippedTest p runtime) // filter out specs that should not be run based on .NET Core / .NET differences

let getAllMntrTestAssemblies() = // if we're not running incremental tests
getMntrProjects()
getMntrProjects Net
|> Seq.map (fun x -> getAssemblyForProject x)
|> Seq.filter (fun p -> SkippedTest p Net) // filter out specs that should not be run based on .NET Core / .NET differences

let getAllMntrTestNetCoreAssemblies() = // if we're not running incremental tests
getMntrProjects()
getMntrProjects NetCore
|> Seq.map (fun x -> getNetCoreAssemblyForProject x)

//--------------------------------------------------------------------------------
Expand Down Expand Up @@ -215,18 +229,21 @@ module IncrementalTests =
//logfn "%s references %s but is not a test project..." proj.parentProject.projectName project
yield! findTestProjectsThatHaveDependencyOn proj.parentProject.projectName testMode }

let getIncrementalTestProjects2 testMode =
let getIncrementalTestProjects2 testMode runtime =
logfn "Searching for incremental tests to run in %s test mode..." (testMode.ToString())
let updatedFiles = getUpdatedFiles()
log "The following files have been updated since forking from dev branch..."
updatedFiles |> Seq.iter (fun x -> logfn "\t%s" x)
log "The following test projects will be run..."
if (updatedFiles |> Seq.exists (fun p -> isBuildScript p)) then
log "Full test suite"
match testMode with
| Unit -> getUnitTestProjects()
| MNTR -> getMntrProjects()
| Perf -> getPerfTestProjects()
let specs =
match testMode with
| Unit -> getUnitTestProjects runtime
| MNTR -> getMntrProjects runtime
| Perf -> getPerfTestProjects()
specs
|> Seq.filter (fun p -> SkippedTest p runtime) // filter out specs that should not be run based on .NET Core / .NET differences
else
updatedFiles
|> generateContainingProjFileCollection
Expand All @@ -236,18 +253,19 @@ module IncrementalTests =
|> Seq.map (fun p -> p.parentProject.projectPath)
|> Seq.distinct
|> Seq.filter IsRunnable
|> Seq.filter (fun p -> SkippedTest p runtime) // filter out specs that should not be run based on .NET Core / .NET differences

let getIncrementalUnitTests() =
getIncrementalTestProjects2 Unit
let getIncrementalUnitTests runtime =
getIncrementalTestProjects2 Unit runtime

let getIncrementalMNTRTests() =
getIncrementalTestProjects2 MNTR
getIncrementalTestProjects2 MNTR Net
|> Seq.map (fun p -> getAssemblyForProject p)

let getIncrementalNetCoreMNTRTests() =
getIncrementalTestProjects2 MNTR
getIncrementalTestProjects2 MNTR NetCore
|> Seq.map (fun p -> getNetCoreAssemblyForProject p)

let getIncrementalPerfTests() =
getIncrementalTestProjects2 Perf
getIncrementalTestProjects2 Perf Net
|> Seq.map (fun p -> getAssemblyForProject p)
7 changes: 2 additions & 5 deletions docs/articles/clustering/distributed-publish-subscribe.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,6 @@ public class Publisher : ReceiveActor
// activate the extension
var mediator = DistributedPubSub.Get(Context.System).Mediator;

// subscribe to the topic named "content"
mediator.Tell(new Subscribe("content", Self));

Receive<string>(str =>
{
var upperCase = str.ToUpper();
Expand Down Expand Up @@ -242,5 +239,5 @@ akka.cluster.pub-sub {
It is recommended to load the extension when the actor system is started by defining it in akka.extensions configuration property. Otherwise it will be activated when first used and then it takes a while for it to be populated.

```hocon
akka.extensions = ["akka.cluster.pubsub.DistributedPubSub"]
```
akka.extensions = ["Akka.Cluster.Tools.PublishSubscribe.DistributedPubSubExtensionProvider,Akka.Cluster.Tools"]
```
4 changes: 2 additions & 2 deletions docs/articles/intro/what-are-actors.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ involved (where message losses are to be expected).**
(a long queue), delays caused by garbage collection, etc. In face of these, concurrent systems should handle response
deadlines in the form of timeouts, just like networked/distributed systems.**

## How the actor model meets the needs of concurrent, distributed systems
### How the actor model meets the needs of concurrent, distributed systems

As described in the sections above, common programming practices cannot properly address the needs of modern concurrent
and distributed systems.
Expand Down Expand Up @@ -186,7 +186,7 @@ In this way, actors actually achieve the execution we imagined for objects:
![actors interact with each other by sending messages](/images/actor_graph.png)

An important difference of passing messages instead of calling methods is that messages have no return value.
By sending a message, an actor delegates work to another actor. As we saw in @ref:[The illusion of a call stack](actors-intro.md#the-illusion-of-a-call-stack),
By sending a message, an actor delegates work to another actor. As we saw in @ref:[The illusion of a call stack](what-are-actors.md#the-illusion-of-a-call-stack),
if it expected a return value, the sending actor would either need to block or to execute the other actor's work on the same thread.
Instead, the receiving actor delivers the results in a reply message.

Expand Down
Loading

0 comments on commit 74ab3ce

Please sign in to comment.