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

01org / ciao
67%
master: 66%

Build:
Build:
LAST BUILD BRANCH: topic/config-subnet-bits
DEFAULT BRANCH: master
Repo Added 02 May 2016 05:11PM UTC
Files 0
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 fix-1007
branch: fix-1007
CHANGE BRANCH
x
Reset
  • fix-1007
  • 1
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 20161106-generic-ciao-vendor
  • 20161109-add-summary-exception
  • 20161109-contributing-tweaks
  • 20161109-remove-ds-store
  • 20170713-create
  • 20170713-get-memory-info-error
  • 20170713-help-first
  • 20170713-memory-in-mib
  • 20170718-ciao-down-trivial
  • 20170719-ciao-down-vmtype-removal
  • 20170719-nested-vm-config
  • 20170720-2-documents-state-file
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 3
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 4
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 5
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 6
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 7
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 8
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 9
  • add-more-linters
  • add_contribution_readme
  • ansible
  • ansible-bat-improvements
  • ansible_readme_update
  • bat
  • btwarden/topic/add-keystone-to-single-vm
  • btwarden/topic/orientation
  • btwarden/topic/update_deployment_documentation
  • ceph
  • ceph-bat-testing
  • ceph-image-size
  • cert-signer-rename
  • cert-standard-fix
  • cert_docu
  • certificates
  • ciao-authentication
  • ciao-cert-dump
  • ciao-cert-refactor
  • ciao-cli
  • ciao-cli-image-optimisation
  • ciao-cli-node-fix
  • ciao-controller
  • ciao-controller-unused-removal
  • ciao-deploy
  • ciao-deploy-latest-20170802
  • ciao-dev
  • ciao-down-cache
  • ciao-down-fix-9p
  • ciao-down-fixes
  • ciao-down-go19
  • ciao-down-qemu-img
  • ciao-down-run-cmd
  • ciao-down-state
  • ciao-down-timeout
  • ciao-down-update-go
  • ciao-image
  • ciao-image-api
  • ciao-image-immutable
  • ciao-image-quotas-backup
  • ciao-image-small-fixes
  • ciao-master
  • ciao_deploy
  • ciao_down_workloads
  • clean-up-cloud-init
  • cleanup
  • cli_identity_oddity
  • client-cert-authentication
  • cnci
  • cnci-ephemeral-storage
  • cnci_img_prep_race_fix
  • cnci_scripting
  • commentfix
  • conf_file_template_perms
  • config_false_fail_bug
  • config_update
  • configuration_cleanup
  • configuration_cleanup2
  • contrib
  • controller-error-handling-tweaks
  • controller-service-error-logging
  • controller-shutdown
  • controller_fqdn
  • coverage
  • ctl_node_mgmt
  • database
  • datastore-cleanup
  • datastore-cleanups
  • db-population-cleanup
  • defer-quota-reset
  • degophercloudification
  • deployment
  • deployment-2
  • deployment-2-wip-cnci
  • deployment-2-wip-master
  • deswagger
  • docker
  • docker-py
  • docker_deps
  • documentation
  • drop-ansible
  • dual_node
  • enable-race-checks
  • enable-volume-singlevm
  • ephemeral-boot-from-volume
  • error-reporting-improvements-1
  • error-reporting-improvements-2
  • error-reporting-internals
  • external-ip-duplicate
  • external-ip-quota-tracking
  • external_ip
  • fix-1
  • fix-1009
  • fix-1027
  • fix-1145
  • fix-1173
  • fix-1191
  • fix-674
  • fix-683
  • fix-724
  • fix-751
  • fix-763
  • fix-872
  • fix-889
  • fix-911
  • fix-953
  • fix-956
  • fix-ansible-docs
  • fix-bat
  • fix-ceph-in-ciao-down
  • fix-ceph-leak
  • fix-ciao-cli
  • fix-client-merge-break
  • fix-dupe-json
  • fix-fedora
  • fix-image-template
  • fix-instance-ordering
  • fix-kubicle
  • fix-kubicle-master
  • fix-launcher-deadlock
  • fix-openstack-block
  • fix-openstack-volume-loop-corruption
  • fix-pool-negative
  • fix-qmp-cancel
  • fix-quotas-cli
  • fix-readme
  • fix-red
  • fix-single-vm
  • fix-ssh
  • fix-ssntp-stringer
  • fix-templates
  • fix-test-compile-errors
  • fix-travis
  • fix-travis-crets
  • fix-travis-issue
  • fix-travis-tip
  • fix-volume-ordering
  • fix-volume-status
  • fix-workload-raciness
  • floating_ip
  • go-1.8-travis
  • golang-1.9
  • golang-1.9-travis
  • gometalinter-use-tagged
  • gophercloud-revendor
  • hide-internal-volumes
  • http-error-fix
  • identity
  • ignore_vimfiles
  • image
  • image-bat
  • image-cleanup
  • image-id-removal
  • image-service-configuration-cleanup
  • image_api
  • images
  • improve-storage-error-logging
  • increase-sqlite-coverage
  • install_from_source
  • instance-cleanup-ephemeral
  • instance-for-external-ip
  • instance-naming
  • issue-563
  • issue-661
  • issue-663
  • issue-905
  • justtesttravis
  • kaccardi/issues/246
  • kaccardi/topic/add-name-description
  • kaccardi/topic/ciao-release
  • kaccardi/topic/ciao-test
  • kaccardi/topic/deploy-ciao
  • kaccardi/topic/fake-keystone
  • kaccardi/topic/storage
  • kaccardi/topic/storage-detach
  • kaccardi/topic/storage-unit-tests
  • kaccardi/topic/travis-deploy
  • keystone
  • kubeadm
  • kubicle-doc
  • kubicle-docs
  • launcher
  • launcher-mibi
  • launcher-testability-tweaks
  • launcher-unmap-mapped
  • lintbat
  • log-depth-fix
  • logging-refactor
  • logs
  • master
  • master_test
  • mcastelino-single-machine
  • mcastelino/topic/cleanup
  • mcastelino/topic/singlemachine
  • memory-backend-transient
  • memory-datastore
  • meta-deadcode
  • migration
  • minor-pool-fixes
  • minor-singlevm-fixes
  • misc
  • misc-launcher-bugfixes
  • mispel
  • missing_dir
  • move-cnci-defaults
  • networks_scheduling
  • no-start-public-cnci
  • origin/kaccardi/topic/storage
  • osprepare-logger
  • ovmf
  • parse-commands-before-tenant-setup
  • partial-instance-launching
  • persistent-store-cleanup
  • pools-admin-check
  • populate-volume-size
  • prepare
  • qemu-img
  • quota-manager
  • quota-volume-error-reporting
  • quotas-implementation-1
  • quotas-implementation-2
  • quotas-implementation-3
  • race-testing
  • rbradford-fix-1009
  • remove-attachments
  • remove-disk-mb
  • remove-elliptic
  • remove-gophercloud
  • remove-webui
  • remove_distr_configuration
  • restart-cnci
  • resultschan_debug
  • revendor-gorilla
  • revert-1409-use-virtio-rng
  • revert-445-singlevm
  • revert-588-ciao-singlevm-tls
  • run_as_ciao
  • sameo/issue/323
  • sameo/issue/325
  • sameo/issues/136
  • sameo/issues/152
  • sameo/issues/153
  • sameo/issues/166
  • sameo/issues/169
  • sameo/issues/173
  • sameo/issues/183
  • sameo/issues/19
  • sameo/issues/208
  • sameo/issues/59
  • sameo/issues/67
  • sameo/topic/bat
  • sameo/topic/certs
  • sameo/topic/ciao-cli
  • sameo/topic/cinder
  • sameo/topic/configuration
  • sameo/topic/glance
  • sameo/topic/go-fuzz
  • sameo/topic/godoc-badge
  • sameo/topic/misspell-fixes
  • sameo/topic/networking
  • sameo/topic/qemu
  • sameo/topic/release
  • sameo/topic/singlevm
  • sameo/topic/storage
  • sameo/topic/tracing
  • sboeuf/add_qemu_pci_net_device
  • sched_no_nn
  • scratch
  • share-code
  • single-http-server
  • single-oshandler
  • singlemachine
  • singlevm
  • singlevm-launcher-cleanup
  • singlevm-speedup
  • singlevm-spring-clean
  • singlevm-webui
  • skip_ceph
  • snnet-debugging-travis
  • soft-qemu-testing
  • spell-go-code
  • split_compute_and_net_node_mgmt
  • ssntp-cert-csr
  • ssntp-cert-request
  • ssntp_role
  • storage
  • storage-bat-enhancements
  • storage-driver-config
  • storage-ephemeral-fix
  • storage_bat
  • store-images-in-ceph
  • template-autogen-doc
  • templateutils
  • tenant-addition-raciness-fix
  • tenant-name-fix
  • tenant_empty_fix
  • test-cert-files
  • test-cert-generator
  • test-jenkins
  • tfortools
  • topic/add-test-storage-workload
  • topic/allow-overlapping-ips
  • topic/alt-cnci-del
  • topic/api-regex-cleanup
  • topic/api-stub
  • topic/attachments
  • topic/block-api
  • topic/boot-from-volume
  • topic/change-expected-response
  • topic/ciao-cli-revert-tls
  • topic/cnci-cleanup
  • topic/cnci-instance
  • topic/cnci-manager
  • topic/combined-external-ips
  • topic/config-subnet-bits
  • topic/confirm-tenant
  • topic/controller-external-ips
  • topic/create-CopyBlockDevice
  • topic/delete-node-stats
  • topic/delete-workloads
  • topic/enable-block-testing
  • topic/enable-identity-tests
  • topic/enable-os-image-tests
  • topic/etcd
  • topic/external-ip-api
  • topic/external-ips
  • topic/external-ips-persistence
  • topic/fix-compute-port
  • topic/fix-datastore-storage
  • topic/fix-datastore-tests
  • topic/fix-delete-response
  • topic/fix-fake-storage
  • topic/fix-get-tenants-storage
  • topic/fix-image-import
  • topic/fix-image-layering-param
  • topic/fix-single-vm-mkdir
  • topic/fix-singlevm-hostname
  • topic/fix-tenant-out-of-bounds
  • topic/fix-tenant-pools
  • topic/fix-travis
  • topic/fix-update-attachments
  • topic/fix-warning-client
  • topic/fix-workload-validation
  • topic/fixup-cncis
  • topic/flag-parse
  • topic/get-tenant-instance
  • topic/handle-getStorage-error
  • topic/handle-unassign-error
  • topic/ineffassign
  • topic/issue-1158
  • topic/issue-867
  • topic/issue-870
  • topic/issue-871
  • topic/issue-898
  • topic/k8s_setup
  • topic/kaccardi/coveralls
  • topic/kaccardi/release
  • topic/keystone-container-singlevm
  • topic/misspell
  • topic/move-compute
  • topic/new-boot-from-volume
  • topic/node-summary
  • topic/orientation
  • topic/refactor-new-config
  • topic/remove-no-network
  • topic/semaphore-ci-test
  • topic/send-volume-attachments
  • topic/storage-fork
  • topic/storage-pull-request
  • topic/tenant-workloads-wip
  • topic/test-testutils
  • topic/travis-test
  • topic/unit-test-cnci-launch
  • topic/update-attachments-at-delete
  • topic/update-getStorage
  • topic/use-demo-in-singlevm
  • topic/workload-show
  • topic/workloads
  • tpepper-prepare
  • tpepper/topic/unittests
  • travis
  • travis-apt-get-update-fix
  • travis_sched_warning_cleanup
  • unit-test-tweaks
  • unit-testing
  • unittest
  • unittests
  • update-boltdb
  • update-netlink
  • update-sqlite3
  • update-yaml
  • use-routes-for-testing
  • use-virtio-rng
  • v0.5a
  • volume-image-experiment
  • volume-resize
  • wip-cluster-deploy
  • wip-deployment-3
  • workload-defaults-refactor
  • workload-multiple-storage
  • workload-verification-enhancements
  • workload_ssh_key_file_to_var
  • workloads

