Skip to content

Commit

Permalink
Sentry. (#603)
Browse files Browse the repository at this point in the history
* WIP: Report crashes to Sentry.

To-do:

- [ ] Tests.
- [ ] Catch signals caused by the library (in progress).
- [ ] Send device info with report.
- [ ] Get stack trace line numbers to work in Sentry.

* Sentry: send device info.

* ARTChannels doesn't really have a ARTRest.

* Crash reports with (almost) full device info.

* Fix ARTRest exception handler on constructor.

* ARTRest: don't recover from exceptions in exception-recovering code.

* Don't recover from expected exceptions.

* Install KSCrash once, on ARTRest's constructor.

* ARTSentry: only report crashes from Ably.

* Wrap every callback from the user to call asynchronously.

This way, crashes happening in them won't be reported, since their
stack trace won't contain any Ably method.

* Report to Sentry on unexpected message serial.

* Use KSCrashAblyFork.

* Serialize state transitions in a GCD queue.

State transitions can occur both from WebSockets (which run on their
on their own threads) and from user's actions, so they are intrinsically concurrent and need to be explicitly synchronized.

The library is still not thread-safe, but it's a start and a big
part of achieving at least internal thread-safety.

* Bring back breadcrumbs.

* Bump KSCrashAblyFork version.

* Prevent deadlock when dispatch_syncing twice to same queue.

* Gzip Sentry reports.

* Serialize ARTLog.
  • Loading branch information
tcard committed May 15, 2017
1 parent fb54ee0 commit f79f8f7
Show file tree
Hide file tree
Showing 46 changed files with 1,965 additions and 200 deletions.
1 change: 1 addition & 0 deletions Ably.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ Pod::Spec.new do |s|
s.module_map = 'Source/Ably.modulemap'
s.dependency 'SocketRocket', '0.5.1'
s.dependency 'msgpack', '0.1.8'
s.dependency 'KSCrashAblyFork', '1.15.8-ably-1'
end
162 changes: 95 additions & 67 deletions Ably.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

69 changes: 67 additions & 2 deletions Examples/Tests/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,71 @@
PODS:
- Ably (0.8.13):
- KSCrashAblyFork (= 1.15.8-ably-1)
- msgpack (= 0.1.8)
- SocketRocket (= 0.5.1)
- KSCrashAblyFork (1.15.8-ably-1):
- KSCrashAblyFork/Installations (= 1.15.8-ably-1)
- KSCrashAblyFork/Installations (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting
- KSCrashAblyFork/Recording (1.15.8-ably-1):
- KSCrashAblyFork/Recording/Tools (= 1.15.8-ably-1)
- KSCrashAblyFork/Recording/Tools (1.15.8-ably-1)
- KSCrashAblyFork/Reporting (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/MessageUI (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Sinks (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Tools (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Alert (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/AppleFmt (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Base (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Basic (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/GZip (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/JSON (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Sets (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Stringify (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Tools (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Alert (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/AppleFmt (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/Base (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Basic (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/GZip (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/JSON (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/Sets (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/AppleFmt
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/Basic
- KSCrashAblyFork/Reporting/Filters/GZip
- KSCrashAblyFork/Reporting/Filters/JSON
- KSCrashAblyFork/Reporting/Filters/Stringify
- KSCrashAblyFork/Reporting/Filters/Stringify (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/Tools (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/MessageUI (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Sinks (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters
- KSCrashAblyFork/Reporting/Tools
- KSCrashAblyFork/Reporting/Tools (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- msgpack (0.1.8)
- SocketRocket (0.5.1)

Expand All @@ -13,10 +77,11 @@ EXTERNAL SOURCES:
:path: "../.."

SPEC CHECKSUMS:
Ably: faaabeef80b7023bb724829cfd35d658d016ec08
Ably: 63ec7707199d68b2bc125ebb3d728a0ae34dbb4e
KSCrashAblyFork: 6d0dd5b033710109a8fdde28103eeb0e7f9ba1f7
msgpack: 97491d2ea799408f4694f2c7d7fd79baf77853dd
SocketRocket: d57c7159b83c3c6655745cd15302aa24b6bae531

PODFILE CHECKSUM: 6af34bf7f91045b23539816c1d0cfe253bec5ea5

COCOAPODS: 1.0.1
COCOAPODS: 1.2.0
100 changes: 50 additions & 50 deletions Examples/Tests/Tests.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions Examples/Tests/Tests/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
Expand Down
1 change: 1 addition & 0 deletions Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ podspec :path => 'Ably.podspec'
def project_pods
pod 'SocketRocket', '0.5.1'
pod 'msgpack', '0.1.8'
pod 'KSCrashAblyFork', '1.15.8-ably-1'
end

def test_pods
Expand Down
69 changes: 67 additions & 2 deletions Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,5 +1,68 @@
PODS:
- Aspects (1.4.1)
- KSCrashAblyFork (1.15.8-ably-1):
- KSCrashAblyFork/Installations (= 1.15.8-ably-1)
- KSCrashAblyFork/Installations (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting
- KSCrashAblyFork/Recording (1.15.8-ably-1):
- KSCrashAblyFork/Recording/Tools (= 1.15.8-ably-1)
- KSCrashAblyFork/Recording/Tools (1.15.8-ably-1)
- KSCrashAblyFork/Reporting (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/MessageUI (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Sinks (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Tools (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Alert (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/AppleFmt (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Base (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Basic (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/GZip (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/JSON (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Sets (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Stringify (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Tools (= 1.15.8-ably-1)
- KSCrashAblyFork/Reporting/Filters/Alert (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/AppleFmt (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/Base (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Basic (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/GZip (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/JSON (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/Sets (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/AppleFmt
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/Basic
- KSCrashAblyFork/Reporting/Filters/GZip
- KSCrashAblyFork/Reporting/Filters/JSON
- KSCrashAblyFork/Reporting/Filters/Stringify
- KSCrashAblyFork/Reporting/Filters/Stringify (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters/Base
- KSCrashAblyFork/Reporting/Filters/Tools (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/MessageUI (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Sinks (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- KSCrashAblyFork/Reporting/Filters
- KSCrashAblyFork/Reporting/Tools
- KSCrashAblyFork/Reporting/Tools (1.15.8-ably-1):
- KSCrashAblyFork/Recording
- msgpack (0.1.8)
- Nimble (4.1.0)
- Quick (0.9.3)
Expand All @@ -8,6 +71,7 @@ PODS:

DEPENDENCIES:
- Aspects
- KSCrashAblyFork (= 1.15.8-ably-1)
- msgpack (= 0.1.8)
- Nimble (= 4.1.0)
- Quick (= 0.9.3)
Expand All @@ -16,12 +80,13 @@ DEPENDENCIES:

SPEC CHECKSUMS:
Aspects: 7595ba96a6727a58ebcbfc954497fc5d2fdde546
KSCrashAblyFork: 6d0dd5b033710109a8fdde28103eeb0e7f9ba1f7
msgpack: 97491d2ea799408f4694f2c7d7fd79baf77853dd
Nimble: 97a0a4cae5124c117115634b2d055d8c97d0af19
Quick: 13a2a2b19a5d8e3ed4fd0c36ee46597fd77ebf71
SocketRocket: d57c7159b83c3c6655745cd15302aa24b6bae531
SwiftyJSON: 96918c1bf505efa50c4f72957018dd3452090c9c

PODFILE CHECKSUM: c59fef6e348f90fbaa529d13373c2958f7b9b642
PODFILE CHECKSUM: 160cf53ef13d4ed09e5e81c2f2840457b07e012a

COCOAPODS: 1.1.1
COCOAPODS: 1.2.0
2 changes: 2 additions & 0 deletions Source/ARTAuth+Private.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ ART_ASSUME_NONNULL_BEGIN
// Private TimeOffset setter for testing only
- (void)setTimeOffset:(NSTimeInterval)offset;

- (NSString *_Nullable)appId;

@end

ART_ASSUME_NONNULL_END
Loading

0 comments on commit f79f8f7

Please sign in to comment.