Skip to content

Commit

Permalink
Remove MSAL perf telemetry (#1481)
Browse files Browse the repository at this point in the history
* Remove MSAL perf telemetry as it's causing issue after SSO extension broker first strategy change

* Update changelog

---------

Co-authored-by: Juan Arias Roldan <[email protected]>
  • Loading branch information
juan-arias and juan-arias authored Feb 25, 2025
1 parent 9726576 commit 3dad58d
Show file tree
Hide file tree
Showing 11 changed files with 8 additions and 299 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,6 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)new NS_UNAVAILABLE;

#if !EXCLUDE_FROM_MSALCPP

- (void)trackPerfTelemetryWithLastRequest:(MSIDLastRequestTelemetry *)telemetry
requestStartDate:(NSDate *)requestStartDate
telemetryType:(NSString *)telemetryType;

#endif


@end

NS_ASSUME_NONNULL_END
Original file line number Diff line number Diff line change
Expand Up @@ -124,29 +124,4 @@ - (NSDictionary *)jsonDictionary
return json;
}

#if !EXCLUDE_FROM_MSALCPP

- (void)trackPerfTelemetryWithLastRequest:(MSIDLastRequestTelemetry *)telemetry
requestStartDate:(NSDate *)requestStartDate
telemetryType:(NSString *)telemetryType
{
if (!requestStartDate)
{
MSID_LOG_WITH_CTX(MSIDLogLevelError, nil, @"trackPerfTelemetryWithLastRequest called with nil request start date");
return;
}

NSDate *responseDate = [NSDate date];
NSTimeInterval totalTime = [responseDate timeIntervalSinceDate:requestStartDate];
NSTimeInterval ipcRequestTime = self.requestReceivedTimeStamp ? [self.requestReceivedTimeStamp timeIntervalSinceDate:requestStartDate] : 0;
NSTimeInterval ipcResponseTime = self.responseGenerationTimeStamp ? [responseDate timeIntervalSinceDate:self.responseGenerationTimeStamp] : 0;

[telemetry trackSSOExtensionPerformanceWithType:telemetryType
totalPerfNumber:totalTime
ipcRequestPerfNumber:ipcRequestTime
ipcResponsePerfNumber:ipcResponseTime];
}

#endif

@end
Original file line number Diff line number Diff line change
Expand Up @@ -103,12 +103,6 @@ - (nullable instancetype)initWithRequestParameters:(MSIDRequestParameters *)requ

__typeof__(self) strongSelf = weakSelf;

#if !EXCLUDE_FROM_MSALCPP
[operationResponse trackPerfTelemetryWithLastRequest:strongSelf.lastRequestTelemetry
requestStartDate:strongSelf.requestSentDate
telemetryType:MSID_PERF_TELEMETRY_GETACCOUNTS_TYPE];
#endif

MSIDGetAccountsRequestCompletionBlock completionBlock = strongSelf.requestCompletionBlock;
strongSelf.requestCompletionBlock = nil;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,6 @@ - (nullable instancetype)initWithRequestParameters:(MSIDRequestParameters *)requ

__typeof__(self) strongSelf = weakSelf;

#if !EXCLUDE_FROM_MSALCPP
[operationResponse trackPerfTelemetryWithLastRequest:strongSelf.lastRequestTelemetry
requestStartDate:strongSelf.requestSentDate
telemetryType:MSID_PERF_TELEMETRY_GETDEVICEINFO_TYPE];
#endif

