• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

cloudmarker / cloudmarker
90%
master: 84%

Build:
Build:
LAST BUILD BRANCH: dependabot/pip/urllib3-1.26.5
DEFAULT BRANCH: master
Repo Added 17 Dec 2018 06:07PM UTC
Files 92
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH pluginframework
branch: pluginframework
CHANGE BRANCH
x
Reset
  • pluginframework
  • 0.1.0
  • alertdocs
  • apidocindent
  • audit-version
  • auditemails
  • azcloud
  • azstorage
  • azurecloud
  • azurecloud-exception
  • azvm_record_type
  • azwebapp
  • badges
  • baseconfig
  • bracket
  • buckets
  • build-matrix
  • changelog
  • clioptions
  • clouderror
  • common-plugins-config
  • consistency
  • copy-ext
  • copyext
  • cov_clean
  • dependabot/pip/cryptography-3.3.2
  • dependabot/pip/httplib2-0.18.0
  • dependabot/pip/httplib2-0.19.0
  • dependabot/pip/pyyaml-5.4
  • dependabot/pip/rsa-4.7
  • dependabot/pip/urllib3-1.26.5
  • dist
  • docfixes
  • doctest-fix
  • email_debug_param_from_config
  • emailbody
  • emaildocs
  • empty-port
  • esstore
  • firewalleventtest
  • firewallnorm
  • firewallruleevent
  • fix-esstore-done
  • fix-unused-input-queue
  • fix_cloud_worker
  • fixbuild
  • fixcoverage
  • fixindent
  • freeze
  • gcpcloudlogs
  • gcpcloudtest
  • iam_policy
  • ignore-virtual-machines
  • ioworkers
  • key_file_name_fix
  • lint
  • load_yaml_safely
  • log
  • logfixes
  • logger-defaults
  • logging-levels
  • master
  • maxrecs
  • mock-records
  • mockplugins
  • mongodbdefaults
  • mongodbfix
  • mongodbtests
  • multiprocessing
  • pluginloader
  • readable-version
  • readme
  • remove-email-config
  • removefirewallevent
  • rename_logger
  • renameparams
  • requirements
  • rest
  • reuse-mock
  • rm-venv
  • slackalert
  • smtpssl
  • sphinx
  • sphinx-rst-update
  • splunkfixes
  • splunkhecstore_docs
  • splunkhectokentest
  • splunkstore
  • sub_id_rename
  • tests
  • travis
  • userconfig
  • userdoc
  • userecordterm
  • verdev
  • webapp
  • worker-com-fields
  • worker-error-handling
  • workerlogs

pending completion
900

Pull #147

travis-ci-com

web-flow
Instantiate plugins in worker processes

Prior to this change, the plugin classes are instantiated in the main
process running `manager.py` and the instantiated plugins are passed to
the respective worker processes implemented in `workers.py` via
`multiprocessing.Queue` objects.

Instantiating a plugin in the main process in `manager.py` and then
passing it to a worker process via a queue is problematic. If a plugin
is not fork-safe, it may not function correctly when used inside a
worker process. One such problem was found with the `MongoDBStore`
plugin which is not fork-safe because it in turn instantiates
`MongoClient` which is not fork-safe. The following warning is
encountered while using `MongoDBStore`:

    UserWarning: MongoClient opened before fork. Create MongoClient only
    after forking. See PyMongo's documentation for details:
    http://api.mongodb.org/python/current/faq.html#is-pymongo-fork-safe
    "MongoClient opened before fork. Create MongoClient only "

There is another possible problem too. If a plugin is not picklable
(serialiazble), then attempting to pass an instantiated plugin over a
`multiprocessing.Queue` object would lead to `PickleError`.

To prevent these issues, this change implements a new strategy for
instantiating the plugins. The main process running `manager.py` passes
the plugin config dictionaries to the worker processes over
`multiprocessing.Queue` objects. The worker processes instantiate the
plugins from the plugin config dictionaries. This ensures that we pass
only a serializable object (i.e., a dictionary, not an instantiated
plugin) over the queue. It also ensures that a plugin is instantiated in
the same process where it is used, i.e., within a worker process.
Pull Request #147: Instantiate plugins in worker processes

439 of 494 branches covered (88.87%)

Branch coverage included in aggregate %.

39 of 39 new or added lines in 3 files covered. (100.0%)

2075 of 2298 relevant lines covered (90.3%)

2.71 hits per line

Relevant lines Covered
Build:
Build:
2298 RELEVANT LINES 2075 COVERED LINES
2.71 HITS PER LINE
Source Files on pluginframework
  • List 0
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
900 pluginframework Instantiate plugins in worker processes Prior to this change, the plugin classes are instantiated in the main process running `manager.py` and the instantiated plugins are passed to the respective worker processes implemented in `workers.py` via ... Pull #147 12 Jun 2019 07:50AM UTC web-flow travis-ci-com pending completion  
899 pluginframework Instantiate plugins in worker processes Prior to this change, the plugin classes are instantiated in the main process running `manager.py` and the instantiated plugins are passed to the respective worker processes implemented in `workers.py` via ... push 12 Jun 2019 07:47AM UTC susam travis-ci-com pending completion  
895 pluginframework Instantiate plugins in worker processes Prior to this change, the plugin classes are instantiated in the main process running `manager.py` and the instantiated plugins are passed to the respective worker processes implemented in `workers.py` via ... Pull #147 12 Jun 2019 04:20AM UTC web-flow travis-ci-com pending completion  
894 pluginframework Instantiate plugins in worker processes Prior to this change, the plugin classes are instantiated in the main process running `manager.py` and the instantiated plugins are passed to the respective worker processes implemented in `workers.py` via ... push 12 Jun 2019 04:17AM UTC susam travis-ci-com pending completion  
893 pluginframework Instantiate plugins in worker processes Prior to this change, the plugin classes are instantiated in the main process running `manager.py` and the instantiated plugins are passed to the respective worker processes implemented in `workers.py` via ... Pull #147 11 Jun 2019 04:30PM UTC web-flow travis-ci-com pending completion  
892 pluginframework Instantiate plugins in worker processes Prior to this change, the plugin classes are instantiated in the main process running `manager.py` and the instantiated plugins are passed to the respective worker processes implemented in `workers.py` via ... push 11 Jun 2019 04:27PM UTC susam travis-ci-com pending completion  
891 pluginframework Instantiate plugins in worker processes Prior to this change, the plugin classes are instantiated in the main process running `manager.py` and the instantiated plugins are passed to the respective worker processes implemented in `workers.py` via ... Pull #147 11 Jun 2019 04:24PM UTC web-flow travis-ci-com pending completion  
890 pluginframework Instantiate plugins in worker processes Prior to this change, the plugin classes are instantiated in the main process running `manager.py` and the instantiated plugins are passed to the respective worker processes implemented in `workers.py` via ... push 11 Jun 2019 04:22PM UTC susam travis-ci-com pending completion  
889 pluginframework Instantiate plugins in worker processes Prior to this change, the plugin classes are instantiated in the main process running `manager.py` and the instantiated plugins are passed to the respective worker processes implemented in `workers.py` via ... Pull #147 11 Jun 2019 04:13PM UTC web-flow travis-ci-com pending completion  
888 pluginframework Instantiate plugins in worker processes Prior to this change, the plugin classes are instantiated in the main process running `manager.py` and the instantiated plugins are passed to the respective worker processes implemented in `workers.py` via ... push 11 Jun 2019 04:10PM UTC susam travis-ci-com pending completion  
See All Builds (953)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc