Skip to content

Commit

Permalink
V1.4 sync up (#6282)
Browse files Browse the repository at this point in the history
* cleaned up duplicate System.Collections.Immutable package reference (#6264)

also standardized all System.* packages on a common version

* converted build system to .NET 7.0 (#6263)

* converted build system to .NET 7.0

* upgrade to Incrementalist.Cmd v0.8.0

* upgraded MNTR to support .NET 7.0

* fixed build system to target .NET 7.0

* upgrade to latest version of DocFx

* add .NET 6 SDK back to build system

* fixed HyperionConfigTests

* Akka.Streams: `ReuseLatest` stage to repeatedly emit the most recent value until a newer one is pushed (#6262)

* code cleanup in Akka.Streams `Attributes`

* added `RepeatPrevious{T}` stage

* WIP - debugging `RepeatPreviousSpecs`

* fixed tests and added documentation

* fixed documentation

* API approvals

* fixed markdown linting

* removed `SwapPrevious<T>` delegate.

* renamed stage from `RepeatPrevious` to `ReuseLatest`

* remove BDN results

* added real UID to `ActorPathBenchmarks` (#6276)

While working on #6195 I realized that none of those `ActorPath`s actually have a set UID, thus we're missing that entire facet from both the parsing and serialization benchmarks.

* Enable dynamic PGO for RemotePingPong and PingPong (#6277)

* eliminate `ActorPath.ToSerializationFormat` UID allocations (#6195)

* eliminate `ActorPath.ToSerializationFormat` UID allocations

Used some more `Span<char>` magic to avoid additional allocations when string-ifying `ActorPath` components.

* adding `SpanHacks` benchmarks

* sped up `Int64SizeInCharacters`

* added `TryFormat` benchmarks

* fixed n+1 error in jump table

* cleaned up `TryFormat` inside `SpanHacks`

* fixed `SpanHacks` index calculation

* removed BDN results

* Update SpanHacks.cs

* compilation fixes and V1.5 api approval
  • Loading branch information
Aaronontheweb authored Dec 1, 2022
1 parent 16888b2 commit 020cb7d
Show file tree
Hide file tree
Showing 77 changed files with 621 additions and 104 deletions.
4 changes: 2 additions & 2 deletions build-system/azure-pipeline.mntr-template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ jobs:
vmImage: ${{ parameters.vmImage }}
steps:
- task: UseDotNet@2
displayName: 'Use .NET 6 SDK 6.0.100'
displayName: 'Use .NET 7 SDK 7.0.100'
inputs:
version: 6.0.100
version: 7.0.100
- task: UseDotNet@2
displayName: 'Use .NET Core Runtime 3.1.10'
inputs:
Expand Down
6 changes: 5 additions & 1 deletion build-system/azure-pipeline.template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@ jobs:
value: true
steps:
- task: UseDotNet@2
displayName: 'Use .NET 6 SDK 6.0.100'
displayName: 'Use .NET 7 SDK 7.0.100'
inputs:
version: 7.0.100
- task: UseDotNet@2 # to keep DocFx happy
displayName: "Use .NET 6 SDK 6.0.100"
inputs:
version: 6.0.100
- task: UseDotNet@2
Expand Down
4 changes: 2 additions & 2 deletions build-system/pr-validation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ jobs:
submodules: recursive # set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules
persistCredentials: true
- task: UseDotNet@2
displayName: "Use .NET 6 SDK 6.0.100"
displayName: "Use .NET 7 SDK 7.0.100"
inputs:
version: 6.0.100
version: 7.0.100
- task: UseDotNet@2
displayName: "Use .NET Core Runtime 3.1.10"
inputs:
Expand Down
4 changes: 2 additions & 2 deletions build.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ let outputMultiNode = outputTests @@ "multinode"
let outputFailedMultiNode = outputTests @@ "multinode" @@ "FAILED_SPECS_LOGS"
let outputBinariesNet45 = outputBinaries @@ "net45"
let outputBinariesNetStandard = outputBinaries @@ "netstandard2.0"
let outputBinariesNet = outputBinaries @@ "net6.0"
let outputBinariesNet = outputBinaries @@ "net7.0"

let buildNumber = environVarOrDefault "BUILD_NUMBER" "0"
let hasTeamCity = (not (buildNumber = "0")) // check if we have the TeamCity environment variable for build # set
Expand Down Expand Up @@ -57,7 +57,7 @@ let incrementalistReport = output @@ "incrementalist.txt"
// Configuration values for tests
let testNetFrameworkVersion = "net471"
let testNetCoreVersion = "netcoreapp3.1"
let testNetVersion = "net6.0"
let testNetVersion = "net7.0"

Target "Clean" (fun _ ->
ActivateFinalTarget "KillCreatedProcesses"
Expand Down
4 changes: 2 additions & 2 deletions build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ $FakeVersion = "4.63.0"
$NugetVersion = "5.8.0";
$NugetUrl = "https://dist.nuget.org/win-x86-commandline/v$NugetVersion/nuget.exe"
$ProtobufVersion = "3.21.5"
$DocfxVersion = "2.58.9"
$DocfxVersion = "2.59.4"

$IncrementalistVersion = "0.7.0";
$IncrementalistVersion = "0.8.0";

# Make sure tools folder exists
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
Expand Down
2 changes: 1 addition & 1 deletion build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ DOTNET_VERSION=5.0.101
DOTNET_INSTALLER_URL=https://dot.net/v1/dotnet-install.sh
DOTNET_CHANNEL=LTS
PROTOBUF_VERSION=3.21.5
INCREMENTALIST_VERSION=0.7.0
INCREMENTALIST_VERSION=0.8.0

# Define default arguments.
TARGET="Default"
Expand Down
29 changes: 29 additions & 0 deletions docs/articles/streams/buffersandworkingwithrate.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,3 +189,32 @@ var driftFlow = Flow.Create<int>()
```

Note that all of the elements coming from upstream will go through expand at least once. This means that the output of this flow is going to report a drift of zero if producer is fast enough, or a larger drift otherwise.

### Reusing Values Downstream

When working with fan-in stages such as `Zip` where one `Source<T>` might produce messages infrequently, it can be helpful to cache the previous value and re-use it in combination with a faster stream.

For instance, consider the following scenario:

* A `Source<HttpClient, NotUsed>` that emits an updated `HttpClient` with new bearer-token credentials every 30 minutes and
* A `Source<HttpRequestMessage, NotUsed>` that emits outbound `HttpRequestMessage`s as they come - at any given moment it can produce zero requests per second or thousands of requests per second.

In this scenario we're going to want to combine the `Source<HttpClient, NotUsed>` and `Source<HttpRequestMessage, NotUsed>` together so the `HttpClient` can execute all of the `HttpRequestMessage`s - however, given that `HttpClient`s are only emitted once every 30 minutes - how can we use a stage like `Zip` to make sure that every `HttpRequestMessage` gets serviced in a timely, low-latency fashion?

Enter the `ReuseLatest` stage - which will allow us to reuse the most recent `HttpClient` each time a new `HttpRequestMessage` arrives:

```csharp
public static Source<HttpClient, ICancelable> CreateSourceInternal(string clientId,
Func<Task<string>> tokenProvider, TimeSpan tokenRefreshTimeout)
{
var source = Source.Tick(TimeSpan.Zero, TimeSpan.FromSeconds(30), clientId)
.SelectAsync(1, async c =>
// refresh bearer token, create new HttpClient
CreateClient(c, (await tokenProvider().WaitAsync(tokenRefreshTimeout))))
// reuse the previous value whenever there's downstream demand
.ReuseLatest();
return source;
}
```

This type of design allows us to decouple the rate at which `HttpClient`s are produced from the rate at which `HttpRequestMessage`s are.
18 changes: 18 additions & 0 deletions docs/articles/streams/builtinstages.md
Original file line number Diff line number Diff line change
Expand Up @@ -667,6 +667,24 @@ Skip elements as long as a predicate function return true for the element

**completes** when upstream completes

### ReuseLatest

Re-use the most recently emitted element downstream.

> [!NOTE]
> `ReuseLatest` is typically used in combination with fan-in stages such as `Zip` - please see "[Reusing Values Downstream](xref:streams-buffers#reusing-values-downstream)"
**emits** as long as one element has been emitted from upstream, that element will be emitted downstream
whenever the `ReuseLatest` stage is pulled. If a new value is emitted from upstream, that value will be pushed and will replace the previous value.

**backpressures** when downstream backpressures.

**completes** when upstream completes

`ReuseLatest` Sample:

[!code-csharp[ReuseLatest](../../../src/core/Akka.Streams.Tests/Dsl/ReuseLatestSpec.cs?name=RepeatPrevious)]

### Recover

Allow sending of one last element downstream when a failure has happened upstream.
Expand Down
3 changes: 1 addition & 2 deletions docs/articles/streams/pipeliningandparallelism.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,5 +173,4 @@ compared to the parallel pipelines. This pattern re-balances after each step, wh
at the entry point of the pipeline. This only matters however if the processing time distribution has a large
deviation.

[^foot-note-1]: Bartosz's reason for this seemingly suboptimal procedure is that he prefers the temperature of the second pan
to be slightly lower than the first in order to achieve a more homogeneous result.
[^foot-note-1]: Bartosz's reason for this seemingly suboptimal procedure is that he prefers the temperature of the second pan to be slightly lower than the first in order to achieve a more homogeneous result.
12 changes: 10 additions & 2 deletions src/benchmark/Akka.Benchmarks/Actor/ActorPathBenchmarks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
// </copyright>
//-----------------------------------------------------------------------

using System;
using Akka.Actor;
using Akka.Benchmarks.Configurations;
using BenchmarkDotNet.Attributes;
Expand All @@ -20,18 +21,25 @@ public class ActorPathBenchmarks
private Address _sysAdr = new Address("akka.tcp", "system", "127.0.0.1", 1337);
private Address _otherAdr = new Address("akka.tcp", "system", "127.0.0.1", 1338);

private string _actorPathStr;

[Params(1, 100000, int.MaxValue)]
public int Uid { get; set; }

[GlobalSetup]
public void Setup()
{
x = new RootActorPath(_sysAdr, "user");
y = new RootActorPath(_sysAdr, "system");
_childPath = x / "parent" / "child";
var parentPath = x / "parent";
_childPath = new ChildActorPath(parentPath, "child", Uid);
_actorPathStr = _childPath.ToSerializationFormat();
}

[Benchmark]
public ActorPath ActorPath_Parse()
{
return ActorPath.Parse("akka.tcp://system/user/parent/child");
return ActorPath.Parse(_actorPathStr);
}

[Benchmark]
Expand Down
2 changes: 1 addition & 1 deletion src/benchmark/Akka.Benchmarks/Utils/FastLazyBenchmarks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int FastLazy_get_value()
}

[Benchmark]
public int FastLazy_satefull_get_value()
public int FastLazy_stateful_get_value()
{
return fastLazyWithInit.Value;
}
Expand Down
34 changes: 34 additions & 0 deletions src/benchmark/Akka.Benchmarks/Utils/SpanHackBenchmarks.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// //-----------------------------------------------------------------------
// <copyright file="SpanHackBenchmarks.cs" company="Akka.NET Project">
// Copyright (C) 2009-2022 Lightbend Inc. <http://www.lightbend.com>
// Copyright (C) 2013-2022 .NET Foundation <https://github.com/akkadotnet/akka.net>
// </copyright>
//-----------------------------------------------------------------------

using System;
using Akka.Benchmarks.Configurations;
using Akka.Util;
using BenchmarkDotNet.Attributes;

namespace Akka.Benchmarks.Utils
{
[Config(typeof(MicroBenchmarkConfig))]
public class SpanHackBenchmarks
{
[Params(0, 1, -1, 1000, int.MaxValue, long.MaxValue)]
public long Formatted { get; set; }

[Benchmark]
public int Int64CharCountBenchmark()
{
return SpanHacks.Int64SizeInCharacters(Formatted);
}

[Benchmark]
public int TryFormatBenchmark()
{
Span<char> buffer = stackalloc char[22];
return SpanHacks.TryFormat(Formatted, 0, ref buffer);
}
}
}
5 changes: 5 additions & 0 deletions src/benchmark/PingPong/PingPong.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
<Content Include="App.config" />
</ItemGroup>

<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
<TieredPGO>true</TieredPGO>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\core\Akka\Akka.csproj" />
</ItemGroup>
Expand Down
5 changes: 1 addition & 4 deletions src/benchmark/RemotePingPong/RemotePingPong.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,9 @@
<OutputType>Exe</OutputType>
</PropertyGroup>

<PropertyGroup>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>

<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
<TieredPGO>true</TieredPGO>
</PropertyGroup>

<ItemGroup>
Expand Down
5 changes: 3 additions & 2 deletions src/common.props
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<ProtobufVersion>3.21.9</ProtobufVersion>
<BenchmarkDotNetVersion>0.13.2</BenchmarkDotNetVersion>
<NetCoreTestVersion>netcoreapp3.1</NetCoreTestVersion>
<NetTestVersion>net6.0</NetTestVersion>
<NetTestVersion>net7.0</NetTestVersion>
<NetFrameworkTestVersion>net471</NetFrameworkTestVersion>
<NetStandardLibVersion>netstandard2.0</NetStandardLibVersion>
<NetLibVersion>net6.0</NetLibVersion>
Expand All @@ -29,6 +29,7 @@
<HoconVersion>2.0.3</HoconVersion>
<ConfigurationManagerVersion>6.0.1</ConfigurationManagerVersion>
<MultiNodeAdapterVersion>1.1.1</MultiNodeAdapterVersion>
<MicrosoftLibVersion>5.0.0</MicrosoftLibVersion>
<AkkaPackageTags>akka;actors;actor model;Akka;concurrency</AkkaPackageTags>
</PropertyGroup>
<PropertyGroup>
Expand Down Expand Up @@ -73,4 +74,4 @@ Other Features and Improvements**
<Message Text="@(none)">
</Message>
</Target>
</Project>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ public void Hyperion_serializer_should_read_cross_platform_package_name_override
#elif NETCOREAPP3_1
Assert.Equal("dff", @override("def"));
Assert.Equal("efg", @override("efg"));
#elif NET6_0
#elif NET7_0
Assert.Equal("gii", @override("ghi"));
Assert.Equal("hij", @override("hij"));
#else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Management.Cluster.Http")]
[assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
[assembly: System.Runtime.InteropServices.GuidAttribute("0e3e691b-0c31-4718-9b1a-d749b93208c9")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
namespace Akka.Cluster
{
public sealed class AutoDowning : Akka.Cluster.IDowningProvider
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Management.Cluster.Http")]
[assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
[assembly: System.Runtime.InteropServices.GuidAttribute("0e3e691b-0c31-4718-9b1a-d749b93208c9")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName=".NET 6.0")]
namespace Akka.Cluster
{
public sealed class AutoDowning : Akka.Cluster.IDowningProvider
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Management.Cluster.Http")]
[assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
[assembly: System.Runtime.InteropServices.GuidAttribute("0e3e691b-0c31-4718-9b1a-d749b93208c9")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
namespace Akka.Cluster
{
public sealed class AutoDowning : Akka.Cluster.IDowningProvider
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Management.Cluster.Http")]
[assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
[assembly: System.Runtime.InteropServices.GuidAttribute("0e3e691b-0c31-4718-9b1a-d749b93208c9")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
namespace Akka.Cluster
{
public sealed class AutoDowning : Akka.Cluster.IDowningProvider
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/akkadotnet/akka.net")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
namespace Akka.Cluster.Metrics
{
public sealed class AdaptiveLoadBalancingGroup : Akka.Routing.Group
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/akkadotnet/akka.net")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName=".NET 6.0")]
namespace Akka.Cluster.Metrics
{
public sealed class AdaptiveLoadBalancingGroup : Akka.Routing.Group
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/akkadotnet/akka.net")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
namespace Akka.Cluster.Metrics
{
public sealed class AdaptiveLoadBalancingGroup : Akka.Routing.Group
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/akkadotnet/akka.net")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
namespace Akka.Cluster.Metrics
{
public sealed class AdaptiveLoadBalancingGroup : Akka.Routing.Group
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Cluster.Sharding.Tests.MultiNode")]
[assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
[assembly: System.Runtime.InteropServices.GuidAttribute("a05c31e8-0246-46a1-b3bc-4d6fe7a9aa49")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
namespace Akka.Cluster.Sharding
{
public class ClusterSharding : Akka.Actor.IExtension
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Cluster.Sharding.Tests.MultiNode")]
[assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
[assembly: System.Runtime.InteropServices.GuidAttribute("a05c31e8-0246-46a1-b3bc-4d6fe7a9aa49")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName=".NET 6.0")]
namespace Akka.Cluster.Sharding
{
public class ClusterSharding : Akka.Actor.IExtension
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Cluster.Sharding.Tests.MultiNode")]
[assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
[assembly: System.Runtime.InteropServices.GuidAttribute("a05c31e8-0246-46a1-b3bc-4d6fe7a9aa49")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
namespace Akka.Cluster.Sharding
{
public class ClusterSharding : Akka.Actor.IExtension
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Cluster.Sharding.Tests.MultiNode")]
[assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
[assembly: System.Runtime.InteropServices.GuidAttribute("a05c31e8-0246-46a1-b3bc-4d6fe7a9aa49")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
namespace Akka.Cluster.Sharding
{
public class ClusterSharding : Akka.Actor.IExtension
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Cluster.Tools.Tests.MultiNode")]
[assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
[assembly: System.Runtime.InteropServices.GuidAttribute("5cf8a8be-b634-473f-bb01-eba878746bd4")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
namespace Akka.Cluster.Tools.Client
{
public sealed class ClusterClient : Akka.Actor.ActorBase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Cluster.Tools.Tests.MultiNode")]
[assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
[assembly: System.Runtime.InteropServices.GuidAttribute("5cf8a8be-b634-473f-bb01-eba878746bd4")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")]
[assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName=".NET 6.0")]
namespace Akka.Cluster.Tools.Client
{
public sealed class ClusterClient : Akka.Actor.ActorBase
Expand Down
Loading

0 comments on commit 020cb7d

Please sign in to comment.