pending completion
368

push

travis-ci

markdryan
controller: Fix race condition in confirmTenant

This commit ensures that confirmTenant is only successfully called once
for each tenant during any invocation of controller.  The problem is
that confirmTenant is not re-entrant and yet can be called by multiple
go routines simulataneously.  This means that a ciao cluster can be
broken by two commands issued simultaneously on a new tenant.

The tricky thing about fixing this bug is that we cannot really protect
the whole function with a mutex.  The function is potentially very slow
as it optionally needs to wait for a CNCI to launch.  Using a critical
section for the entire function would result in commands for existing
tenants being blocked while a CNCI was launched for a new tenant, which
wouldn't be great.

The fix works by introducing tenant specific channels that provide
synchronisation points for individual tenants.  These channels are
stored in a global map.  This map requires a lock, but the lock only
needs to be held for a short period of time, the time taken to
read or write something to the map.  Thus the act of launching a
CNCI on a tenant blocks only commands on that tenant and not commands
destined for other tenants.

The fix assumes that tenants do not get deleted, and if they do, that
their UUIDs do not get re-used.

Fixes #1007

Signed-off-by: Mark Ryan <mark.d.ryan@intel.com>

14567 of 21821 relevant lines covered (66.76%)

2.15 hits per line

Relevant lines Covered
Build:
Build:
21821 RELEVANT LINES 14567 COVERED LINES
2.15 HITS PER LINE
Source Files on fix-1007
  • List 0
  • Changed 9
  • Source Changed 1
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
368 fix-1007 controller: Fix race condition in confirmTenant This commit ensures that confirmTenant is only successfully called once for each tenant during any invocation of controller. The problem is that confirmTenant is not re-entrant and yet can be calle... push 24 Jan 2017 11:12AM UTC markdryan travis-ci pending completion  
367 fix-1007 controller: Fix race condition in confirmTenant This commit ensures that confirmTenant is only successfully called once for each tenant during any invocation of controller. The problem is that confirmTenant is not re-entrant and yet was called b... push 23 Jan 2017 04:44PM UTC markdryan travis-ci pending completion  
See All Builds (4535)
  • 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