phobos_db_checkpoint 1.0.0 → 1.1.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +60 -13
- data/lib/phobos_db_checkpoint/events_api.rb +9 -1
- data/lib/phobos_db_checkpoint/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f2b492fa71a95e8304f837094421494f8a441a1a
         | 
| 4 | 
            +
              data.tar.gz: 6470c1c13a9ab979cac8f228a725d5782e50f027
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f2327f3693b35fb330f9af48a878dd7e825e24eadb7f43627ad348c0c48f0f9df2c72c10933bf95298faf99e02a18220348647126073db1add6e3f8705b0b1cb
         | 
| 7 | 
            +
              data.tar.gz: 5cf8e5153d09340f01aab345b55ad07891ea055a8946648f503b382dd8b67adaed0ad8ff6a626ee32d8056ab5047bf55909fbcb154a4982702741bcf20924651
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. | |
| 4 4 | 
             
            The format is based on [Keep a Changelog](http://keepachangelog.com/)
         | 
| 5 5 | 
             
            and this project adheres to [Semantic Versioning](http://semver.org/).
         | 
| 6 6 |  | 
| 7 | 
            +
            ## 1.1.0 (2017-02-28)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            - [feature] Add end point for fetching individual failures
         | 
| 10 | 
            +
             | 
| 7 11 | 
             
            ## 1.0.0 (2017-02-24)
         | 
| 8 12 |  | 
| 9 13 | 
             
            - [feature] Introduce failures and failure handling in Handler. Add failures to the events API
         | 
    
        data/README.md
    CHANGED
    
    | @@ -141,7 +141,7 @@ The control is based on `payload` and `exception`: | |
| 141 141 | 
             
            class MyHandler
         | 
| 142 142 | 
             
              include PhobosDBCheckpoint::Handler
         | 
| 143 143 |  | 
| 144 | 
            -
              def retry_consume?(event, event_metadata, exception)
         | 
| 144 | 
            +
              def self.retry_consume?(event, event_metadata, exception)
         | 
| 145 145 | 
             
                event_metadata[:retry_count] <= MyApp.config.max_retries
         | 
| 146 146 | 
             
              end
         | 
| 147 147 | 
             
            end
         | 
| @@ -196,6 +196,32 @@ $ phobos_db_checkpoint init_events_api | |
| 196 196 | 
             
               Start the API with: `rackup config.ru`
         | 
| 197 197 | 
             
            ```
         | 
| 198 198 |  | 
| 199 | 
            +
            The available routes are:
         | 
| 200 | 
            +
             | 
| 201 | 
            +
            * GET `/ping`
         | 
| 202 | 
            +
            * GET `/v1/events/:id`
         | 
| 203 | 
            +
            * GET `/v1/events` This route accepts the following params:
         | 
| 204 | 
            +
              * `limit`, default: 20
         | 
| 205 | 
            +
              * `offset`, default: 0
         | 
| 206 | 
            +
              * `entity_id`
         | 
| 207 | 
            +
              * `topic`
         | 
| 208 | 
            +
              * `group_id`
         | 
| 209 | 
            +
              * `event_type`
         | 
| 210 | 
            +
            * POST `/v1/events/:id/retry`
         | 
| 211 | 
            +
            * GET `/v1/failures/:id`
         | 
| 212 | 
            +
            * GET `/v1/failures` This route accepts the following params:
         | 
| 213 | 
            +
              * `limit`, default: 20
         | 
| 214 | 
            +
              * `offset`, default: 0
         | 
| 215 | 
            +
              * `entity_id`
         | 
| 216 | 
            +
              * `topic`
         | 
| 217 | 
            +
              * `group_id`
         | 
| 218 | 
            +
              * `event_type`
         | 
| 219 | 
            +
            * POST `/v1/failures/:id/retry`
         | 
| 220 | 
            +
             | 
| 221 | 
            +
            #### Events endpoint
         | 
| 222 | 
            +
             | 
| 223 | 
            +
            Sample output for event:
         | 
| 224 | 
            +
             | 
| 199 225 | 
             
            ```sh
         | 
| 200 226 | 
             
            $ curl "http://localhost:9292/v1/events/1"
         | 
| 201 227 | 
             
            # {
         | 
| @@ -207,22 +233,43 @@ $ curl "http://localhost:9292/v1/events/1" | |
| 207 233 | 
             
            #   "event_type": "create",
         | 
| 208 234 | 
             
            #   "event_version": "v1",
         | 
| 209 235 | 
             
            #   "checksum": "188773471ec0f898fd81d272760a027f",
         | 
| 210 | 
            -
            #   "payload":  | 
| 236 | 
            +
            #   "payload": {
         | 
| 237 | 
            +
            #     "a": "b"
         | 
| 238 | 
            +
            #   }
         | 
| 211 239 | 
             
            # }
         | 
| 212 240 | 
             
            ```
         | 
| 213 241 |  | 
| 214 | 
            -
             | 
| 242 | 
            +
            #### Failures endpoint
         | 
| 215 243 |  | 
| 216 | 
            -
             | 
| 217 | 
            -
             | 
| 218 | 
            -
             | 
| 219 | 
            -
             | 
| 220 | 
            -
             | 
| 221 | 
            -
             | 
| 222 | 
            -
             | 
| 223 | 
            -
             | 
| 224 | 
            -
             | 
| 225 | 
            -
             | 
| 244 | 
            +
            Sample output for failure:
         | 
| 245 | 
            +
             | 
| 246 | 
            +
            ```sh
         | 
| 247 | 
            +
            $ curl "http://localhost:9292/v1/failures/1"
         | 
| 248 | 
            +
            # {
         | 
| 249 | 
            +
            #   "id": 1,
         | 
| 250 | 
            +
            #   "created_at": "2017-02-28T07:53:21.790Z",
         | 
| 251 | 
            +
            #   "topic": "test-partitions",
         | 
| 252 | 
            +
            #   "group_id": "test-checkpoint-1",
         | 
| 253 | 
            +
            #   "entity_id": "32de6e8e-4317-4ff7-bbce-aa4a6d41294a",
         | 
| 254 | 
            +
            #   "event_time": "2016-08-10T07:07:58.907Z",
         | 
| 255 | 
            +
            #   "event_type": "test-event-type",
         | 
| 256 | 
            +
            #   "event_version": "v1",
         | 
| 257 | 
            +
            #   "checksum": "12c9e42bca2728fc8193c87979bfe510",
         | 
| 258 | 
            +
            #   "payload": {
         | 
| 259 | 
            +
            #     "a": "b"
         | 
| 260 | 
            +
            #   },
         | 
| 261 | 
            +
            #   "metadata": {
         | 
| 262 | 
            +
            #     "c": "d"
         | 
| 263 | 
            +
            #   },
         | 
| 264 | 
            +
            #   "error_class": "Faraday::ConnectionFailed",
         | 
| 265 | 
            +
            #   "error_message": "Failed to open TCP connection to localhost:9200 (Connection refused - connect(2) for \"localhost\" port 9200)",
         | 
| 266 | 
            +
            #   "error_backtrace": [
         | 
| 267 | 
            +
            #     "/Users/mathias.klippinge/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/net/http.rb:882:in `rescue in block in connect'",
         | 
| 268 | 
            +
            #     "/Users/mathias.klippinge/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/net/http.rb:879:in `block in connect'",
         | 
| 269 | 
            +
            #     "..."
         | 
| 270 | 
            +
            #   ]
         | 
| 271 | 
            +
            # }
         | 
| 272 | 
            +
            ```
         | 
| 226 273 |  | 
| 227 274 | 
             
            ### <a name="instrumentation"></a> Instrumentation
         | 
| 228 275 |  | 
| @@ -18,7 +18,8 @@ module PhobosDBCheckpoint | |
| 18 18 | 
             
                error ActiveRecord::RecordNotFound do
         | 
| 19 19 | 
             
                  content_type :json
         | 
| 20 20 | 
             
                  status 404
         | 
| 21 | 
            -
                   | 
| 21 | 
            +
                  type = env['sinatra.route'].match(/\/.+\/(.+)\/:/)[1].chop
         | 
| 22 | 
            +
                  { error: true, message: "#{type} not found" }.to_json
         | 
| 22 23 | 
             
                end
         | 
| 23 24 |  | 
| 24 25 | 
             
                error StandardError do
         | 
| @@ -99,6 +100,13 @@ module PhobosDBCheckpoint | |
| 99 100 | 
             
                    .to_json
         | 
| 100 101 | 
             
                end
         | 
| 101 102 |  | 
| 103 | 
            +
                get "/#{VERSION}/failures/:id" do
         | 
| 104 | 
            +
                  content_type :json
         | 
| 105 | 
            +
                  PhobosDBCheckpoint::Failure
         | 
| 106 | 
            +
                    .find(params['id'])
         | 
| 107 | 
            +
                    .to_json
         | 
| 108 | 
            +
                end
         | 
| 109 | 
            +
             | 
| 102 110 | 
             
                post "/#{VERSION}/failures/:id/retry" do
         | 
| 103 111 | 
             
                  content_type :json
         | 
| 104 112 | 
             
                  failure = PhobosDBCheckpoint::Failure.find(params['id'])
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: phobos_db_checkpoint
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Túlio Ornelas
         | 
| @@ -13,7 +13,7 @@ authors: | |
| 13 13 | 
             
            autorequire: 
         | 
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 | 
            -
            date: 2017-02- | 
| 16 | 
            +
            date: 2017-02-28 00:00:00.000000000 Z
         | 
| 17 17 | 
             
            dependencies:
         | 
| 18 18 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 19 19 | 
             
              name: bundler
         |