Merge upstream into the db-log feature branch #2419

Merged
merged 413 commits into from May 25, 2015

Conversation

Projects
None yet
Contributor

mjs commented May 25, 2015

There's no new changes in this PR - this is purely a merge.

There's changes in master that I'd like to take advantage of with the db logging work and it's a good idea to sync up this branch anyway given how old it is.

(Review request: http://reviews.vapour.ws/r/1780/)

ericsnowcurrently and others added some commits Apr 27, 2015

Merge pull request #2132 from ericsnowcurrently/bootstrap-featureflag…
…ged-providers

Check for provisional providers in the bootstrap command.

Provisional providers are those we hide behind a feature flag.  The feature flag should apply only to bootstrap.  This patch pulls the logic to do so into the bootstrap command.  That way we fail as early as possible.  In the interest of reducing churn, the patch performs an extra environs.ConfigForName call (in the environType helper).  Ideally we would refactor code in the environs package to eliminate the need to do so.

(fixes https://bugs.launchpad.net/juju-core/+bug/1450146)

(Review request: http://reviews.vapour.ws/r/1494/)
Merge pull request #2191 from wallyworld/fix-missing-hook-logic
Run afterHook logic even if a hook is missing

Fixes: https://bugs.launchpad.net/bugs/1450917

If a hook is missing, the afterHook() logic was not being run. This was bad if the Start hook was the missing hook, as it meant a legacy charm which does not set its own status never transitioned out of installing.

Driveby improvement to the status not found error (to aide debugging) and a tweak to the status lost logic (which really needs to be moved, but now now).

(Review request: http://reviews.vapour.ws/r/1553/)
Merge pull request #2193 from wallyworld/fix-missing-hook-logic-master
Merge pull request #2191 from wallyworld/fix-missing-hook-logic

Run afterHook logic even if a hook is missing

Fixes: https://bugs.launchpad.net/bugs/1450917

If a hook is missing, the afterHook() logic was not being run. This was bad if the Start hook was the missing hook, as it meant a legacy charm which does not set its own status never transitioned out of installing.

Driveby improvement to the status not found error (to aide debugging) and a tweak to the status lost logic (which really needs to be moved, but now now).

(Review request: http://reviews.vapour.ws/r/1553/)

(Review request: http://reviews.vapour.ws/r/1555/)
Merge pull request #2139 from axw/service-systemd-environment
service/systemd: fix env var format

On vivid, unit files' Environment entries are
being formatted like so:
    Environment=""A"="B"" ""C"="D""

They should be formatted as:
    Environment="A=B" "C=D"

Fixes https://bugs.launchpad.net/juju-core/+bug/1449436

(Review request: http://reviews.vapour.ws/r/1500/)
Merge pull request #2194 from wallyworld/restore-deploy-1.16
Restore old 1.16 behavior when deploying a service

Fixes: https://bugs.launchpad.net/bugs/1450912

The actual code changes are small - restoring a dozen or so lines of code to DeployService. The bulk of the remaining changes are refactoring tests and test infrastructure since the deploy logic had been moved off the client facade onto the service facade. The tests can only run with a single fake charm store so some rework was needed to make everything fit together.

(Review request: http://reviews.vapour.ws/r/1556/)
Conflicts:
	apiserver/service/service.go
Merge pull request #2195 from wallyworld/restore-deploy-1.16-master
Merge pull request #2194 from wallyworld/restore-deploy-1.16

Restore old 1.16 behavior when deploying a service

Fixes: https://bugs.launchpad.net/bugs/1450912

The actual code changes are small - restoring a dozen or so lines of code to DeployService. The bulk of the remaining changes are refactoring tests and test infrastructure since the deploy logic had been moved off the client facade onto the service facade. The tests can only run with a single fake charm store so some rework was needed to make everything fit together.

(Review request: http://reviews.vapour.ws/r/1556/)
Conflicts:
	apiserver/service/service.go

(Review request: http://reviews.vapour.ws/r/1557/)
state: allow Machine.SetPassword to work pre env UUID migration
Machine.SetPassword would fail if called before the env UUID migration
for the machine collection has been run. This was breaking upgrades
from 1.18 to 1.23.

This change also unified the was State.Machine and Machine.Refresh
retrieve machine documents. This means that Machine.Refresh now also
works before the env UUID migration has been applied to the machines
collection.

Fixes LP #1451297.
Merge pull request #2198 from mjs/1451297-upgrade-setpassword-fail
state: allow Machine.SetPassword to work pre env UUID migration

Machine.SetPassword would fail if called before the env UUID migration for the machine collection has been run. This was breaking upgrades from 1.18 to 1.23.

This change also unified the was State.Machine and Machine.Refresh retrieve machine documents. This means that Machine.Refresh now also works before the env UUID migration has been applied to the machines collection.

Fixes LP #1451297.

(Review request: http://reviews.vapour.ws/r/1560/)
Revert pull request #2124 natefinch/fix-win-env
Fixes lp:1450919 as the branch regressed the environment variable handling.

This reverts commit 61795e6, reversing
changes made to 0a5fdc6.
Merge pull request #2207 from bz2/revert_pr2124
Revert pull request #2124 natefinch/fix-win-env

Fixes lp:1450919 as the branch regressed the environment variable handling.

This reverts commit 61795e6, reversing
changes made to 0a5fdc6.

(Review request: http://reviews.vapour.ws/r/1567/)
Cherry-pick pull request #2192 to master
Fix the provisional provider test.

(fixes https://bugs.launchpad.net/juju-core/+bug/1451100)

The recently added provisional provider change broke under gccgo because we
don't support vsphere there for the moment.  This patch fixes that.
Merge pull request #2216 from bz2/cherrypick_pr2192
Cherry-pick pull request #2192 to master

Fix the provisional provider test.

(fixes https://bugs.launchpad.net/juju-core/+bug/1451100)

The recently added provisional provider change broke under gccgo because we
don't support vsphere there for the moment.  This patch fixes that.

(Review request: http://reviews.vapour.ws/r/1576/)
Merge pull request #2205 from sinzui/inc-1.25-alpha1
Increment master to 1.25-alpha1.



(Review request: http://reviews.vapour.ws/r/1565/)
Merge pull request #2173 from voidspace/addressable-featureflag
Addressable Containers Feature Flag.

Forward-port PRs #2097 and #2103 from 1.23. Put addressable containers behind a feature flag.

(Review request: http://reviews.vapour.ws/r/1534/)
Migrated most leadership logging to debug level.
Signed-off-by: Katherine Cox-Buday <cox.katherine.e@gmail.com>
Merge pull request #2218 from kat-co/fix-1437015-master
Migrated most leadership logging to debug level.

Signed-off-by: Katherine Cox-Buday <cox.katherine.e@gmail.com>

(Review request: http://reviews.vapour.ws/r/1578/)
state: fix env UUID migrations to not be sensitive to map ordering
The migrations helper now uses bson.D instead of bson.M.

Fixes LP #1451674.
Merge pull request #2225 from mjs/1451674-db-migration-field-ordering
state: fix env UUID migrations to not be sensitive to map ordering

The migrations helper now uses bson.D instead of bson.M.

Fixes LP #1451674.

(Review request: http://reviews.vapour.ws/r/1585/)
Merge pull request #2184 from mjs/1441904-mongodb-apt-get
mongo: don't treat apt-get failures as fatal

If installation/upgrade of Juju's MongoDB package fails, continue anyway as it's likely a workable package is already installed. Problems with the packaging system shouldn't prevent jujud
from starting.

Fixes LP #1441904.

(Review request: http://reviews.vapour.ws/r/1546/)
Merge pull request #2214 from mattyw/patch-1
cmd/juju/package_test.go: Trivial spelling



(Review request: http://reviews.vapour.ws/r/1574/)
Merge pull request #2069 from mattyw/unit-id-unique
state/service: Unit names are unique across service names lp:1174610

The latest attempt at solving: https://bugs.launchpad.net/juju-core/+bug/1174610

Previously the following sequence would take place
```
juju deploy foobar (one unit: foobar/0)
juju destroy-service foobar
juju deploy foobar (one unit: foobar/0)
```

This pr makes the second deploy result in a single unit foobar/1.

Or stated another way: Unit names are now unique per service name.

This was achieved by removing UnitSeq from the service collection and using the global sequences collection to store the unit number.

(Review request: http://reviews.vapour.ws/r/1425/)
Merge pull request #2112 from bz2/os_instances_error_handling
Propogate errors when listing openstack instances

Junks collectInstances function which is legacy from EC2
provider implementation and replaces with listServers,
which does much the same thing but without the incremental
building across attempts.

Bumps goose dependency to test error responses properly.

(Review request: http://reviews.vapour.ws/r/1473/)
Merge pull request #2226 from mattyw/meter-status-zero-value
state/meterstatus: Let's not have the good case as the default value

Previously the default value of MeterStatus (int: 0) equated to the good case (Green) Let's swap it around so the default value is also the worst case

(Review request: http://reviews.vapour.ws/r/1586/)
Merge pull request #2158 from bz2/joyent_kvm_packages_only
Fix lp:1446264 by using joyent kvm packages only

Currently the joyent provider does not distinguish between
kvm and smart package types, it just assumes all listed
packages are kvm. This causes CreateMachine to fail if it
happens to try combining a smart package with a kvm image.

Unfortunately, the Joyent ListPackages api does not include
the virt type, however according to the Joyent developers
only the kvm packages have VCPUs set to one or greater.

Change the joyent provider to correctly label the packages
virt type based on the number of vcpus, and constrain
InstanceSpec selection to kvm packages and images only.

(Review request: http://reviews.vapour.ws/r/1519/)
Merge pull request #2211 from perrito666/fix_1.24_1415176
Fix 1415176

Debug hooks was not passing the exit status from the debug
session unless it happened to be the last tmux window.
I made the exit status be stored and retrieved by the script
that is being called by RunHooks

(Review request: http://reviews.vapour.ws/r/1571/)
Merge pull request #2230 from perrito666/fix_lp1415176
Backport fix for 1415176 from 1.24

Fix 1415176

Debug hooks was not passing the exit status from the debug
session unless it happened to be the last tmux window.
I made the exit status be stored and retrieved by the script
that is being called by RunHooks

(Review request: http://reviews.vapour.ws/r/1590/)
Merge pull request #2189 from wwitzel3/ww3-forward-port-doc
doc: added some information about forward porting



(Review request: http://reviews.vapour.ws/r/1551/)
cmd/jujud/agent: refactoring replicaset initiation
Instead of deciding whether to do replicaset initiation based on the
previous agent version (which can't be relied on in all cases - see
the ticket), initiate the replicaset if it hasn't been done yet. This
approach is now also taken for other DB upgrade related tasks such as
adding the admin user and generating the shared secret.

Also added some basic tests for replicaset initiating as there were
none.

Fixes LP #1441913.
worker/peergrouper: avoid unnecessary replicaset initiate attempts
InitiateMongoServer kept trying to initiate the replicaset when it was
already initiated. The retry loop is now exited early if the
replicaset is already up.

This also reduces the peergrouper tests run time from ~2 mins to a few
seconds!
Merge pull request #1900 from fwereade/dependency-runner
Dependency engine

Introduce worker/dependency.Engine

This is intended to solve a general problem with shared-resource access and lifetimes inside jujud agents. See worker/dependency/doc.go for details.

Immediate plans are to use it to clean up the unit agent, by extracting filter and leadership-tracker creation from uniter creation and representing them as dependencies, and opening a path to allowing both leader-deposed and metrics hooks to run without requiring an api connection.

Future plans include hopefully replacing large parts of jujud and its various worker.Runner-related hacks; in particular, representing api/state conns as engine resources, and also more abstract concepts: possession of a state connection to a local master (to replace singular) and successful completion of upgrade steps (on which almost everything will depend).

Still further future plans involve representing Environs as engine resources, and expressing them as dependencies of provisioner, firewaller, instancepoller, etc. (Environs implementations are meant to be goroutine-safe anyway -- why duplicate them?)

(Review request: http://reviews.vapour.ws/r/1224/)
Merge pull request #2232 from davecheney/100-fix-lp-1450299
apiserver/agent, environs/configstore: work around lp 1450299

Fixes LP 1450299

(Review request: http://reviews.vapour.ws/r/1592/)
Merge pull request #2219 from natefinch/fix-win-env
Fix win env

re-implement the windows environment variable case insensitivity fix, this time with better tests.  This is mostly a copy of PR #2124, with a couple tweaks.  This re-fixes https://bugs.launchpad.net/juju-core/+bug/1446871

(Review request: http://reviews.vapour.ws/r/1579/)

jujubot and others added some commits May 19, 2015

Merge pull request #2347 from wallyworld/robust-lxc-images
When using blobstore to add/read images, retry in there's an i/o error

Fixes: https://bugs.launchpad.net/juju-core/+bug/1454676

We have a couple of issues when deployer is used to deploy a bundle and everything is done at once.
Firstly, I/O contention - fetching and storing the LXC image template in the blob store fails due to an I/O timeout. Some LXC containers do start, so Juju should just retry in such cases.
The other issue is that multiple downloads of the same image are allowed to occur - if a download for a given image is already in progress, any new requests should wait and use that image once the initial download completes.

So a helper is created that can be used to retry transient network operations that fail. This is just used here for loading/saving images to blob store, but can be used elsewhere when needed.
The other fix is to add a lock to the image fetching so that it only happens once. This reduces I/O contention on the blobstore, and fixes an obvious implementation inefficiency.

(Review request: http://reviews.vapour.ws/r/1709/)
Merge pull request #2363 from wallyworld/1.20-client-compatible-1.24
Merge pull request #2362 from wallyworld/1.20-client-compatible-1.23

Merge pull request #2360 from wallyworld/1.20-client-compatible

Add 'anything' to valid certificate server addresses for 1.20 client compatibility.

Fixes: https://bugs.launchpad.net/juju-core/+bug/1454829

Juju 1.20 clients use "anything" as the server name in their TLS config when making secure connections to the Juju state server. The certificate generation from 1.22 onwards needs to account for this.

(Review request: http://reviews.vapour.ws/r/1719/)

(Review request: http://reviews.vapour.ws/r/1721/)

(Review request: http://reviews.vapour.ws/r/1722/)
Merge pull request #2358 from ericsnowcurrently/fix-1450092-cloudinit…
…-init-system-detection

Dynamically discover init system in the cloudinit script.

(fixes https://bugs.launchpad.net/juju-core/+bug/1450092)

Keying off the juju version doesn't work well for local provider. This patch resolves the issue by adding discovery to the cloudinit script.

(Review request: http://reviews.vapour.ws/r/1595/)
Merge pull request #2364 from wallyworld/port-1.24-bugs
Port 1.24 bugs

Forward port 2 bug fixes as per below.

Merge pull request #2347 from wallyworld/robust-lxc-images …

When using blobstore to add/read images, retry in there's an i/o error

Fixes: https://bugs.launchpad.net/juju-core/+bug/1454676

We have a couple of issues when deployer is used to deploy a bundle and everything is done at once.
Firstly, I/O contention - fetching and storing the LXC image template in the blob store fails due to an I/O timeout. Some LXC containers do start, so Juju should just retry in such cases.
The other issue is that multiple downloads of the same image are allowed to occur - if a download for a given image is already in progress, any new requests should wait and use that image once the initial download completes.

So a helper is created that can be used to retry transient network operations that fail. This is just used here for loading/saving images to blob store, but can be used elsewhere when needed.
The other fix is to add a lock to the image fetching so that it only happens once. This reduces I/O contention on the blobstore, and fixes an obvious implementation inefficiency.

(Review request: http://reviews.vapour.ws/r/1709/)

Merge pull request #2363 from wallyworld/1.20-client-compatible-1.24 …

Add 'anything' to valid certificate server addresses for 1.20 client compatibility.

Fixes: https://bugs.launchpad.net/juju-core/+bug/1454829

Juju 1.20 clients use "anything" as the server name in their TLS config when making secure connections to the Juju state server. The certificate generation from 1.22 onwards needs to account for this.

(Review request: http://reviews.vapour.ws/r/1719/)

(Review request: http://reviews.vapour.ws/r/1721/)

(Review request: http://reviews.vapour.ws/r/1722/)
Merge pull request #2353 from voidspace/master-dead-addresses
IP addresses are released on machine destruction

This is a forward port of a branch already landed on 1.23.

IP addresses, for addressable containers, will be marked as dead when the machine they're allocated to is destroyed. This requires an upgrade step to add the instance id of the machine to the ip address as the instance data is no longer available once the machine is destroyed.

(Review request: http://reviews.vapour.ws/r/1715/)
Merge pull request #2319 from perrito666/fix_1.22_1454599
Added control for expected errors in firwaller (FIX 1454599)

Firewaller should not fail when a machine is not yet provisioned, if such is the case we should just log the occurence.

(Review request: http://reviews.vapour.ws/r/1680/)
Merge pull request #2372 from wallyworld/port-firewaller-fix-master
Merge pull request #2319 from perrito666/fix_1.22_1454599

Added control for expected errors in firwaller (FIX 1454599)

Firewaller should not fail when a machine is not yet provisioned, if such is the case we should just log the occurence.

(Review request: http://reviews.vapour.ws/r/1680/)

(Review request: http://reviews.vapour.ws/r/1732/)
Merge pull request #2392 from dimitern/lp-1442257-1.25
Fixed lp:1442257 - port of #2366 to 1.25

This includes 2 fixes for 1.25:

* http://pad.lv/1442257 - instead of inheriting LXC containers' host's
  primary NIC's MTU value for container NICs, now we have an optional
  integer environment setting "lxc-default-mtu", which when set to a
  positive number will cause all LXC (but not KVM) NICs to use that
  MTU. This is a straightforward port of #2365 to 1.25.
* Related, but not a fix for http://pad.lv/1443942 (originally proposed
  as #2190 but it didn't land in time) - only add iptables SNAT rules
  on the container hosts for EC2 environments, as this breaks MAAS and
  it's not needed (fallout from the original fix #2071 for bug
  http://pad.lv/1442801).

Live tested on MAAS and EC2 with the following configurations:
* bootstrap on trusty, add a precise node
* bootstrap on precise, add a trusty node
* in both cases above, do a test with and without the address-allocation
  feature flag
* deploy workloads and relate them in LXC and KVM

More unit tests around the enableNAT logic will be added later,
as described bug lp:1443942.
Revert "Merge pull request #2378 from ericsnowcurrently/fix-1457011-b…
…ashisms"

This reverts commit f674878, reversing
changes made to 5ef8cb2.
Revert "Merge pull request #2358 from ericsnowcurrently/fix-1450092-c…
…loudinit-init-system-detection"

This reverts commit ebfc363, reversing
changes made to f1f008c.
apiserver: fix data race in tests
This PR removes the data race on the timer reference captured using PatchValue.
timer's cannot be reset across multiple goroutines, the only part that is safe
to use concurrently is the timer.C channel.

Resetting the timer was only used during the latter part of the test to avoid waiting
for the entire 3 minutes, so replace that with a call to set the timer to an initally
small value, then adjust the test to work around multiples of this value.
cert: fix data race in checkTLSConnection
Fix data race on outBytes and make the test a whole lot simpler.
cert: fix data race in checkTLSConnection
Fix data race on outBytes and make the test a whole lot simpler.
state: exposed txn pruning functionality
github.com/juju/txn.Runner now has a MaybePruneTransactions
method. This change exposes that on multiEnvRunner and as a method on
State.
worker/txnpruner: new simple worker to prune completed txn data
Periodically calls PruneTransactions to keep the txns collection in
check.
Merge pull request #2408 from dimitern/lp-1456989-1.25
Fixed lp:1456989 - port to 1.25 of the cloud-init 0.6.3 (precise) workaround

Reintroducing a change which was dropped with the introduction of CentOS
support (#2066): cloud-init 0.6.3 needs special handling for packages
needing the cloud-tools repo (precise-updates/cloud-tools). Without this
fix, deploying to precise fails at cloud-init time with errors running
apt-get install. For more details see http://pad.lv/1456989.

This ports #2395 to 1.25, no other changes.

Live tested on MAAS and EC2.

(Review request: http://reviews.vapour.ws/r/1769/)
Merge pull request #2401 from davecheney/199-fix-data-race-in-apiserv…
…er-tests

apiserver: fix data race in tests

This PR removes the data race on the timer reference captured using PatchValue.
timer's cannot be reset across multiple goroutines, the only part that is safe
to use concurrently is the timer.C channel.

Resetting the timer was only used during the latter part of the test to avoid waiting
for the entire 3 minutes, so replace that with a call to set the timer to an initally
small value, then adjust the test to work around multiples of this value.

(Review request: http://reviews.vapour.ws/r/1762/)
Fix bug 1454697
Agents which use a close worker need to close the API they open
if their start functions fail.  This patch fixes the machine
and unit agents and mocks out the api state upgrader to simulate
the failure and test that the close occurs.

Conflicts:
	cmd/jujud/unit.go
Address review comments.
Used a channel instead of a boolean for the patched reportClosedAPI
function.  Also changed the report* functions to take an io.Closer
rather than an interface{}.

Conflicts:
	cmd/jujud/unit_test.go
Address review comments
Added closure of the channel.
Merge pull request #2402 from davecheney/199-fix-data-race-in-cert-tests
cert: fix data race in checkTLSConnection

Fix data race on outBytes and make the test a whole lot simpler.

(Review request: http://reviews.vapour.ws/r/1764/)
Merge pull request #2350 from anastasiamac/add-storage-cli
Storage add cli.

We want to add storage instances to a unit dynamically.
This is a storage add command, `juju storage add <unit name> <charm storage name>=<disk constraints>`.
Feature tests ensure that the full "storage add" stack is reachable.


(Review request: http://reviews.vapour.ws/r/1712/)
Merge pull request #2411 from cherylj/file_handle_125
Forward port of fix for bug 1454697 (master)



(Review request: http://reviews.vapour.ws/r/1772/)
Merge pull request #2412 from davecheney/199-fix-error-message
Adjust error messages to be compatible with Go 1.5

Make test compatible with Go 1.2 and Go 1.4+

(Review request: http://reviews.vapour.ws/r/1773/)
Merge pull request #2388 from mjs/1453785-txn-pruning
Prune completed transactions

This set of changes integrates the new txn pruning functionality in juju/txn into Juju. A new txnpruner worker for the master machine agent is introduced to call MaybePruneTransactions periodically. Transactions will be pruned if the transaction count has doubled since the last prune.

Fixes LP #1453785.


(Review request: http://reviews.vapour.ws/r/1749/)
Merge pull request #2413 from davecheney/199-fix-data-race-in-agent-test
cmd/jujud/agent: fix data race in test

Fix data race in test by using atomics for the counter and moving variables captured via an anon closure into the closure.

(Review request: http://reviews.vapour.ws/r/1774/)
Merge pull request #2414 from davecheney/199-worker-rsyslog-fix-race-…
…in-test

199 worker rsyslog fix race in test



(Review request: http://reviews.vapour.ws/r/1775/)
Merge pull request #2404 from wallyworld/service-amchine-destroy
Don't complain when destroying a machine that is about to be cleaned up

Fixes: https://bugs.launchpad.net/juju-core/+bug/1455158

Adds extra doc to service and unit destroy commands to explain that when the last unit is destroyed, the machine can also be cleaned up.

Add code to machine destroy to check that if there is a unit still on that machine, the service itself may be dying and thus the cleanup worker will eventually harvest the machine. So the machine destroy becomes a no-op and there's no error returned. Previously an error was returned which complained that the machine had assigned units, which it sort of did, but not alive for much longer and the user would get an error and see the machine destroyed anyway.

(Review request: http://reviews.vapour.ws/r/1766/)
Merge pull request #2417 from wallyworld/service-machine-destroy-master
Merge pull request #2404 from wallyworld/service-amchine-destroy

Don't complain when destroying a machine that is about to be cleaned up

Fixes: https://bugs.launchpad.net/juju-core/+bug/1455158

Adds extra doc to service and unit destroy commands to explain that when the last unit is destroyed, the machine can also be cleaned up.

Add code to machine destroy to check that if there is a unit still on that machine, the service itself may be dying and thus the cleanup worker will eventually harvest the machine. So the machine destroy becomes a no-op and there's no error returned. Previously an error was returned which complained that the machine had assigned units, which it sort of did, but not alive for much longer and the user would get an error and see the machine destroyed anyway.

(Review request: http://reviews.vapour.ws/r/1766/)

(Review request: http://reviews.vapour.ws/r/1778/)
Owner

howbazaar commented May 25, 2015

JFDI

Contributor

mjs commented May 25, 2015

$$merge$$

Contributor

jujubot commented May 25, 2015

Status: merge request accepted. Url: http://juju-ci.vapour.ws:8080/job/github-merge-juju

jujubot added a commit that referenced this pull request May 25, 2015

Merge pull request #2419 from mjs/db-log-merge-upstream
Merge upstream into the db-log feature branch

There's no new changes in this PR - this is purely a merge.

There's changes in master that I'd like to take advantage of with the db logging work and it's a good idea to sync up this branch anyway given how old it is.



(Review request: http://reviews.vapour.ws/r/1780/)

@jujubot jujubot merged commit b85fe56 into juju:db-log May 25, 2015

@mjs mjs deleted the mjs:db-log-merge-upstream branch May 25, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment