Skip to content

Commit 547df10

Browse files
authored
Merge pull request #6 from NikTheNak/main
event error handling fix
2 parents e2b3917 + adf683f commit 547df10

6 files changed

Lines changed: 33 additions & 20 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1+
## 0.2.4
2+
3+
- Fixed memory leak with event errors
4+
- Fixed event send error handling
5+
- Reduced logging on errors
6+
17
## 0.2.3
28

3-
- use new session id format
9+
- Use new session id format
410

511
## 0.2.2
612

PACKAGE.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "com.aptabase",
33
"displayName": "Aptabase",
4-
"version": "0.2.3",
4+
"version": "0.2.4",
55
"unity": "2018.4",
66
"description": "Analytics for Apps. Privacy-First. Simple. Real-Time.",
77
"keywords": ["analytics"],

Runtime/Aptabase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ private static int GetFlushInterval()
165165

166166
return _env.isDebug ? 2000 : 60000;
167167
}
168-
168+
169169
private static string NewSessionId()
170170
{
171171
var epochInSeconds = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

Runtime/Dispatcher/Dispatcher.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System;
21
using System.Collections.Generic;
32
using System.Threading.Tasks;
43
using AptabaseSDK.TinyJson;
@@ -60,13 +59,13 @@ public async void Flush()
6059
eventsToSend.Add(_events.Dequeue());
6160

6261
try
63-
{
64-
await SendEvents(eventsToSend);
62+
{
63+
var result = await SendEvents(eventsToSend);
64+
if (!result) failedEvents.AddRange(eventsToSend);
6565
}
66-
catch (Exception e)
66+
catch
6767
{
6868
failedEvents.AddRange(eventsToSend);
69-
Debug.LogError(e);
7069
}
7170

7271
} while (_events.Count > 0);
@@ -77,10 +76,11 @@ public async void Flush()
7776
_flushInProgress = false;
7877
}
7978

80-
private static async Task SendEvents(List<Event> events)
79+
private static async Task<bool> SendEvents(List<Event> events)
8180
{
8281
var webRequest = _webRequestHelper.CreateWebRequest(_apiURL, _appKey, _environment, events.ToJson());
83-
await _webRequestHelper.SendWebRequestAsync(webRequest);
82+
var result = await _webRequestHelper.SendWebRequestAsync(webRequest);
83+
return result;
8484
}
8585
}
8686
}

Runtime/Dispatcher/WebGLDispatcher.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
using System;
21
using System.Collections.Generic;
32
using System.Threading.Tasks;
43
using AptabaseSDK.TinyJson;
5-
using UnityEngine;
64

75
namespace AptabaseSDK
86
{
@@ -56,12 +54,12 @@ public async void Flush()
5654
var eventToSend = _events.Dequeue();
5755
try
5856
{
59-
await SendEvent(eventToSend);
57+
var result = await SendEvent(eventToSend);
58+
if (!result) failedEvents.Add(eventToSend);
6059
}
61-
catch (Exception e)
60+
catch
6261
{
6362
failedEvents.Add(eventToSend);
64-
Debug.LogError(e);
6563
}
6664

6765
} while (_events.Count > 0);
@@ -72,10 +70,11 @@ public async void Flush()
7270
_flushInProgress = false;
7371
}
7472

75-
private static async Task SendEvent(Event eventData)
73+
private static async Task<bool> SendEvent(Event eventData)
7674
{
7775
var webRequest = _webRequestHelper.CreateWebRequest(_apiURL, _appKey, _environment, eventData.ToJson());
78-
await _webRequestHelper.SendWebRequestAsync(webRequest);
76+
var result = await _webRequestHelper.SendWebRequestAsync(webRequest);
77+
return result;
7978
}
8079
}
8180
}

Runtime/WebRequestHelper.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,24 @@ public UnityWebRequest CreateWebRequest(string url, string appKey, EnvironmentIn
2222
return webRequest;
2323
}
2424

25-
public async Task SendWebRequestAsync(UnityWebRequest request)
25+
public async Task<bool> SendWebRequestAsync(UnityWebRequest request)
2626
{
2727
var requestOp = request.SendWebRequest();
2828
while (!requestOp.isDone)
2929
await Task.Yield();
3030

31-
if (requestOp.webRequest.result != UnityWebRequest.Result.Success)
31+
var success = requestOp.webRequest.result == UnityWebRequest.Result.Success;
32+
if (success)
3233
{
33-
Debug.LogError($"Failed to perform web request due to {requestOp.webRequest.responseCode} and response body {requestOp.webRequest.error}");
34+
request.Dispose();
3435
}
36+
else
37+
{
38+
Debug.LogWarning($"Failed to perform web request due to {requestOp.webRequest.responseCode} and response body {requestOp.webRequest.error}");
39+
request.Dispose();
40+
}
41+
42+
return success;
3543
}
3644
}
3745
}

0 commit comments

Comments
 (0)