Skip to content

Commit

Permalink
Update to JNet 1.5.2 (#169)
Browse files Browse the repository at this point in the history
* #92: upgrade to JNet 1.5.2 and JCOBridge 2.5.3

* #53: benchmark update

* #121: update to version 1.5.1

* #92: updates Java version in pom.xml to be aligned to JNet
  • Loading branch information
masesdevelopers authored Mar 14, 2023
1 parent 3680633 commit 3cf3a0e
Show file tree
Hide file tree
Showing 21 changed files with 55 additions and 69 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase

- name: Install local file to be used within Javadoc plugin of generated POM
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.2 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.3 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
shell: bash

- name: Create Jars
Expand Down Expand Up @@ -150,7 +150,7 @@ jobs:
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase

- name: Install local file to be used within Javadoc plugin of generated POM
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.2 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.3 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
shell: bash

- name: Create Jars
Expand Down
10 changes: 9 additions & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,21 @@ jobs:
# make bootstrap
# make release

- name: Set up Apache Maven Central
if: matrix.language == 'java'
uses: actions/setup-java@v3
with: # running setup-java again overwrites the settings.xml
distribution: temurin
java-version: 11
cache: 'maven'

- name: Maven preparation (step 1)
if: matrix.language == 'java'
run: dotnet build --no-incremental --configuration Release --framework net6.0 /p:Platform="Any CPU" ./src/net/KNet.sln

- name: Maven preparation (step 2)
if: matrix.language == 'java'
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.2 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.3 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
shell: bash

- if: matrix.language == 'java'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pullrequest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase

- name: Install local file to be used within Javadoc plugin of generated POM
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.2 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.3 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
shell: bash

- name: Create Jars
Expand Down Expand Up @@ -120,7 +120,7 @@ jobs:
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase

- name: Install local file to be used within Javadoc plugin of generated POM
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.2 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.3 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
shell: bash

- name: Create Jars
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase

- name: Install local file to be used within Javadoc plugin of generated POM
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.2 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.3 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
shell: bash

- name: Create Jars
Expand Down Expand Up @@ -95,7 +95,7 @@ jobs:
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase

- name: Install local file to be used within Javadoc plugin of generated POM
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.2 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.3 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
shell: bash

- name: Create Jars
Expand Down Expand Up @@ -161,7 +161,7 @@ jobs:
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase

- name: Install local file to be used within Javadoc plugin of generated POM
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.2 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
run: mvn install:install-file -DgroupId=JCOBridge -DartifactId=JCOBridge -Dversion=2.5.3 -Dpackaging=jar -Dfile=../../../bin/net6.0/JCOBridge.jar -f ./src/java/knet/pom.xml
shell: bash

- name: Create Jars
Expand Down
8 changes: 4 additions & 4 deletions src/java/knet/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@
</developer>
</developers>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<classpathfile>${basedir}/classpathfile.classpath</classpathfile>
<kafkaVersion>3.4.0</kafkaVersion>
<knetVersion>1.5.0.0</knetVersion>
<jcobridgeVersion>2.5.2</jcobridgeVersion>
<knetVersion>1.5.1.0</knetVersion>
<jcobridgeVersion>2.5.3</jcobridgeVersion>
</properties>
<distributionManagement>
<snapshotRepository>
Expand Down
2 changes: 1 addition & 1 deletion src/net/Common/Common.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<Owners>MASES s.r.l.</Owners>
<Authors>MASES s.r.l.</Authors>
<Company>MASES s.r.l.</Company>
<Version>1.5.0.0</Version>
<Version>1.5.1.0</Version>
<LangVersion>latest</LangVersion>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
Expand Down
58 changes: 18 additions & 40 deletions src/net/Documentation/articles/performance.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ To measure KNet performance a specifc project is available under the `tests` fol
Apache Kafka is a client-server architecture which relies on the network for communication.
The entire infrastructure performance depends on some elements:
1. The HW where Apache Kafka server is running on: see https://kafka.apache.org/documentation/#hwandos for further information
2. The network between clients and servers
3. The client library with its configuration parameters
4. The user application
2. The settings of Apache Kafka server installation
3. The network between clients and servers
4. The client library with its configuration parameters
5. The user application

All elements listed before have their relevance in the evaluation of the performance: surely the first 3 points are the ones with maximum impact.
The benchmark made in KNet try to focus on the point 3: the benchmarks of the points 1 and 2 are covered from other player. To concentrate on point 3:
Expand All @@ -33,7 +34,7 @@ Others have different meaning: KNet use the concept of memory pool to store mess
The tests:
- are divided in two different main areas: produce and consume;
- uses their own topic to avoid impacts from the previous tests: schema is {TopicPrefix}__{testName}__{length}__{testNum} where
- **TopicPrefix** is an user definible string (default is _testTopic_
- **TopicPrefix** is an user definible string (default is _testTopic_)
- **testName** is KNET or CONF
- **length** is the payload length
- **testNum** is the actual execution repetition
Expand Down Expand Up @@ -88,32 +89,33 @@ The tests was done with:
- for each benchmark execution the tests are repeated at least 20 times.

The configuration is:
- Acks: None to avoid performance impacts from server side
- LingerMs: 100 ms
- BatchSize: 1000000
- MaxInFlight: 1000000
- SendBuffer: 32 Mb
- ReceiveBuffer: 32 Mb
- FetchMinBytes: 100000

Here below a set of results, in bold the results which are better using KNet:
Here below a set of results, in bold the results which are better using KNet (the table reports the changes from previous tests and current tests done with JNet 1.5.2 and JCOBridge 2.5.3):

- KNet/Confluent.Kafka Produce Average ratio percentage (SD ratio percentage):

| | 10 bytes | 100 bytes | 1000 bytes | 10000 bytes | 100000 bytes |
|--- |--- |--- |--- |--- |--- |
| 10 messages | **9,04 (4,34)** | **5,47 (3,1)** | **15,45 (5,29)** | **7,54 (4,38)** | **19,73 (4,23)** |
| 100 messages | **18,9 (6,29)** | **38,1 (8,1)** | **30,34 (5,44)** | **26 (3,04)** | **69,4 (13,09)** |
| 1000 messages | 197,73 (10,54) | 109,92 (6,13) | **57,6 (7,32)** | **52,71 (8,17)** | **75,76 (43,7)** |
| 10000 messages | 2102,28 (736,54) | 796,84 (514,28) | 173,39 (401,76) | 123,62 (620,46) | **99,5 (108,3)** |
|:---: |:---: |:---: |:---: |:---: |:---: |
| 10 messages | **9,04 (4,34)** -> **4,26 (0,57)** | **5,47 (3,1)** -> **6,94 (0,8)** | **15,45 (5,29)** -> **10,9 (2,27)** | **7,54 (4,38)** -> **2,78 (0,55)** | **19,73 (4,23)** -> **13,81 (4,07)** |
| 100 messages | **18,9 (6,29)** -> **11,58 (1,43)** | **38,1 (8,1)** -> **11,23 (1,7)** | **30,34 (5,44)** -> **15,22 (3,69)** | **26 (3,04)** -> **13,69 (1,64)** | **69,4 (13,09)** -> **41,13 (12,36)** |
| 1000 messages | 197,73 (10,54) -> **33,69 (3,6)** | 109,92 (6,13) -> **48,05 (6,08)** | **57,6 (7,32)** -> **25,03 (3,66)** | **52,71 (8,17)** -> **34,57 (16,43)** | **75,76 (43,7)** -> **74,46 (43,53)** |
| 10000 messages | 2102,28 (736,54) -> 1172,54 (534,18) | 796,84 (514,28) -> 545,73 (356,43) | 173,39 (401,76) -> 100,34 (289,93) | 123,62 (620,46) -> **88,14 (150,15)** | **99,5 (108,3)** -> **91,52 (88,36)** |

- KNet/Confluent.Kafka Consume Average ratio percentage (SD ratio percentage):

| | 10 bytes | 100 bytes | 1000 bytes | 10000 bytes | 100000 bytes |
|--- |--- |--- |--- |--- |--- |
| 10 messages | **85,93 (399,84)**| **85,41 (282,85)** | **85,14 (297,98)** | **24,07 (229,23)** | **36,23 (285,77)** |
| 100 messages | **94,54 (479,13)** | **94,7 (287,78)** | **68,49 (389,25)** | **71,97 (276,56)** | 108,57 (89,45) |
| 1000 messages | 192,27 (906,94) | 521,86 (867,93) | 103,62 (1854,84) | 255,52 (287,33) | 163,24 (124,23) |
| 10000 messages | 9153,56 (77543,04) | 7948,76 (69701,75) | 3848,12 (23910,64) | 706,83 (3905,89) | 213,46 (1013,16) |
|:---: |:---: |:---: |:---: |:---: |:---: |
| 10 messages | **85,93 (399,84)** -> **84,38 (160,69)** | **85,41 (282,85)** -> **83,68 (25,15)** | **85,14 (297,98)** -> **83,79 (106,68)** | **24,07 (229,23)** -> **13,69 (36,18)** | **36,23 (285,77)** -> **29,18 (137,24)** |
| 100 messages | **94,54 (479,13)** -> **85,32 (265,09)** | **94,7 (287,78)** -> **85,56 (432,38)** | **68,49 (389,25)** -> **17,63 (30,98)** | **71,97 (276,56)** -> **33,44 (150,89)** | 108,57 (89,45) -> 144,57 (133,34) |
| 1000 messages | 192,27 (906,94) -> **92,3 (237,25)** | 521,86 (867,93) -> **87,52 (668,81)** | 103,62 (1854,84) -> **16,54 (232,94)** | 255,52 (287,33) -> 183,56 (146,66) | 163,24 (124,23) -> 154,91 (246,38) |
| 10000 messages | 9153,56 (77543,04) -> 654,7 (962) | 7948,76 (69701,75) -> 641,17 (1653,94) | 3848,12 (23910,64) -> 401,69 (485,42) | 706,83 (3905,89) -> 186,48 (187,41) | 213,46 (1013,16) -> 147,41 (197,52) |

### Average ratio percentage

Expand All @@ -133,28 +135,4 @@ The KNet library performs better when the massages are larger; when the messages
From some measurement done KNet suffers the JNI interface overhead needed to performs the operations (the user can activate JNI calls measurement): the evidence comes from the difference between KNetProducer and KafkaProducer (without _UseKNetProducer_ command-line switch).
Using KNetProducer the numbers of JNI invocation are less than using KafkaProducer, so reducing the number of JNI calls have a great impact on overall performance.
The same consideration can be applied on the consume side: KNetConsumer does not reduce the impact of JNI interface and it does not give any great improvement.
The JNI interface has an impact even when the number of messages is high because during processing the Garbage Collector is activated many times increasing the JNI overhead.

**With the upcoming JCOBridge major version the JNI impact will be reduced and KNet will get extra performance both in produce and in consume.**

The first measures done with an internal alfa release reports big improvements. Here some cases:
- 100 messages:
- 10 bytes: Produce Average ratio percentage from 18 to 11, Consume Average ratio percentage from 94 to 88
- 100 bytes: Produce Average ratio percentage from 38 to 17, Consume Average ratio percentage from 94 to 88
- 1000 bytes: Produce Average ratio percentage from 30 to 16, Consume Average ratio percentage from 68 to 38
- 10000 bytes: Produce Average ratio percentage from 26 to 24, Consume Average ratio percentage from 71 to 47
- 100000 bytes: Produce Average ratio percentage from 69 to 43, Consume Average ratio percentage from 108 to 101
- 1000 messages:
- 10 bytes: Produce Average ratio percentage from 197 to 111, Consume Average ratio percentage from 192 to 137
- 100 bytes: Produce Average ratio percentage from 109 to 86, Consume Average ratio percentage from 521 to 276
- 1000 bytes: Produce Average ratio percentage from 57 to 53, Consume Average ratio percentage from 103 to 56
- 10000 bytes: Produce Average ratio percentage from 52 to 48, Consume Average ratio percentage from 255 to 177
- 100000 bytes: Produce Average ratio percentage from 75 to 71, Consume Average ratio percentage from 163 to 146
- 10000 messages:
- 10 bytes: Produce Average ratio percentage from 2102 to 656, Consume Average ratio percentage from 9153 to 4139
- 100 bytes: Produce Average ratio percentage from 796 to 410, Consume Average ratio percentage from 7948 to 3378
- 1000 bytes: Produce Average ratio percentage from 173 to 81, Consume Average ratio percentage from 3848 to 1668
- 10000 bytes: Produce Average ratio percentage from 123 to 80, Consume Average ratio percentage from 706 to 390
- 100000 bytes: Produce Average ratio percentage from 100 to 96, Consume Average ratio percentage from 213 to 172


The JNI interface has an impact even when the number of messages is high because during processing the Garbage Collector is activated many times increasing the JNI overhead.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

namespace MASES.KNet.Clients.Consumer
{
public class ConsumerRecords<K, V> : JCOBridge.C2JBridge.JVMBridgeBaseEnumerable<ConsumerRecords<K, V>, ConsumerRecord<K, V>>
public class ConsumerRecords<K, V> : Iterable<ConsumerRecord<K, V>>
{
public override string ClassName => "org.apache.kafka.clients.consumer.ConsumerRecords";

Expand All @@ -38,8 +38,6 @@ public Iterable<ConsumerRecord<K, V>> Records(string topic)

public Set<TopicPartition> Partitions => IExecute<Set<TopicPartition>>("partitions");

public Iterator<ConsumerRecord<K, V>> Iterator => IExecute<Iterator<ConsumerRecord<K, V>>>("iterator");

public int Count => IExecute<int>("count");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@
* Refer to LICENSE for more information.
*/

using Java.Lang;

namespace MASES.KNet.Common.Header
{
public class Headers : JCOBridge.C2JBridge.JVMBridgeBaseEnumerable<Headers, Header>
public class Headers : Iterable<Header>
{
public override string ClassName => "org.apache.kafka.common.header.Headers";

Expand Down
2 changes: 1 addition & 1 deletion src/net/KNet/KNet.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<None Include="..\Documentation\articles\usage.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MASES.JNet" Version="1.5.1">
<PackageReference Include="MASES.JNet" Version="1.5.2">
<IncludeAssets>All</IncludeAssets>
<PrivateAssets>None</PrivateAssets>
</PackageReference>
Expand Down
2 changes: 1 addition & 1 deletion src/net/KNetCLI/KNetCLI.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>MASES.KNetCLI</id>
<version>1.5.0</version>
<version>1.5.1</version>
<title>KNetCLI - KNet command line interface</title>
<authors>MASES s.r.l.</authors>
<owners>MASES s.r.l.</owners>
Expand Down
2 changes: 1 addition & 1 deletion src/net/KNetConnect/KNetConnect.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>MASES.KNetConnect</id>
<version>1.5.0</version>
<version>1.5.1</version>
<title>KNetConnect - KNet Connect command line interface</title>
<authors>MASES s.r.l.</authors>
<owners>MASES s.r.l.</owners>
Expand Down
2 changes: 1 addition & 1 deletion src/net/KNetPS/KNetPS.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<!--<IncludeAssets>All</IncludeAssets>-->
<!--<PrivateAssets>None</PrivateAssets>-->
</ProjectReference>
<PackageReference Include="MASES.JNetPSCore" Version="1.5.1" />
<PackageReference Include="MASES.JNetPSCore" Version="1.5.2" />
<PackageReference Include="PowerShellStandard.Library" Version="5.1.1">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
Expand Down
2 changes: 1 addition & 1 deletion src/net/KNetPS/MASES.KNetPS.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

RootModule = 'MASES.KNetPS.psm1'

ModuleVersion = '1.5.0'
ModuleVersion = '1.5.1'

# CompatiblePSEditions = @()

Expand Down
2 changes: 1 addition & 1 deletion src/net/KNetPS/MASES.KNetPSCore.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
ModuleToProcess = 'MASES.KNetPS.dll'

# Version number of this module.
ModuleVersion = '1.5.0'
ModuleVersion = '1.5.1'

# ID used to uniquely identify this module
GUID = 'F7C13891-7BC6-4025-ACF5-04509852F87D'
Expand Down
2 changes: 1 addition & 1 deletion src/net/KNetPS/MASES.KNetPSFramework.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
ModuleToProcess = 'MASES.KNetPS.dll'

# Version number of this module.
ModuleVersion = '1.5.0'
ModuleVersion = '1.5.1'

# ID used to uniquely identify this module
GUID = '5E883DB0-584F-4F8E-8D65-2AAB24B491D8'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</ItemGroup>
<ItemGroup Condition="!Exists('..\..\..\KNet\KNet.csproj')">
<!--Outside GitHub repo-->
<PackageReference Include="MASES.KNet" Version="1.5.0" IncludeAssets="All" PrivateAssets="None" />
<PackageReference Include="MASES.KNet" Version="1.5.1" IncludeAssets="All" PrivateAssets="None" />
</ItemGroup>
<ItemGroup>
<None Update="connect-knet-sink.properties">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</ItemGroup>
<ItemGroup Condition="!Exists('..\..\..\KNet\KNet.csproj')">
<!--Outside GitHub repo-->
<PackageReference Include="MASES.KNet" Version="1.5.0" IncludeAssets="All" PrivateAssets="None" />
<PackageReference Include="MASES.KNet" Version="1.5.1" IncludeAssets="All" PrivateAssets="None" />
</ItemGroup>
<ItemGroup>
<None Update="connect-knet-source.properties">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
</ItemGroup>
<ItemGroup Condition="!Exists('..\..\..\KNet\KNet.csproj')">
<!--Outside GitHub repo-->
<PackageReference Include="MASES.KNet" Version="1.5.0" IncludeAssets="All" PrivateAssets="None" />
<PackageReference Include="MASES.KNet" Version="1.5.1" IncludeAssets="All" PrivateAssets="None" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
</ItemGroup>
<ItemGroup Condition="!Exists('..\..\..\KNet\KNet.csproj')">
<!--Outside GitHub repo-->
<PackageReference Include="MASES.KNet" Version="1.5.0" IncludeAssets="All" PrivateAssets="None" />
<PackageReference Include="MASES.KNet" Version="1.5.1" IncludeAssets="All" PrivateAssets="None" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
</ItemGroup>
<ItemGroup Condition="!Exists('..\..\..\KNet\KNet.csproj')">
<!--Outside GitHub repo-->
<PackageReference Include="MASES.KNet" Version="1.5.0" IncludeAssets="All" PrivateAssets="None" />
<PackageReference Include="MASES.KNet" Version="1.5.1" IncludeAssets="All" PrivateAssets="None" />
</ItemGroup>
</Project>

0 comments on commit 3cf3a0e

Please sign in to comment.