react-native-stallion 2.3.0-alpha.1 → 2.3.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -12,29 +12,42 @@
|
|
|
12
12
|
#import "StallionMeta.h"
|
|
13
13
|
#import "StallionMetaConstants.h"
|
|
14
14
|
#import "StallionObjConstants.h"
|
|
15
|
+
#import <signal.h>
|
|
16
|
+
#import <execinfo.h>
|
|
17
|
+
|
|
18
|
+
// Forward declarations
|
|
19
|
+
void handleException(NSException *exception);
|
|
20
|
+
void handleSignal(int signal);
|
|
15
21
|
|
|
16
22
|
@implementation StallionExceptionHandler
|
|
17
23
|
|
|
18
24
|
NSUncaughtExceptionHandler *_defaultExceptionHandler;
|
|
25
|
+
BOOL exceptionAlertDismissed = FALSE;
|
|
19
26
|
|
|
20
27
|
+ (void)initExceptionHandler {
|
|
21
28
|
if (!_defaultExceptionHandler) {
|
|
22
29
|
_defaultExceptionHandler = NSGetUncaughtExceptionHandler();
|
|
23
30
|
}
|
|
24
31
|
NSSetUncaughtExceptionHandler(&handleException);
|
|
32
|
+
|
|
33
|
+
signal(SIGABRT, handleSignal);
|
|
34
|
+
signal(SIGILL, handleSignal);
|
|
35
|
+
signal(SIGSEGV, handleSignal);
|
|
36
|
+
signal(SIGFPE, handleSignal);
|
|
37
|
+
signal(SIGBUS, handleSignal);
|
|
25
38
|
}
|
|
26
39
|
|
|
27
|
-
|
|
40
|
+
@end
|
|
28
41
|
|
|
29
|
-
|
|
42
|
+
#pragma mark - Shared Rollback Logic
|
|
43
|
+
|
|
44
|
+
static void performStallionRollback(NSString *errorString) {
|
|
30
45
|
StallionStateManager *stateManager = [StallionStateManager sharedInstance];
|
|
31
46
|
StallionMeta *meta = stateManager.stallionMeta;
|
|
32
47
|
BOOL isAutoRollback = !stateManager.isMounted;
|
|
33
|
-
|
|
34
|
-
NSString *readableError = [exception reason];
|
|
35
48
|
|
|
36
|
-
if (
|
|
37
|
-
|
|
49
|
+
if (errorString.length > 900) {
|
|
50
|
+
errorString = [errorString substringToIndex:900];
|
|
38
51
|
}
|
|
39
52
|
|
|
40
53
|
if (meta.switchState == SwitchStateProd) {
|
|
@@ -42,12 +55,12 @@ void handleException(NSException *exception) {
|
|
|
42
55
|
|
|
43
56
|
[[StallionEventHandler sharedInstance] cacheEvent:StallionObjConstants.exception_prod_event
|
|
44
57
|
eventPayload:@{
|
|
45
|
-
@"meta":
|
|
58
|
+
@"meta": errorString,
|
|
46
59
|
StallionObjConstants.release_hash_key: currentHash,
|
|
47
60
|
StallionObjConstants.is_auto_rollback_key: isAutoRollback ? @"true" : @"false"
|
|
48
61
|
}];
|
|
49
62
|
if (isAutoRollback) {
|
|
50
|
-
[StallionSlotManager rollbackProdWithAutoRollback:YES errorString:
|
|
63
|
+
[StallionSlotManager rollbackProdWithAutoRollback:YES errorString:errorString];
|
|
51
64
|
}
|
|
52
65
|
|
|
53
66
|
} else if (meta.switchState == SwitchStateStage) {
|
|
@@ -58,7 +71,7 @@ void handleException(NSException *exception) {
|
|
|
58
71
|
|
|
59
72
|
[[StallionEventHandler sharedInstance] cacheEvent:StallionObjConstants.exception_stage_event
|
|
60
73
|
eventPayload:@{
|
|
61
|
-
@"meta":
|
|
74
|
+
@"meta": errorString,
|
|
62
75
|
StallionObjConstants.release_hash_key: meta.stageNewHash,
|
|
63
76
|
StallionObjConstants.is_auto_rollback_key: isAutoRollback ? @"true" : @"false"
|
|
64
77
|
}];
|
|
@@ -67,7 +80,7 @@ void handleException(NSException *exception) {
|
|
|
67
80
|
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Stallion Exception Handler"
|
|
68
81
|
message:[NSString stringWithFormat:@"%@\n%@",
|
|
69
82
|
@"A crash occurred in the app. Build was rolled back. Check crash report below. Continue crash to invoke other exception handlers. \n \n",
|
|
70
|
-
|
|
83
|
+
errorString]
|
|
71
84
|
preferredStyle:UIAlertControllerStyleAlert];
|
|
72
85
|
|
|
73
86
|
[alert addAction:[UIAlertAction actionWithTitle:@"Continue Crash"
|
|
@@ -89,11 +102,83 @@ void handleException(NSException *exception) {
|
|
|
89
102
|
}
|
|
90
103
|
}
|
|
91
104
|
|
|
92
|
-
|
|
105
|
+
if (meta.switchState == SwitchStateProd) {
|
|
106
|
+
NSString *currentHash = [meta getActiveReleaseHash] ?: @"";
|
|
107
|
+
|
|
108
|
+
[[StallionEventHandler sharedInstance] cacheEvent:StallionObjConstants.exception_prod_event
|
|
109
|
+
eventPayload:@{
|
|
110
|
+
@"meta": errorString,
|
|
111
|
+
StallionObjConstants.release_hash_key: currentHash,
|
|
112
|
+
StallionObjConstants.is_auto_rollback_key: isAutoRollback ? @"true" : @"false"
|
|
113
|
+
}];
|
|
114
|
+
if (isAutoRollback) {
|
|
115
|
+
[StallionSlotManager rollbackProdWithAutoRollback:YES errorString:errorString];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
} else if (meta.switchState == SwitchStateStage) {
|
|
119
|
+
|
|
120
|
+
if(isAutoRollback) {
|
|
121
|
+
[StallionSlotManager rollbackStage];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
[[StallionEventHandler sharedInstance] cacheEvent:StallionObjConstants.exception_stage_event
|
|
125
|
+
eventPayload:@{
|
|
126
|
+
@"meta": errorString,
|
|
127
|
+
StallionObjConstants.release_hash_key: meta.stageNewHash,
|
|
128
|
+
StallionObjConstants.is_auto_rollback_key: isAutoRollback ? @"true" : @"false"
|
|
129
|
+
}];
|
|
130
|
+
|
|
131
|
+
if(!exceptionAlertDismissed) {
|
|
132
|
+
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Stallion Exception Handler"
|
|
133
|
+
message:[NSString stringWithFormat:@"%@\n%@",
|
|
134
|
+
@"A crash occurred in the app. Build was rolled back. Check crash report below. Continue crash to invoke other exception handlers.\n\n",
|
|
135
|
+
errorString]
|
|
136
|
+
preferredStyle:UIAlertControllerStyleAlert];
|
|
137
|
+
|
|
138
|
+
[alert addAction:[UIAlertAction actionWithTitle:@"Continue Crash"
|
|
139
|
+
style:UIAlertActionStyleDefault
|
|
140
|
+
handler:^(UIAlertAction *action) {
|
|
141
|
+
exceptionAlertDismissed = TRUE;
|
|
142
|
+
}]];
|
|
143
|
+
|
|
144
|
+
UIApplication *app = [UIApplication sharedApplication];
|
|
145
|
+
UIViewController *rootViewController = app.delegate.window.rootViewController;
|
|
146
|
+
|
|
147
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
148
|
+
[rootViewController presentViewController:alert animated:YES completion:nil];
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
while (exceptionAlertDismissed == FALSE) {
|
|
152
|
+
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
void handleException(NSException *exception) {
|
|
159
|
+
NSString *readableError = [exception reason] ?: @"Unknown exception";
|
|
160
|
+
performStallionRollback(readableError);
|
|
161
|
+
|
|
162
|
+
// Call default exception handler if available
|
|
93
163
|
if (_defaultExceptionHandler) {
|
|
94
164
|
_defaultExceptionHandler(exception);
|
|
95
165
|
}
|
|
96
166
|
}
|
|
97
167
|
|
|
98
|
-
|
|
168
|
+
void handleSignal(int signalVal) {
|
|
169
|
+
void *callstack[128];
|
|
170
|
+
int frames = backtrace(callstack, 128);
|
|
171
|
+
char **symbols = backtrace_symbols(callstack, frames);
|
|
172
|
+
|
|
173
|
+
NSMutableString *stackTrace = [NSMutableString stringWithFormat:@"Signal %d was raised.\n", signalVal];
|
|
174
|
+
for (int i = 0; i < frames; ++i) {
|
|
175
|
+
[stackTrace appendFormat:@"%s\n", symbols[i]];
|
|
176
|
+
}
|
|
177
|
+
free(symbols);
|
|
178
|
+
|
|
179
|
+
performStallionRollback(stackTrace);
|
|
99
180
|
|
|
181
|
+
// Restore default and raise to proceed with crash
|
|
182
|
+
signal(signalVal, SIG_DFL);
|
|
183
|
+
raise(signalVal);
|
|
184
|
+
}
|
package/package.json
CHANGED
|
@@ -94,9 +94,9 @@ export const useStallionEvents = (refreshMeta, setProgress, configState) => {
|
|
|
94
94
|
};
|
|
95
95
|
}, [refreshMeta, setProgress, popEventsDebounced]);
|
|
96
96
|
useEffect(() => {
|
|
97
|
-
|
|
97
|
+
setTimeout(() => {
|
|
98
98
|
onLaunchNative('Success');
|
|
99
|
-
});
|
|
99
|
+
}, 100);
|
|
100
100
|
}, []);
|
|
101
101
|
useEffect(() => {
|
|
102
102
|
popEventsDebounced();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useCallback","useMemo","NativeEventEmitter","NativeEventTypesProd","STALLION_NATIVE_EVENT","NativeEventTypesStage","stallionEventEmitter","acknowledgeEventsNative","onLaunchNative","popEventsNative","StallionNativeModule","useApiClient","API_PATHS","debounce","REFRESH_META_EVENTS","DOWNLOAD_COMPLETE_PROD","ROLLED_BACK_PROD","AUTO_ROLLED_BACK_PROD","STABILIZED_PROD","DOWNLOAD_COMPLETE_STAGE","DOWNLOAD_ERROR_STAGE","INSTALLED_STAGE","STALLION_EVENT_DEBOUNCE_INTERVAL","processStallionEvent","eventString","JSON","parse","_","useStallionEvents","refreshMeta","setProgress","configState","getData","syncStallionEvents","stallionEvents","projectId","LOG_EVENTS","eventData","then","res","success","eventIds","map","event","eventId","eventIdString","stringify","popEvents","eventsString","eventsArr","length","requestAnimationFrame","popEventsDebounced","eventEmitter","addListener","nativeEventString","eventType","type","DOWNLOAD_STARTED_PROD","DOWNLOAD_ERROR_PROD","INSTALLED_PROD","SYNC_ERROR_PROD","EXCEPTION_PROD","emit","DOWNLOAD_PROGRESS_STAGE","progress","Number","removeAllListeners"],"sourceRoot":"../../../../src","sources":["main/state/useStallionEvents.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["useEffect","useCallback","useMemo","NativeEventEmitter","NativeEventTypesProd","STALLION_NATIVE_EVENT","NativeEventTypesStage","stallionEventEmitter","acknowledgeEventsNative","onLaunchNative","popEventsNative","StallionNativeModule","useApiClient","API_PATHS","debounce","REFRESH_META_EVENTS","DOWNLOAD_COMPLETE_PROD","ROLLED_BACK_PROD","AUTO_ROLLED_BACK_PROD","STABILIZED_PROD","DOWNLOAD_COMPLETE_STAGE","DOWNLOAD_ERROR_STAGE","INSTALLED_STAGE","STALLION_EVENT_DEBOUNCE_INTERVAL","processStallionEvent","eventString","JSON","parse","_","useStallionEvents","refreshMeta","setProgress","configState","getData","syncStallionEvents","stallionEvents","projectId","LOG_EVENTS","eventData","then","res","success","eventIds","map","event","eventId","eventIdString","stringify","popEvents","eventsString","eventsArr","length","requestAnimationFrame","popEventsDebounced","eventEmitter","addListener","nativeEventString","eventType","type","DOWNLOAD_STARTED_PROD","DOWNLOAD_ERROR_PROD","INSTALLED_PROD","SYNC_ERROR_PROD","EXCEPTION_PROD","emit","DOWNLOAD_PROGRESS_STAGE","progress","Number","removeAllListeners","setTimeout"],"sourceRoot":"../../../../src","sources":["main/state/useStallionEvents.ts"],"mappings":"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"}
|