rapns 3.2.0-java → 3.3.0-java

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.
Files changed (36) hide show
  1. data/CHANGELOG.md +5 -0
  2. data/README.md +9 -18
  3. data/lib/generators/templates/rapns.rb +5 -0
  4. data/lib/rapns.rb +4 -0
  5. data/lib/rapns/apns_feedback.rb +1 -0
  6. data/lib/rapns/configuration.rb +4 -3
  7. data/lib/rapns/daemon.rb +20 -4
  8. data/lib/rapns/daemon/apns/feedback_receiver.rb +9 -11
  9. data/lib/rapns/daemon/delivery.rb +3 -20
  10. data/lib/rapns/daemon/delivery_queue.rb +2 -2
  11. data/lib/rapns/daemon/feeder.rb +5 -10
  12. data/lib/rapns/daemon/gcm/delivery.rb +19 -9
  13. data/lib/rapns/daemon/store/active_record.rb +74 -0
  14. data/lib/rapns/daemon/store/active_record/reconnectable.rb +61 -0
  15. data/lib/rapns/gcm/notification.rb +5 -4
  16. data/lib/rapns/gcm/registration_ids_count_validator.rb +1 -1
  17. data/lib/rapns/logger.rb +6 -2
  18. data/lib/rapns/push.rb +1 -0
  19. data/lib/rapns/reflection.rb +1 -1
  20. data/lib/rapns/version.rb +1 -1
  21. data/spec/unit/apns/notification_spec.rb +2 -0
  22. data/spec/unit/apns_feedback_spec.rb +5 -0
  23. data/spec/unit/configuration_spec.rb +1 -1
  24. data/spec/unit/daemon/apns/delivery_spec.rb +7 -64
  25. data/spec/unit/daemon/apns/feedback_receiver_spec.rb +2 -2
  26. data/spec/unit/daemon/feeder_spec.rb +6 -58
  27. data/spec/unit/daemon/gcm/delivery_spec.rb +49 -57
  28. data/spec/unit/daemon/{database_reconnectable_spec.rb → store/active_record/reconnectable_spec.rb} +4 -3
  29. data/spec/unit/daemon/store/active_record_spec.rb +181 -0
  30. data/spec/unit/daemon_spec.rb +27 -7
  31. data/spec/unit/gcm/notification_spec.rb +2 -9
  32. data/spec/unit/push_spec.rb +5 -0
  33. data/spec/unit/reflection_spec.rb +0 -4
  34. data/spec/unit_spec_helper.rb +4 -1
  35. metadata +28 -25
  36. data/lib/rapns/daemon/database_reconnectable.rb +0 -57
@@ -1,57 +0,0 @@
1
- class PGError < StandardError; end if !defined?(PGError)
2
- class Mysql; class Error < StandardError; end; end if !defined?(Mysql)
3
- module Mysql2; class Error < StandardError; end; end if !defined?(Mysql2)
4
- module ActiveRecord; end
5
- class ActiveRecord::JDBCError < StandardError; end if !defined?(ActiveRecord::JDBCError)
6
-
7
- module Rapns
8
- module Daemon
9
- module DatabaseReconnectable
10
- ADAPTER_ERRORS = [ActiveRecord::StatementInvalid, PGError, Mysql::Error,
11
- Mysql2::Error, ActiveRecord::JDBCError]
12
-
13
- def with_database_reconnect_and_retry
14
- begin
15
- ActiveRecord::Base.connection_pool.with_connection do
16
- yield
17
- end
18
- rescue *ADAPTER_ERRORS => e
19
- Rapns.logger.error(e)
20
- database_connection_lost
21
- retry
22
- end
23
- end
24
-
25
- def database_connection_lost
26
- Rapns.logger.warn("Lost connection to database, reconnecting...")
27
- attempts = 0
28
- loop do
29
- begin
30
- Rapns.logger.warn("Attempt #{attempts += 1}")
31
- reconnect_database
32
- check_database_is_connected
33
- break
34
- rescue *ADAPTER_ERRORS => e
35
- Rapns.logger.error(e, :airbrake_notify => false)
36
- sleep_to_avoid_thrashing
37
- end
38
- end
39
- Rapns.logger.warn("Database reconnected")
40
- end
41
-
42
- def reconnect_database
43
- ActiveRecord::Base.clear_all_connections!
44
- ActiveRecord::Base.establish_connection
45
- end
46
-
47
- def check_database_is_connected
48
- # Simply asking the adapter for the connection state is not sufficient.
49
- Rapns::Notification.count
50
- end
51
-
52
- def sleep_to_avoid_thrashing
53
- sleep 2
54
- end
55
- end
56
- end
57
- end