MSIDGetDeviceInfoRequestCompletionBlock completionBlock = strongSelf.requestCompletionBlock;
strongSelf.requestCompletionBlock = nil;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,6 @@ - (nullable instancetype)initWithRequestParameters:(nonnull MSIDInteractiveReque

__typeof__(self) strongSelf = weakSelf;

#if !EXCLUDE_FROM_MSALCPP
[operationResponse trackPerfTelemetryWithLastRequest:strongSelf.lastRequestTelemetry
requestStartDate:strongSelf.requestSentDate
telemetryType:MSID_PERF_TELEMETRY_SIGNOUT_TYPE];
#endif

MSIDSignoutRequestCompletionBlock completionBlock = strongSelf.requestCompletionBlock;
strongSelf.requestCompletionBlock = nil;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,6 @@ - (instancetype)initWithRequestParameters:(MSIDRequestParameters *)parameters
strongSelf.ssoTokenResponseHandler.externalCacheSeeder = strongSelf.externalCacheSeeder;
#endif

#if !EXCLUDE_FROM_MSALCPP
[operationResponse trackPerfTelemetryWithLastRequest:strongSelf.lastRequestTelemetry
requestStartDate:strongSelf.requestSentDate
telemetryType:MSID_PERF_TELEMETRY_SILENT_TYPE];
#endif

[strongSelf.ssoTokenResponseHandler handleOperationResponse:operationResponse
requestParameters:strongSelf.requestParameters
tokenResponseValidator:strongSelf.tokenResponseValidator
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,8 @@

@end

@interface MSIDRequestPerformanceInfo : NSObject <NSSecureCoding>

@property (nonatomic, nullable) NSMutableArray<NSNumber *> *totalNumbers;
@property (nonatomic, nullable) NSMutableArray<NSNumber *> *ipcRequestNumbers;
@property (nonatomic, nullable) NSMutableArray<NSNumber *> *ipcResponseNumbers;

@end

NS_ASSUME_NONNULL_BEGIN

extern NSString * _Nonnull const MSID_PERF_TELEMETRY_SILENT_TYPE;
extern NSString * _Nonnull const MSID_PERF_TELEMETRY_SIGNOUT_TYPE;
extern NSString * _Nonnull const MSID_PERF_TELEMETRY_GETACCOUNTS_TYPE;
extern NSString * _Nonnull const MSID_PERF_TELEMETRY_GETDEVICEINFO_TYPE;

@class MSIDCurrentRequestTelemetrySerializedItem;

@interface MSIDLastRequestTelemetry : NSObject <MSIDTelemetryStringSerializable, NSSecureCoding>
Expand All @@ -69,11 +56,6 @@ extern NSString * _Nonnull const MSID_PERF_TELEMETRY_GETDEVICEINFO_TYPE;

- (void)increaseSilentSuccessfulCount;

- (void)trackSSOExtensionPerformanceWithType:(NSString *)type
totalPerfNumber:(NSTimeInterval)totalPerfNumber
ipcRequestPerfNumber:(NSTimeInterval)ipcRequestPerfNumber
ipcResponsePerfNumber:(NSTimeInterval)ipcResponsePerfNumber;

@end

NS_ASSUME_NONNULL_END
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,39 +29,6 @@
#import "NSKeyedUnarchiver+MSIDExtensions.h"
#import "MSIDRequestTelemetryConstants.h"

@implementation MSIDRequestPerformanceInfo

#define kTotalNumbers @"totalNumbers"
#define kIpcRequestNumbers @"ipcRequestNumbers"
#define kIpcResponseNumbers @"ipcResponseNumbers"

- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:self.totalNumbers forKey:kTotalNumbers];
[encoder encodeObject:self.ipcRequestNumbers forKey:kIpcRequestNumbers];
[encoder encodeObject:self.ipcResponseNumbers forKey:kIpcResponseNumbers];
}

- (instancetype)initWithCoder:(NSCoder *)decoder
{
self = [super init];
if (self)
{
NSSet *classes = [NSSet setWithObjects:[NSMutableArray class], [NSNumber class], nil];
self.totalNumbers = [decoder decodeObjectOfClasses:classes forKey:kTotalNumbers];
self.ipcRequestNumbers = [decoder decodeObjectOfClasses:classes forKey:kIpcRequestNumbers];
self.ipcResponseNumbers = [decoder decodeObjectOfClasses:classes forKey:kIpcResponseNumbers];
}
return self;
}

+ (BOOL)supportsSecureCoding
{
return YES;
}

@end

@implementation MSIDRequestTelemetryErrorInfo

#define kApiId @"apiId"
Expand Down Expand Up @@ -108,17 +75,11 @@ - (nonnull id)copyWithZone:(nullable NSZone *)zone

@end

NSString * _Nonnull const MSID_PERF_TELEMETRY_SILENT_TYPE = @"silent";
NSString * _Nonnull const MSID_PERF_TELEMETRY_SIGNOUT_TYPE = @"signout";
NSString * _Nonnull const MSID_PERF_TELEMETRY_GETACCOUNTS_TYPE = @"accounts";
NSString * _Nonnull const MSID_PERF_TELEMETRY_GETDEVICEINFO_TYPE = @"deviceinfo";

@interface MSIDLastRequestTelemetry()

@property (nonatomic) NSMutableArray<MSIDRequestTelemetryErrorInfo *> *errorsInfo;
@property (nonatomic) NSInteger schemaVersion;
@property (nonatomic) NSInteger silentSuccessfulCount;
@property (nonatomic) NSMutableDictionary<NSString *, MSIDRequestPerformanceInfo *> *perfTelemetry;
@property (nonatomic) NSMutableArray<NSString *> *platformFields;
@property (nonatomic) dispatch_queue_t synchronizationQueue;
@property (nonatomic) MSIDLastRequestTelemetrySerializedItem *telemetrySerializedItem;
Expand Down Expand Up @@ -232,61 +193,6 @@ - (void)increaseSilentSuccessfulCount
});
}

- (void)trackSSOExtensionPerformanceWithType:(NSString *)type
totalPerfNumber:(NSTimeInterval)totalPerfNumber
ipcRequestPerfNumber:(NSTimeInterval)ipcRequestPerfNumber
ipcResponsePerfNumber:(NSTimeInterval)ipcResponsePerfNumber
{
dispatch_barrier_async(self.synchronizationQueue, ^{

[self trackSSOExtensionPerformanceWithTypeImpl:type
totalPerfNumber:totalPerfNumber
ipcRequestPerfNumber:ipcRequestPerfNumber
ipcResponsePerfNumber:ipcResponsePerfNumber];

[self saveTelemetryToDisk];
});
}

- (void)trackSSOExtensionPerformanceWithTypeImpl:(NSString *)type
totalPerfNumber:(NSTimeInterval)totalPerfNumber
ipcRequestPerfNumber:(NSTimeInterval)ipcRequestPerfNumber
ipcResponsePerfNumber:(NSTimeInterval)ipcResponsePerfNumber
{
if (!self.perfTelemetry)
{
self.perfTelemetry = [NSMutableDictionary new];
}

MSIDRequestPerformanceInfo *perfInfo = self.perfTelemetry[type];

if (!perfInfo)
{
perfInfo = [MSIDRequestPerformanceInfo new];
}

if (!perfInfo.totalNumbers)
{
perfInfo.totalNumbers = [NSMutableArray new];
}

if (!perfInfo.ipcRequestNumbers)
{
perfInfo.ipcRequestNumbers = [NSMutableArray new];
}

if (!perfInfo.ipcResponseNumbers)
{
perfInfo.ipcResponseNumbers = [NSMutableArray new];
}

[perfInfo.totalNumbers addObject:@(totalPerfNumber)];
[perfInfo.ipcRequestNumbers addObject:@(ipcRequestPerfNumber)];
[perfInfo.ipcResponseNumbers addObject:@(ipcResponsePerfNumber)];

self.perfTelemetry[type] = perfInfo;
}

#pragma mark - MSIDTelemetryStringSerializable

- (NSString *)telemetryString
Expand All @@ -304,14 +210,12 @@ - (NSString *)telemetryString
#define kSchemaVersion @"schemaVersion"
#define kSilentSuccessfulCount @"silentSuccessfulCount"
#define kErrorsInfo @"errorsInfo"
#define kPerfTelemetry @"perfTelemetry"

- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeInteger:_schemaVersion forKey:kSchemaVersion];
[encoder encodeInteger:_silentSuccessfulCount forKey:kSilentSuccessfulCount];
[encoder encodeObject:_errorsInfo forKey:kErrorsInfo];
[encoder encodeObject:_perfTelemetry forKey:kPerfTelemetry];
}

- (instancetype)initWithCoder:(NSCoder *)decoder
Expand All @@ -322,10 +226,7 @@ - (instancetype)initWithCoder:(NSCoder *)decoder
NSSet *classes = [NSSet setWithObjects:[NSMutableArray class], [NSString class], [MSIDRequestTelemetryErrorInfo class], nil];
NSMutableArray<MSIDRequestTelemetryErrorInfo *> *errorsInfo = [decoder decodeObjectOfClasses:classes forKey:kErrorsInfo];

NSSet *perfClasses = [NSSet setWithObjects:[NSMutableDictionary class], [NSString class], [MSIDRequestPerformanceInfo class], nil];
NSDictionary *perfTelemetry = [decoder decodeObjectOfClasses:perfClasses forKey:kPerfTelemetry];

