incubator-openwhisk-package-kafka.git
11 days agoRevert "Update Docker Image (#308)" (#311) master
Jason Peterson [Fri, 7 Dec 2018 21:24:04 +0000 (16:24 -0500)] 
Revert "Update Docker Image (#308)" (#311)

This reverts commit 8822f2a1

2 weeks agoUpdate Docker Image (#308)
James Dubee [Tue, 4 Dec 2018 15:46:11 +0000 (10:46 -0500)] 
Update Docker Image (#308)

5 weeks agoDo Not Disable Triggers on Document Update Conflicts (#307) 1.4.18
James Dubee [Tue, 13 Nov 2018 19:07:33 +0000 (14:07 -0500)] 
Do Not Disable Triggers on Document Update Conflicts (#307)

5 weeks agoUpdate Tests to Wait for Producer to Finish (#306)
James Dubee [Mon, 12 Nov 2018 20:51:18 +0000 (15:51 -0500)] 
Update Tests to Wait for Producer to Finish (#306)

* Wait for producer to finish

* Expect Exception from Producer for Oversized Payload

* Add comment to test

* Increase producer max.request.size

5 weeks agoUse KafkaProducer Instead of messageHubProduce (#304)
James Dubee [Fri, 9 Nov 2018 23:54:13 +0000 (18:54 -0500)] 
Use KafkaProducer Instead of messageHubProduce (#304)

* Use KafkaProducer Instead of messageHubProduce

* Add Build Tasks

5 weeks agoOptionally Install Producer Action (#305)
James Dubee [Fri, 9 Nov 2018 23:53:52 +0000 (18:53 -0500)] 
Optionally Install Producer Action (#305)

* Optionally Install Producer Action

* Use Environment Variable

5 weeks agoRename the package into org.apache.openwhisk. (#303)
Vincent [Thu, 8 Nov 2018 14:53:37 +0000 (09:53 -0500)] 
Rename the package into org.apache.openwhisk. (#303)

5 weeks agoEnsure test consumers exists before producing messages (#292)
James Dubee [Wed, 7 Nov 2018 15:22:46 +0000 (10:22 -0500)] 
Ensure test consumers exists before producing messages (#292)

* Ensure test consumers exists before producing messages

* Refactoring

* More refactoring

6 weeks agoSwitch to Scala 2.12.7 (#294)
Chetan Mehrotra [Wed, 7 Nov 2018 00:03:57 +0000 (05:33 +0530)] 
Switch to Scala 2.12.7 (#294)

7 weeks agoUpdate MessageHub parameter validation (#293) 1.4.17
James Dubee [Tue, 30 Oct 2018 03:28:29 +0000 (23:28 -0400)] 
Update MessageHub parameter validation (#293)

* Update MessageHub parameter validation

* Review refactor

8 weeks agoStore namespace CRN in trigger DB (#301)
James Dubee [Tue, 23 Oct 2018 17:27:05 +0000 (13:27 -0400)] 
Store namespace CRN in trigger DB (#301)

2 months agoRemove test for MessageHub invalid auth (#298)
James Dubee [Mon, 15 Oct 2018 15:37:41 +0000 (11:37 -0400)] 
Remove test for MessageHub invalid auth (#298)

2 months agoAttempt to encode non-encoded messages (#296) 1.4.16
James Dubee [Fri, 12 Oct 2018 19:26:20 +0000 (15:26 -0400)] 
Attempt to encode non-encoded messages (#296)

2 months agoTreat malformed JSON as a string (#295) 1.4.15
James Dubee [Fri, 12 Oct 2018 14:47:17 +0000 (10:47 -0400)] 
Treat malformed JSON as a string (#295)

2 months agoMessageHubFeedTests Resiliency Updates (#291) 1.4.14
James Dubee [Fri, 28 Sep 2018 19:25:45 +0000 (15:25 -0400)] 
MessageHubFeedTests Resiliency Updates (#291)

2 months agoUpdate MessageHubProduceTests to not rely on activation polling (#287)
James Dubee [Thu, 27 Sep 2018 14:08:13 +0000 (10:08 -0400)] 
Update MessageHubProduceTests to not rely on activation polling (#287)

2 months agoFix for overriding api host (#286) 1.4.13
Adnan Baruni [Wed, 19 Sep 2018 20:03:23 +0000 (15:03 -0500)] 
Fix for overriding api host (#286)

* fix the way we are handling trigger urls when env var overrides api host. also remove basic auth from trigger url

2 months agofix auth check (#285)
Adnan Baruni [Wed, 19 Sep 2018 16:36:30 +0000 (11:36 -0500)] 
fix auth check (#285)

3 months agoMessage Hub IAM Integration (#284) 1.4.12
Adnan Baruni [Tue, 18 Sep 2018 19:39:09 +0000 (14:39 -0500)] 
Message Hub IAM Integration (#284)

* add authHandler for managing iam token

* ensure iam url is added to validated params in web action

* validated params

* updates to iam integration

* package node_modules in web zip

* remove logging import from auth handler

3 months agoremoving test (#283)
Belinda Vennam [Fri, 7 Sep 2018 19:23:51 +0000 (15:23 -0400)] 
removing test (#283)

3 months agonew task to only test message hub package (#282)
Adnan Baruni [Wed, 5 Sep 2018 16:52:30 +0000 (11:52 -0500)] 
new task to only test message hub package (#282)

3 months agoRemove encoding check (#279) 1.4.11
Adnan Baruni [Mon, 27 Aug 2018 14:54:53 +0000 (09:54 -0500)] 
Remove encoding check (#279)

* remove encoding check

* remove explicit string escaping when failure to encode as json

3 months agoignore multi workers tests (#280)
Adnan Baruni [Fri, 24 Aug 2018 16:13:27 +0000 (11:13 -0500)] 
ignore multi workers tests (#280)

3 months agoIgnore certificates on creating a trigger within the side-effect action. (#278)
Christian Bickel [Tue, 21 Aug 2018 14:00:08 +0000 (16:00 +0200)] 
Ignore certificates on creating a trigger within the side-effect action. (#278)

4 months agoRemove required access to the whole couchdb database. (#274) 1.4.10
Christian Bickel [Wed, 8 Aug 2018 02:58:44 +0000 (04:58 +0200)] 
Remove required access to the whole couchdb database. (#274)

5 months agoVerify trigger fire by sideeffect. (#272)
Christian Bickel [Thu, 28 Jun 2018 17:22:53 +0000 (19:22 +0200)] 
Verify trigger fire by sideeffect. (#272)

Until now, we verify the kafkaprovider, by looking if the action in OpenWhisk has been executed with `activation list`. The problem with this call is, that the activation may not be in the list in time, because it only returns the result of an CouchDB view. If there is much load on the database, the view-computation may be behind and not return the activation.
As side effect, we use a trigger creation. The name of the trigger will be read from the kafka message. All other things (like credentials, ...) are already present in the action, that is invoked anyway.
To check if the trigger exists, we use the ID of the trigger. So no view is involved anymore.

7 months agoallow for configuring whisk apihost via optional environment variable (#268) 1.4.9
Adnan Baruni [Mon, 14 May 2018 19:31:04 +0000 (14:31 -0500)] 
allow for configuring whisk apihost via optional environment variable (#268)

7 months agoadd additional gradle task to allow running test suite without any tests relying...
Adnan Baruni [Fri, 11 May 2018 18:25:43 +0000 (13:25 -0500)] 
add additional gradle task to allow running test suite without any tests relying upon health endpoints (#267)

7 months agolog timestamp of produced message. ensure consumer created before producing message...
Adnan Baruni [Fri, 27 Apr 2018 15:59:23 +0000 (10:59 -0500)] 
log timestamp of produced message. ensure consumer created before producing message by polling health endpoint for uuid (#266)

7 months agodeprecate messageHubProduce and kafkaProduce actions (#265)
Adnan Baruni [Thu, 26 Apr 2018 05:09:09 +0000 (00:09 -0500)] 
deprecate messageHubProduce and kafkaProduce actions (#265)

8 months agoRemove use of messageHubProduce action in health test and use java producer (#264)
Adnan Baruni [Tue, 17 Apr 2018 17:52:36 +0000 (12:52 -0500)] 
Remove use of messageHubProduce action in health test and use java producer (#264)

8 months agoFix spray-json import to comply with newer versions. (#263)
Markus Thömmes [Mon, 16 Apr 2018 15:45:18 +0000 (17:45 +0200)] 
Fix spray-json import to comply with newer versions. (#263)

9 months agoUpdate MessageHubMultiWorkersTest to use ExtendedCouchDbRestClient (#260)
Adnan Baruni [Tue, 13 Mar 2018 20:42:29 +0000 (15:42 -0500)] 
Update MessageHubMultiWorkersTest to use ExtendedCouchDbRestClient  (#260)

* update MessageHubMultiWorkersTest to use ExtendedCouchDbRestClient

9 months agoMove Feed Update Test (#259) 1.4.8
James Dubee [Tue, 6 Mar 2018 10:24:42 +0000 (05:24 -0500)] 
Move Feed Update Test (#259)

9 months agofail to create feed trigger on explicit 403 (#257)
Adnan Baruni [Tue, 6 Mar 2018 03:59:40 +0000 (21:59 -0600)] 
fail to create feed trigger on explicit 403 (#257)

9 months agocheck for 204 before attempting to fetch response json (#255)
Adnan Baruni [Tue, 6 Mar 2018 03:58:20 +0000 (21:58 -0600)] 
check for 204 before attempting to fetch response json (#255)

* check for 204 before attempting to fetch response json

* make test more robust

9 months agoMore Resiliency Updates for MessageHub Tests (#254)
James Dubee [Fri, 2 Mar 2018 22:54:53 +0000 (17:54 -0500)] 
More Resiliency Updates for MessageHub Tests (#254)

9 months agoResiliency Updates for MessageHub Tests (#253)
James Dubee [Fri, 2 Mar 2018 19:46:52 +0000 (14:46 -0500)] 
Resiliency Updates for MessageHub Tests (#253)

9 months agoSwitch to Maven based dependency (#252)
Chetan Mehrotra [Thu, 1 Mar 2018 15:18:27 +0000 (20:48 +0530)] 
Switch to Maven based dependency (#252)

9 months agoMore test improvements (#251)
Adnan Baruni [Mon, 26 Feb 2018 20:38:14 +0000 (14:38 -0600)] 
More test improvements (#251)

* add additional time for consumer init and up retry value

* update produce tests to not fail immediately with multiple activations

9 months agoImprovements to BasicHealthTest (#249) 1.4.7
Adnan Baruni [Thu, 22 Feb 2018 17:16:36 +0000 (11:16 -0600)] 
Improvements to BasicHealthTest (#249)

* remove message producing from retry

* unique rule name

* account for multiple workers and thus multiple health urls when checking for consumer uuid

9 months agoRemove error callback (#250) 1.4.6
Adnan Baruni [Wed, 21 Feb 2018 17:27:26 +0000 (11:27 -0600)] 
Remove error callback (#250)

* remove error callback that disables valid consumers

* removed unused variables

10 months agoFix uncaught exception occurring when reading in a message containing non-unicode... 1.4.5
Adnan Baruni [Wed, 7 Feb 2018 18:41:25 +0000 (12:41 -0600)] 
Fix uncaught exception occurring when reading in a message containing non-unicode bytes (#247)

* replace bad bytes when non-unicode passed in

* treat messages as strings when they can not be JSON parsed

10 months agoremove noisy log statement (#245) 1.4.4
Adnan Baruni [Thu, 1 Feb 2018 17:37:00 +0000 (11:37 -0600)] 
remove noisy log statement (#245)

10 months agorenew client connection when token expires (#246)
Adnan Baruni [Thu, 1 Feb 2018 17:36:18 +0000 (11:36 -0600)] 
renew client connection when token expires (#246)

10 months agoremove assumption that partitions will be non-empty when passed into callbacks (...
Adnan Baruni [Wed, 31 Jan 2018 22:03:19 +0000 (16:03 -0600)] 
remove assumption that partitions will be non-empty when passed into callbacks (#243)

10 months agoadd logging for errors (#239) 1.4.3
Adnan Baruni [Mon, 29 Jan 2018 19:47:24 +0000 (13:47 -0600)] 
add logging for errors (#239)

10 months agoAdjust threshold of authentication errors with brokers before disabling consumer...
Adnan Baruni [Mon, 29 Jan 2018 18:57:20 +0000 (12:57 -0600)] 
Adjust threshold of authentication errors with brokers before disabling consumer (#238)

* reset authErrors when connected. add logging for failed trigger fires

* remove logging statement

10 months agodisable consumer after 5 failed attempts to connect to kafka brokers (#236) 1.4.2
Adnan Baruni [Fri, 26 Jan 2018 18:10:54 +0000 (12:10 -0600)] 
disable consumer after 5 failed attempts to connect to kafka brokers (#236)

11 months agoUpdate name of action linked to trigger to be unique to avoid failed cleaning up...
Adnan Baruni [Tue, 19 Dec 2017 19:30:45 +0000 (13:30 -0600)] 
Update name of action linked to trigger to be unique to avoid failed cleaning up of assets at end of test (#235)

12 months agoFix travis 1212 (#232)
Carlos Santana [Wed, 13 Dec 2017 18:59:30 +0000 (13:59 -0500)] 
Fix travis 1212 (#232)

* fix travis docker setup

12 months agoUpdate default retry when not using gradle (#233)
Adnan Baruni [Wed, 13 Dec 2017 18:29:28 +0000 (12:29 -0600)] 
Update default retry when not using gradle (#233)

* A default of 60 retries will be used

12 months agomake number of retries configurable via system property (#231)
Adnan Baruni [Wed, 13 Dec 2017 17:10:34 +0000 (11:10 -0600)] 
make number of retries configurable via system property (#231)

12 months agoAdd rule and action to trigger tests which rely upon activation records (#230)
Adnan Baruni [Tue, 12 Dec 2017 19:53:37 +0000 (13:53 -0600)] 
Add rule and action to trigger tests which rely upon activation records (#230)

12 months agoverify trigger fire responds with any successful status code (#229) 1.4.1
Adnan Baruni [Thu, 30 Nov 2017 21:00:04 +0000 (15:00 -0600)] 
verify trigger fire responds with any successful status code (#229)

* verify trigger fire responds with any successful status code, not just 200

* only log activation id if response contains it

* whitespace

* logging

12 months agoFix failing web action tests (#228)
Adnan Baruni [Mon, 20 Nov 2017 19:13:10 +0000 (13:13 -0600)] 
Fix failing web action tests (#228)

* fix web action tests

* remove put from test description

* remove print statement

13 months agosupport updating feed parameters (#227) 1.4.0
Adnan Baruni [Fri, 17 Nov 2017 21:55:05 +0000 (15:55 -0600)] 
support updating feed parameters (#227)

* support updating feed parameters

* additional testing. reject update when trigger is disabled

* remove whitespace

13 months agomove positive trigger get test to health class (#226)
Adnan Baruni [Thu, 16 Nov 2017 17:26:35 +0000 (11:26 -0600)] 
move positive trigger get test to health class (#226)

13 months agofeed action should return parameters with the same names as those passed in (#225)
Adnan Baruni [Thu, 16 Nov 2017 04:12:12 +0000 (22:12 -0600)] 
feed action should return parameters with the same names as those passed in (#225)

13 months agoadd parameters as query parameters for get request (#224)
Adnan Baruni [Thu, 16 Nov 2017 01:32:52 +0000 (19:32 -0600)] 
add parameters as query parameters for get request (#224)

14 months agoAdd ability to get trigger configuration and status (#217) 1.3.0
Adnan Baruni [Tue, 17 Oct 2017 18:48:32 +0000 (13:48 -0500)] 
Add ability to get trigger configuration and status (#217)

* initial implementation of trigger management, get status and configuration

* add test for get trigger config and status

* add implementation from message hub feed action to kafka feed action

14 months agoupdate test to delete artifacts. reformat with scalariform (#216)
Adnan Baruni [Tue, 3 Oct 2017 01:21:38 +0000 (20:21 -0500)] 
update test to delete artifacts. reformat with scalariform (#216)

14 months agoSupport multiple workers (#214) 1.2.0
Adnan Baruni [Fri, 29 Sep 2017 14:40:37 +0000 (09:40 -0500)] 
Support multiple workers (#214)

* phase 3 HA

* clean up logic

* fix scancode issue

* remove workerId from canary doc id

* remove misleading logging statement. modify devGuid for new env var and parameter for install script

* addition of integration tests

* fix travis build failure due to missing EOL

* do not go through trouble of consulting view when only one available worker

15 months agoPrevent infinite exception loop in Service thread (#215) 1.1.8
James Dubee [Sat, 9 Sep 2017 20:09:01 +0000 (16:09 -0400)] 
Prevent infinite exception loop in Service thread (#215)

16 months agoBump to gradle 4. (#192) 1.1.7
Markus Thömmes [Wed, 16 Aug 2017 13:49:28 +0000 (15:49 +0200)] 
Bump to gradle 4. (#192)

16 months agoReturn Requested Accept Type (#199)
James Dubee [Tue, 15 Aug 2017 14:44:16 +0000 (10:44 -0400)] 
Return Requested Accept Type (#199)

* Return Requested Content Type
* Ensure Proper Content-Type is Returned for all Web Action Responses

16 months agoRestart changes feed on all exceptions (#213) 1.1.6
Justin Berstler [Mon, 14 Aug 2017 15:57:24 +0000 (11:57 -0400)] 
Restart changes feed on all exceptions (#213)

16 months agocreate development guide (#187)
Justin Berstler [Mon, 14 Aug 2017 15:55:37 +0000 (11:55 -0400)] 
create development guide (#187)

16 months agoReplace 'kafka_brokers_sasl' with the (correct) 'brokers' (#212)
Justin Berstler [Fri, 11 Aug 2017 23:28:26 +0000 (19:28 -0400)] 
Replace 'kafka_brokers_sasl' with the (correct) 'brokers' (#212)

'kafka_brokers_sasl' is only valid in the messageHubProduce action. The equivalent for kafkaProduce is just 'brokers'

16 months agoProduce action fixes (#202) 1.1.5
Justin Berstler [Mon, 7 Aug 2017 20:25:25 +0000 (16:25 -0400)] 
Produce action fixes (#202)

* Increase stability of the messageHubProduce action

Tweak producer settings to be more efficient
add retry behavior when the produce fails
shuffle broker list to distribute the initial connection load
Split produce into two phases
  1. Establish and verify a connection with Message Hub - this can be retried
  2. Produce the message - this can NOT be retried as it may result in duplicated messages

attempt to cache/reuse producer

This requires a slight change in the Python 3 action runtime that enables effective use of globals() across action invocations (under certain circumstances).

Limit number of cached connections

Arbitrarily set a limit of 10 cached connections
If you try to cache an 11th connection, arbitrarily remove one of the existing connections

* adjust for review feedback

* Make timeout values based on the invocation time remaining

Utilize __OW_DEADLINE to figure out when the action will be killed by the system
Use this value to determine appropriate timeout values for various aspects of the produce action
Reserve at least 10 seconds for the .send() call
Set a producer timeout that allows for three retries (minus the reserved 10 seconds)

16 months agoexponential backoff on trigger fire retry (#209)
Justin Berstler [Thu, 3 Aug 2017 19:58:45 +0000 (15:58 -0400)] 
exponential backoff on trigger fire retry (#209)

16 months agoBetter handle when the connection to the DB drops (#205)
Justin Berstler [Wed, 2 Aug 2017 18:29:25 +0000 (14:29 -0400)] 
Better handle when the connection to the DB drops (#205)

Make use of a timeout value when constructing the changes feed. This ensures that if the connection to the DB is lost, an exception is thrown in a timely manner so that the changes feed can be restarted. Without this timeout set on the database client, the changes feed will simply hang when the connection is lost, and may not recover.
update to the latest python-cloudant package

16 months agoBlock until message is sent, or timeout (#204)
Justin Berstler [Fri, 21 Jul 2017 18:50:44 +0000 (14:50 -0400)] 
Block until message is sent, or timeout (#204)

As it turns out, flush() only waits for the message to be put on the network, and does not wait for any required acks.

16 months agoAdjust api_version to match current kafka-python client (#203)
Justin Berstler [Fri, 21 Jul 2017 15:12:31 +0000 (11:12 -0400)] 
Adjust api_version to match current kafka-python client (#203)

17 months agoSpecify KafkaProducer API Version to Avoid Lookup (#201)
James Dubee [Wed, 19 Jul 2017 18:51:56 +0000 (14:51 -0400)] 
Specify KafkaProducer API Version to Avoid Lookup (#201)

17 months agoAdd a 1 second delay between test retries (#200) 1.1.4
Justin Berstler [Tue, 18 Jul 2017 18:09:23 +0000 (14:09 -0400)] 
Add a 1 second delay between test retries (#200)

After creating a trigger, there may be some time before the service is aware of the new trigger. Add a 1 second delay to the retry attempts at verifying the trigger was created.

17 months agoDo not attempt to share DB across multiple processes (#198) 1.1.3
Justin Berstler [Tue, 11 Jul 2017 20:04:10 +0000 (16:04 -0400)] 
Do not attempt to share DB across multiple processes (#198)

This does not play well when using SSL connections to the DB. The fix is to make the DB client an instance property of the Database class, and also to ensure that all instances of Database are themselves instance properties of whatever class is using it.

17 months agoUse one canary document per provider instance (#197)
Justin Berstler [Tue, 11 Jul 2017 19:05:23 +0000 (15:05 -0400)] 
Use one canary document per provider instance (#197)

* Use one canary document per provider instance

This eliminates canary document deletes, which is good news for the changes feed as it won't have to process all the deletes when the container starts. This also avoids the problem of getting a 404 while trying to delete a canary that was already deleted by another instance.

* respond to review feedback

17 months agoFix infinite loop in error handling (#194) 1.1.2
Justin Berstler [Mon, 10 Jul 2017 15:24:01 +0000 (11:24 -0400)] 
Fix infinite loop in error handling (#194)

Due to a logic error, the retry loop for creating a canary would loop infinitely after retryCount got to 0. Fix this erorr to ensure that the loop will exit after the specified number of retries.

17 months agoUpdate remaining .scala files with ASF license and add README badge. (#196)
Matt Rutkowski [Mon, 10 Jul 2017 14:19:38 +0000 (09:19 -0500)] 
Update remaining .scala files with ASF license and add README badge. (#196)

17 months agoAdd ASF license to python files. (#191)
Matt Rutkowski [Mon, 3 Jul 2017 13:53:28 +0000 (08:53 -0500)] 
Add ASF license to python files. (#191)

17 months agoUpdate health test to take the full health URL (#188)
Justin Berstler [Wed, 28 Jun 2017 16:40:58 +0000 (12:40 -0400)] 
Update health test to take the full health URL (#188)

17 months agoautomatically monitor and restore the health of the DB changes feed (#186) 1.1.1
Justin Berstler [Mon, 26 Jun 2017 19:47:51 +0000 (15:47 -0400)] 
automatically monitor and restore the health of the DB changes feed (#186)

* Monitor the DB changes feed by generating canary documents

Periodically add non-trigger (AKA "canary") documents into the DB. The changes feed loop checks for these canaries to verify that the changes feed is still working. If the time between canaries exceeds the limit, the changes feed is automatically restarted.

* return the trigger UUID from the feed action

* add test to ensure a new trigger can be created

* Update to latest cloudant client

It may contain a fix for the disappearing changes feed

* add comment explaining the for-loop break

17 months agoVerify migration (#152)
Justin Berstler [Tue, 20 Jun 2017 12:41:05 +0000 (08:41 -0400)] 
Verify migration (#152)

* delay Database initialization into the main function

In cases where Cloudant is acting slow, it could happen that database migration is kicked off before Database initialization has completed. Moving this initialization into the main function prevents that from happening.

* implement a manual script to verify DB migration

This is a one-time test to verify the current DB migration.

17 months agoinstallKafka.sh should create/update the "messaging" package (#181)
Justin Berstler [Tue, 20 Jun 2017 12:38:46 +0000 (08:38 -0400)] 
installKafka.sh should create/update the "messaging" package (#181)

18 months agoTest fixes (#180)
Justin Berstler [Thu, 15 Jun 2017 15:11:28 +0000 (11:11 -0400)] 
Test fixes (#180)

* If "trigger.suffix" is not provided, ensure test trigger name is unique

* Account for the fact that the test Kafka instance is shared

Because the test kafka instance/topic are shared, it is possible that the number of trigger activations includes messages that were produced by entities other than the currently-running test. Account for this by polling for a larger-than-expected number of trigger activations and then sifting through those to ensure they match expectations.

18 months agoconvert from threading to multiprocessing (#178)
Justin Berstler [Tue, 13 Jun 2017 20:56:23 +0000 (16:56 -0400)] 
convert from threading to multiprocessing (#178)

* Give the system a little break while polling

Just take a tiny breather on each poll loop. I suspect this will significantly reduce CPU usage for a relatively idle system.

* Convert to multiprocessing

Use a shared dictionary to convey state and state changes between processes.

18 months agoUpdate to run scancode from incubator-openwhisk-utilities repo. (#179)
Matt Rutkowski [Thu, 8 Jun 2017 16:12:59 +0000 (11:12 -0500)] 
Update to run scancode from incubator-openwhisk-utilities repo. (#179)

18 months agoImplement provider redundancy (#160) 1.1.0
Justin Berstler [Thu, 25 May 2017 20:13:31 +0000 (16:13 -0400)] 
Implement provider redundancy (#160)

This change allows multiple instances of the feed provider to run simultaneously for the purpose of failover redundancy, and even a little load balancing.

This is accomplished by allowing the feed action to write triggers directly to the DB, without having to converse directly with the feed provider instances. The provider instances pick up trigger changes by using a CouchDB changes feed to detect new, modified, and deleted triggers.

To allow the feed action to talk directly to the DB, without exposing the DB credentials to all users, a new web action is introduced. This action can be invoked by any user, but cannot be inspected by anyone other than the action owner (typically a system admin account). The non-web feed action is still added to a shared package, allowing all users to create triggers from it, but this action only invokes the new web action over a REST call.

Even though multiple instances of the provider are running and, in fact, handling the same set of triggers, the use of kafka consumer groups ensures that each trigger is only fired once per produced message by way of the fact that Kafka guarantees that only one consumer in the group will get each produced message.

18 months agoEnsure the payload size does not exceed the specified limit (#174) 1.0.19
Justin Berstler [Thu, 25 May 2017 15:23:20 +0000 (11:23 -0400)] 
Ensure the payload size does not exceed the specified limit (#174)

Batch messages until any of the following conditions are met:
- there are no more messages in the topic
- 2 seconds have passed since the last time firing
- the currently consumed message would exceed the allowed payload size

19 months agofix logging timestamp format (#175)
Justin Berstler [Fri, 12 May 2017 11:13:51 +0000 (07:13 -0400)] 
fix logging timestamp format (#175)

19 months agoupdate travis deployment (#172)
Carlos Santana [Tue, 9 May 2017 19:10:58 +0000 (15:10 -0400)] 
update travis deployment (#172)

19 months agoAllow health test to specify an option trigger name suffix (#169)
Justin Berstler [Thu, 4 May 2017 19:51:53 +0000 (15:51 -0400)] 
Allow health test to specify an option trigger name suffix (#169)

This makes it easier to utilize the trigger reuse that happens in the test.

19 months agoDisable triggers instead of deleting them (#168) 1.0.18
Justin Berstler [Mon, 24 Apr 2017 20:45:37 +0000 (16:45 -0400)] 
Disable triggers instead of deleting them (#168)

* Disable triggers instead of deleting them

* Make sure to properly delete disabled triggers

During /delete, if the trigger is (or is about to be) disabled, just delete it directly from the DB. Calling shutdown() doesn't work because the consumer thread is already gone and won't pick up the change in desired state.

* In recordTrigger() only set the status to active if it isn't already set

Allow for the case where a trigger that already has a status is being recorded.

* At boot up, represent even disabled triggers in memory

This allows them to appear in /health as well as be properly deleted

19 months agoReuse the basic health test trigger, if it already exists
Justin Berstler [Thu, 20 Apr 2017 15:39:57 +0000 (11:39 -0400)] 
Reuse the basic health test trigger, if it already exists

Check if the health test trigger already exists, if it does, reuse it. If not, create it and do not delete it at the end of the test.

Added some additional logic to prevent cross-pollination of triggers being fired by other tests simultaneously running and producing messages to the same topic. Previously, this was prevented by having a trigger name that contained a unique timestamp. Now we poll for up to 5 activations that have occurred since just before the message was produced. Existing code already handled multiple activations, and rooted through them all to find the one that contains the expected message.

19 months agoUpgrade librdkafka.git to 0.9.5 (#165)
James Dubee [Thu, 20 Apr 2017 14:54:11 +0000 (10:54 -0400)] 
Upgrade librdkafka.git to 0.9.5 (#165)

20 months agoAdd 502 and 504 to the list of status codes on which to retry 1.0.17
Justin Berstler [Wed, 19 Apr 2017 21:19:45 +0000 (17:19 -0400)] 
Add 502 and 504 to the list of status codes on which to retry

20 months agoPin Python Producer Feeds to Python 3 (#157)
James Dubee [Fri, 31 Mar 2017 17:14:58 +0000 (13:14 -0400)] 
Pin Python Producer Feeds to Python 3 (#157)

20 months agoUpdate Bad Broker Test
dubeejw [Wed, 29 Mar 2017 19:13:51 +0000 (15:13 -0400)] 
Update Bad Broker Test

- Use different port to ensure test fails

20 months agoUse If Statement to Detect When a Base64 Decoded Message is Empty
dubeejw [Wed, 29 Mar 2017 16:14:14 +0000 (12:14 -0400)] 
Use If Statement to Detect When a Base64 Decoded Message is Empty

- Covers cases when the decoder doesn't error when decoding non-base64 input