Skip to content

Commit 31e4007

Browse files
committed
polishing
1 parent a9c2815 commit 31e4007

File tree

9 files changed

+59
-43
lines changed

9 files changed

+59
-43
lines changed

Splitio.Redis/Splitio.Redis.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
88
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
99
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
10-
<Version>7.11.0</Version>
10+
<Version>7.11.1</Version>
1111
<SignAssembly>true</SignAssembly>
1212
<AssemblyOriginatorKeyFile>SplitioRedis.snk</AssemblyOriginatorKeyFile>
1313
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>

appveyor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ image:
44
nuget:
55
account_feed: true
66

7-
version: 7.11.0
7+
version: 7.11.1-rc.{build}
88
dotnet_csproj:
99
patch: true
1010
file: '**\*.csproj'

src/Splitio/Constants/Constants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public static class Gral
3232
public static int DestroyTimeount => 30000;
3333
public static int IntervalToClearLongTermCache => 3600000;
3434
public static string Control => "control";
35+
public static string SdkVersion => "7.11.1";
3536
}
3637

3738
public static class Urls

src/Splitio/Services/Cache/Classes/InMemoryRuleBasedSegmentCache.cs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
namespace Splitio.Services.Cache.Classes
88
{
99
public class InMemoryRuleBasedSegmentCache : IRuleBasedSegmentCache
10-
{
10+
{
11+
private readonly object _lock = new object();
12+
1113
private readonly ConcurrentDictionary<string, RuleBasedSegment> _cache;
1214
private long _changeNumber;
1315

@@ -45,17 +47,20 @@ public long GetChangeNumber()
4547
// Producer
4648
public void Update(List<RuleBasedSegment> toAdd, List<string> toRemove, long till)
4749
{
48-
foreach (var rbSegment in toAdd)
50+
lock (_lock)
4951
{
50-
_cache.AddOrUpdate(rbSegment.Name, rbSegment, (key, oldValue) => rbSegment);
51-
}
52+
foreach (var rbSegment in toAdd)
53+
{
54+
_cache.AddOrUpdate(rbSegment.Name, rbSegment, (key, oldValue) => rbSegment);
55+
}
5256

53-
foreach (var name in toRemove)
54-
{
55-
_cache.TryRemove(name, out var _);
56-
}
57+
foreach (var name in toRemove)
58+
{
59+
_cache.TryRemove(name, out var _);
60+
}
5761

58-
SetChangeNumber(till);
62+
SetChangeNumber(till);
63+
}
5964
}
6065

6166
public void SetChangeNumber(long changeNumber)

src/Splitio/Services/Cache/Classes/InMemorySplitCache.cs

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ public class InMemorySplitCache : IFeatureFlagCache
1818
private readonly ConcurrentDictionary<string, ParsedSplit> _featureFlags;
1919
private readonly ConcurrentDictionary<string, int> _trafficTypes;
2020
private readonly ConcurrentDictionary<string, HashSet<string>> _flagSets;
21+
22+
private readonly object _lock = new object();
2123

2224
private long _changeNumber;
2325

@@ -47,32 +49,33 @@ public InMemorySplitCache(ConcurrentDictionary<string, ParsedSplit> featureFlags
4749
#region Sync Methods
4850
public void Update(List<ParsedSplit> toAdd, List<string> toRemove, long till)
4951
{
50-
foreach (var featureFlag in toAdd)
52+
lock (_lock)
5153
{
52-
if (_featureFlags.TryGetValue(featureFlag.name, out ParsedSplit existing))
54+
foreach (var featureFlag in toAdd)
5355
{
54-
DecreaseTrafficTypeCount(existing);
55-
RemoveFromFlagSets(existing.name, existing.Sets);
56-
}
56+
if (_featureFlags.TryGetValue(featureFlag.name, out ParsedSplit existing))
57+
{
58+
DecreaseTrafficTypeCount(existing);
59+
RemoveFromFlagSets(existing.name, existing.Sets);
60+
}
5761

58-
_featureFlags.AddOrUpdate(featureFlag.name, featureFlag, (key, oldValue) => featureFlag);
62+
_featureFlags.AddOrUpdate(featureFlag.name, featureFlag, (key, oldValue) => featureFlag);
5963

60-
IncreaseTrafficTypeCount(featureFlag.trafficTypeName);
61-
AddToFlagSets(featureFlag);
62-
}
63-
64-
foreach (var featureFlagName in toRemove)
65-
{
66-
if (!_featureFlags.TryGetValue(featureFlagName, out ParsedSplit cached))
67-
continue;
64+
IncreaseTrafficTypeCount(featureFlag.trafficTypeName);
65+
AddToFlagSets(featureFlag);
66+
}
6867

69-
_featureFlags.TryRemove(featureFlagName, out ParsedSplit removedSplit);
68+
foreach (var featureFlagName in toRemove)
69+
{
70+
if (_featureFlags.TryRemove(featureFlagName, out ParsedSplit removedSplit))
71+
{
72+
DecreaseTrafficTypeCount(removedSplit);
73+
RemoveFromFlagSets(removedSplit.name, removedSplit.Sets);
74+
}
75+
}
7076

71-
DecreaseTrafficTypeCount(removedSplit);
72-
RemoveFromFlagSets(removedSplit.name, removedSplit.Sets);
77+
SetChangeNumber(till);
7378
}
74-
75-
SetChangeNumber(till);
7679
}
7780

7881
public void SetChangeNumber(long changeNumber)

src/Splitio/Services/SegmentFetcher/Classes/SegmentSdkApiClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ public async Task<string> FetchSegmentChangesAsync(string name, long since, Fetc
6767

6868
private string GetRequestUri(string name, long since, long? till = null)
6969
{
70-
var uri = $"{_baseUrl}/api/segmentChanges/{name}?since={Uri.EscapeDataString(since.ToString())}";
70+
var uri = $"{_baseUrl}/api/segmentChanges/{name}?since={since}";
7171

7272
if (till.HasValue)
73-
return $"{uri}&till={Uri.EscapeDataString(till.Value.ToString())}";
73+
uri = $"{uri}&till={till.Value}";
7474

7575
return uri;
7676
}

src/Splitio/Services/Shared/Classes/WrapperAdapter.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ public SdkMetadata BuildSdkMetadata(ConfigurationOptions config, ISplitLogger lo
4444
var ipAddressesEnabled = config.IPAddressesEnabled ?? true;
4545

4646
#if NET_LATEST
47-
metadata.Version = ".NET_CORE-" + SplitSdkVersion();
47+
metadata.Version = ".NET_CORE-" + SplitSdkVersion(log);
4848
#else
49-
metadata.Version = ".NET-" + SplitSdkVersion();
49+
metadata.Version = ".NET-" + SplitSdkVersion(log);
5050
#endif
5151
metadata.MachineName = GetSdkMachineName(config, ipAddressesEnabled, log);
5252
metadata.MachineIP = GetSdkMachineIP(config, ipAddressesEnabled, log);
@@ -59,13 +59,22 @@ public Task<Task> WhenAnyAsync(params Task[] tasks)
5959
return Task.WhenAny(tasks);
6060
}
6161

62-
private static string SplitSdkVersion()
62+
private static string SplitSdkVersion(ISplitLogger log)
6363
{
64+
try
65+
{
6466
#if NET_LATEST
65-
return typeof(Split).GetTypeInfo().Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;
67+
return typeof(Split).GetTypeInfo().Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;
6668
#else
67-
return FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;
69+
return FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;
6870
#endif
71+
}
72+
catch (Exception ex)
73+
{
74+
log.Warn("Exception retrieving sdk version", ex);
75+
}
76+
77+
return Constants.Gral.SdkVersion;
6978
}
7079

7180
public void SetCustomerLogger(ISplitLogger splitLogger)

src/Splitio/Services/SplitFetcher/Classes/SplitSdkApiClient.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,20 +109,18 @@ public async Task<ApiFetchResult> FetchSplitChangesAsync(FetchOptions fetchOptio
109109

110110
private string GetRequestUri(long since, long rbSinceTarget, long? till)
111111
{
112-
var ffSince = Uri.EscapeDataString(since.ToString());
113-
var uri = $"{_baseUrl}/api/splitChanges?s={_flagSpec}&since={ffSince}";
112+
var uri = $"{_baseUrl}/api/splitChanges?s={_flagSpec}&since={since}";
114113

115114
if (_flagSpec.Equals(ApiVersions.LatestFlagsSpec))
116115
{
117-
var rbSince = Uri.EscapeDataString(rbSinceTarget.ToString());
118-
uri = $"{uri}&rbSince={rbSince}";
116+
uri = $"{uri}&rbSince={rbSinceTarget}";
119117
}
120118

121119
if (!string.IsNullOrEmpty(_flagSets))
122120
uri = $"{uri}&sets={_flagSets}";
123121

124122
if (till.HasValue)
125-
uri = $"{uri}&till={Uri.EscapeDataString(till.Value.ToString())}";
123+
uri = $"{uri}&till={till.Value}";
126124

127125
return uri;
128126
}

src/Splitio/Splitio.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
88
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
99
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
10-
<Version>7.11.0</Version>
10+
<Version>7.11.1</Version>
1111
<RootNamespace>Splitio</RootNamespace>
1212
<SignAssembly>true</SignAssembly>
1313
<AssemblyOriginatorKeyFile>Splitio.snk</AssemblyOriginatorKeyFile>

0 commit comments

Comments
 (0)