return [self initFromDecodedObjectWithSchemaVersion:schemaVersion silentSuccessfulCount:silentSuccessfulCount errorsInfo:errorsInfo perfTelemetry:perfTelemetry];
return [self initFromDecodedObjectWithSchemaVersion:schemaVersion silentSuccessfulCount:silentSuccessfulCount errorsInfo:errorsInfo];
}

+ (BOOL)supportsSecureCoding
Expand All @@ -349,47 +250,9 @@ - (MSIDLastRequestTelemetrySerializedItem *)createSerializedItem
NSMutableArray *platformFields = [NSMutableArray new];
[platformFields addObjectsFromArray:self.platformFields];

NSString *serializedPerfTelemetry = [self serializedPerfTelemetry];

if (![NSString msidIsStringNilOrBlank:serializedPerfTelemetry])
{
[platformFields addObject:[self serializedPerfTelemetry]];
}

return [[MSIDLastRequestTelemetrySerializedItem alloc] initWithSchemaVersion:[NSNumber numberWithInteger:self.schemaVersion] defaultFields:defaultFields errorInfo:self->_errorsInfo platformFields:platformFields];
}

- (NSString *)serializedPerfTelemetry
{
if (![self.perfTelemetry count])
{
return nil;
}

NSString *serializedPerfTelemetry = [NSString stringWithFormat:@"%@;%@;%@;%@;",
[self serializedAverageForType:MSID_PERF_TELEMETRY_SILENT_TYPE],
[self serializedAverageForType:MSID_PERF_TELEMETRY_SIGNOUT_TYPE],
[self serializedAverageForType:MSID_PERF_TELEMETRY_GETACCOUNTS_TYPE],
[self serializedAverageForType:MSID_PERF_TELEMETRY_GETDEVICEINFO_TYPE]];
return serializedPerfTelemetry;
}

- (NSString *)serializedAverageForType:(NSString *)type
{
MSIDRequestPerformanceInfo *perfInfo = self.perfTelemetry[type];

if (!perfInfo)
{
return [NSString stringWithFormat:@"%@:", type];
}

NSNumber *totalAverage = perfInfo.totalNumbers ? [perfInfo.totalNumbers valueForKeyPath:@"@avg.self"] : nil;
NSNumber *ipcRequestAverage = perfInfo.ipcRequestNumbers ? [perfInfo.ipcRequestNumbers valueForKeyPath:@"@avg.self"] : nil;
NSNumber *ipcResponseAverage = perfInfo.ipcResponseNumbers ? [perfInfo.ipcResponseNumbers valueForKeyPath:@"@avg.self"] : nil;

return [NSString stringWithFormat:@"%@:%f:%f:%f", type, [totalAverage doubleValue], [ipcRequestAverage doubleValue], [ipcResponseAverage doubleValue]];
}

#pragma mark - Update object

- (void)addErrorInfo:(MSIDRequestTelemetryErrorInfo *)errorInfo
Expand Down Expand Up @@ -421,8 +284,6 @@ - (void)resetTelemetry
{
self->_errorsInfo = nil;
}

self.perfTelemetry = [NSMutableDictionary new];

[self saveTelemetryToDisk];
});
Expand Down Expand Up @@ -456,7 +317,9 @@ - (void)saveTelemetryToDisk
}
}

- (instancetype)initFromDecodedObjectWithSchemaVersion:(NSInteger)schemaVersion silentSuccessfulCount:(NSInteger)silentSuccessfulCount errorsInfo:(NSMutableArray<MSIDRequestTelemetryErrorInfo *>*) errorsInfo perfTelemetry:(NSDictionary *)perfTelemetry
- (instancetype)initFromDecodedObjectWithSchemaVersion:(NSInteger)schemaVersion
silentSuccessfulCount:(NSInteger)silentSuccessfulCount
errorsInfo:(NSMutableArray<MSIDRequestTelemetryErrorInfo *>*) errorsInfo
{
self = [super init];
if (self)
Expand All @@ -467,7 +330,6 @@ - (instancetype)initFromDecodedObjectWithSchemaVersion:(NSInteger)schemaVersion
_silentSuccessfulCount = silentSuccessfulCount;
_errorsInfo = errorsInfo;
_synchronizationQueue = [self initializeDispatchQueue];
_perfTelemetry = [[NSMutableDictionary alloc] initWithDictionary:perfTelemetry];
_platformFields = [NSMutableArray<NSString *> new];
}
else
Expand Down
Loading

0 comments on commit 3dad58d

Please sign in to comment.