Skip to content

Commit 39d5adb

Browse files
authored
Fixed bug where max event buffer size didn't maintain (#201)
* Fixed bug where max event buffer size didn't maintain through background foregrounding * Tests in new event system test not old
1 parent b15f0ff commit 39d5adb

File tree

8 files changed

+53
-6
lines changed

8 files changed

+53
-6
lines changed

Agent/Analytics/NRMAAnalytics.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616

1717
@interface NRMAAnalytics : NSObject <NRMAHarvestAware>
1818
- (void) setMaxEventBufferTime:(unsigned int) seconds;
19-
19+
- (NSUInteger) getMaxEventBufferSize;
2020
- (void) setMaxEventBufferSize:(unsigned int) size;
21+
- (NSUInteger) getMaxEventBufferTime;
2122

2223
- (id) initWithSessionStartTimeMS:(long long) sessionStartTime;
2324

Agent/Analytics/NRMAAnalytics.mm

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,22 +81,30 @@ @implementation NRMAAnalytics
8181
}
8282

8383
- (void) setMaxEventBufferSize:(unsigned int) size {
84+
[NRMAAgentConfiguration setMaxEventBufferSize:size];
8485
if([NRMAFlags shouldEnableNewEventSystem]){
8586
[_eventManager setMaxEventBufferSize:size];
8687
}
8788
else {
8889
_analyticsController->setMaxEventBufferSize(size);
8990
}
9091
}
92+
- (NSUInteger) getMaxEventBufferSize {
93+
return [_eventManager getMaxEventBufferSize];
94+
}
9195
- (void) setMaxEventBufferTime:(unsigned int)seconds
9296
{
97+
[NRMAAgentConfiguration setMaxEventBufferTime:seconds];
9398
if([NRMAFlags shouldEnableNewEventSystem]){
9499
[_eventManager setMaxEventBufferTimeInSeconds:seconds];
95100
}
96101
else {
97102
_analyticsController->setMaxEventBufferTime(seconds);
98103
}
99104
}
105+
- (NSUInteger) getMaxEventBufferTime {
106+
return [_eventManager getMaxEventBufferTimeInSeconds];
107+
}
100108

101109
- (id) initWithSessionStartTimeMS:(long long) sessionStartTime {
102110
self = [super init];

Agent/Analytics/NRMAEventManager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ NS_ASSUME_NONNULL_BEGIN
2020

2121
- (instancetype)initWithPersistentStore:(PersistentEventStore *)store;
2222
- (void)setMaxEventBufferSize:(NSUInteger)size;
23+
- (NSUInteger)getMaxEventBufferSize;
2324
- (void)setMaxEventBufferTimeInSeconds:(NSUInteger)seconds;
25+
- (NSUInteger)getMaxEventBufferTimeInSeconds;
2426
- (BOOL)didReachMaxQueueTime:(NSTimeInterval)currentTimeMilliseconds;
2527
- (BOOL)addEvent:(id<NRMAAnalyticEventProtocol>)event;
2628
- (void)empty;

Agent/Analytics/NRMAEventManager.m

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ - (nonnull instancetype)initWithPersistentStore:(PersistentEventStore *)store {
3737
self = [super init];
3838
if (self) {
3939
events = [[NSMutableArray<NRMAAnalyticEventProtocol> alloc] init];
40-
maxBufferSize = kDefaultBufferSize;
40+
maxBufferSize = [NRMAAgentConfiguration getMaxEventBufferSize];
4141
maxBufferTimeSeconds = [NRMAAgentConfiguration getMaxEventBufferTime];
4242
totalAttemptedInserts = 0;
4343
oldestEventTimestamp = 0;
@@ -50,6 +50,10 @@ - (void)setMaxEventBufferSize:(NSUInteger)size {
5050
maxBufferSize = size;
5151
}
5252

53+
- (NSUInteger)getMaxEventBufferSize {
54+
return maxBufferSize;
55+
}
56+
5357
- (void)setMaxEventBufferTimeInSeconds:(NSUInteger)seconds {
5458
if(seconds < kMinBufferTimeSeconds) {
5559
NRLOG_ERROR(@"Buffer Time cannot be less than %lu Seconds", (unsigned long)kMinBufferTimeSeconds);
@@ -62,6 +66,10 @@ - (void)setMaxEventBufferTimeInSeconds:(NSUInteger)seconds {
6266
maxBufferTimeSeconds = seconds;
6367
}
6468

69+
- (NSUInteger)getMaxEventBufferTimeInSeconds {
70+
return maxBufferTimeSeconds;
71+
}
72+
6573
- (BOOL)didReachMaxQueueTime:(NSTimeInterval)currentTimeMilliseconds {
6674
if(oldestEventTimestamp == 0) {
6775
return false;

Agent/Harvester/DataStore/NRMAAgentConfiguration.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,6 @@
4444
+ (void) setMaxEventBufferTime:(NSUInteger)seconds;
4545
+ (NSUInteger) getMaxEventBufferTime;
4646

47+
+ (void) setMaxEventBufferSize:(NSUInteger)size;
48+
+ (NSUInteger) getMaxEventBufferSize;
4749
@end

Agent/Harvester/DataStore/NRMAAgentConfiguration.m

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
// Default max event buffer time is 10 minutes (600 seconds).
2424
static NSUInteger __NRMA__maxEventBufferTime = 600;
25+
static NSUInteger __NRMA__maxEventBufferSize = 1000;
2526

2627
@implementation NRMAAgentConfiguration
2728

@@ -49,6 +50,13 @@ + (NSUInteger) getMaxEventBufferTime {
4950
return __NRMA__maxEventBufferTime;
5051
}
5152

53+
+ (void) setMaxEventBufferSize:(NSUInteger)size {
54+
__NRMA__maxEventBufferSize = size;
55+
}
56+
+ (NSUInteger) getMaxEventBufferSize {
57+
return __NRMA__maxEventBufferSize;
58+
}
59+
5260
- (id) initWithAppToken:(NRMAAppToken*)token
5361
collectorAddress:(NSString*)collectorHost
5462
crashAddress:(NSString*)crashHost {

Agent/Public/NewRelic.m

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -613,8 +613,6 @@ + (BOOL) recordBreadcrumb:(NSString* __nonnull)name
613613
* harvest cycle.
614614
*/
615615
+ (void) setMaxEventBufferTime:(unsigned int)seconds {
616-
[NRMAAgentConfiguration setMaxEventBufferTime:seconds];
617-
618616
[[NewRelicAgentInternal sharedInstance].analyticsController setMaxEventBufferTime:seconds];
619617
}
620618
/*

Tests/Unit-Tests/NewRelicAgentTests/Analytics-Tests/NRMAAnalyticsTest.mm

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,8 +420,6 @@ - (void) testJSONEscapeCharacters {
420420

421421
}
422422

423-
424-
425423
- (void) testDuplicateStore {
426424
//todo: reenable test (disabled for beta 1, no persistent store)
427425
// NRMAAnalytics* analytics = [[NRMAAnalytics alloc] initWithSessionStartTimeMS:0];
@@ -1114,6 +1112,28 @@ - (void) testMidSessionHarvest {
11141112
// XCTAssertTrue(array.count == 0, @"dup events should have been cleared out on harvest before.");
11151113
}
11161114

1115+
-(void)testSetMaxEventBufferSize {
1116+
NRMAAnalytics* analytics = [[NRMAAnalytics alloc] initWithSessionStartTimeMS:0];
1117+
1118+
[analytics setMaxEventBufferSize:2000];
1119+
1120+
XCTAssertEqual([analytics getMaxEventBufferSize], 2000);
1121+
1122+
analytics = [[NRMAAnalytics alloc] initWithSessionStartTimeMS:0];
1123+
XCTAssertEqual([analytics getMaxEventBufferSize], 2000);
1124+
}
1125+
1126+
-(void)testSetMaxEventBufferTime {
1127+
NRMAAnalytics* analytics = [[NRMAAnalytics alloc] initWithSessionStartTimeMS:0];
1128+
1129+
[analytics setMaxEventBufferTime:2000];
1130+
1131+
XCTAssertEqual([analytics getMaxEventBufferTime], 2000);
1132+
1133+
analytics = [[NRMAAnalytics alloc] initWithSessionStartTimeMS:0];
1134+
XCTAssertEqual([analytics getMaxEventBufferTime], 2000);
1135+
}
1136+
11171137
- (void) testBadInput {
11181138
NRMAAnalytics* analytics = [[NRMAAnalytics alloc] initWithSessionStartTimeMS:0];
11191139
BOOL result;

0 commit comments

Comments
 (0)