# Buggy code
def getConnectedJobs(jobWrapper):
    if jobWrapper.jobStoreID in reachableFromRoot:
        return
    reachableFromRoot.add(jobWrapper.jobStoreID)
    # Traverse jobs in stack
    for jobs in jobWrapper.stack:
        for successorJobStoreID in map(lambda x: x[0], jobs):
            if successorJobStoreID not in reachableFromRoot and haveJob(
                successorJobStoreID
            ):
                getConnectedJobs(getJob(successorJobStoreID))
    # Traverse service jobs
    for jobs in jobWrapper.services:
        for serviceJobStoreID in map(lambda x: x[0], jobs):
            if haveJob(serviceJobStoreID):
                assert serviceJobStoreID not in reachableFromRoot
                reachableFromRoot.add(serviceJobStoreID)


# Traceback (boto.exception.S3CreateError)
ubuntu@ip-172-31-24-34:~/common-workflow-language$ toil clean aws:us-west-2:peter-cwltoil-test
2016-04-13 15:36:32,632 INFO:toil.lib.bioio: Logging set at level: INFO
2016-04-13 15:36:32,632 INFO:toil.utils.toilClean: Parsed arguments
2016-04-13 15:36:32,633 INFO:toil.utils.toilClean: Checking if we have files for toil
Traceback (most recent call last):
File "/usr/local/bin/toil", line 9, in <module>
load_entry_point('toil==3.2.0a2.dev134', 'console_scripts', 'toil')()
File "/usr/local/lib/python2.7/dist-packages/toil/utils/toilMain.py", line 30, in main
module.main()
File "/usr/local/lib/python2.7/dist-packages/toil/utils/toilClean.py", line 53, in main
jobStore = Toil.loadOrCreateJobStore(options.jobStore)
File "/usr/local/lib/python2.7/dist-packages/toil/common.py", line 501, in loadOrCreateJobStore
return AWSJobStore.loadOrCreateJobStore(jobStoreArgs, config=config)
File "/usr/local/lib/python2.7/dist-packages/toil/jobStores/aws/jobStore.py", line 117, in loadOrCreateJobStore
return cls(region, namePrefix, config=config, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/toil/jobStores/aws/jobStore.py", line 174, in __init__
self.filesBucket = self._getOrCreateBucket(qualify('files'), versioning=True)
File "/usr/local/lib/python2.7/dist-packages/toil/jobStores/aws/jobStore.py", line 469, in _getOrCreateBucket
bucket = self.s3.create_bucket(bucket_name, location=self.region)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 616, in create_bucket
response.status, response.reason, body)
boto.exception.S3CreateError: S3CreateError: 409 Conflict
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>BucketAlreadyExists</Code><Message>The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.</Message><BucketName>peter-cwltoil-test--files</BucketName><RequestId>DAF5D5E6B138F1AB</RequestId><HostId>t9Fz0/fKNcxA5q7gLBuk7FMu9AxCD4AdyXMIWhWOtJVyNS8ARDxnWDQOBZdeTmpkcVtXa9brMss=</HostId></Error>

# Fixed code
def getConnectedJobs(jobWrapper):
    if jobWrapper.jobStoreID in reachableFromRoot:
        return
    reachableFromRoot.add(jobWrapper.jobStoreID)
    # Traverse jobs in stack
    for jobs in jobWrapper.stack:
        for successorJobStoreID in map(lambda x: x[0], jobs):
            if successorJobStoreID not in reachableFromRoot and haveJob(
                successorJobStoreID
            ):
                getConnectedJobs(getJob(successorJobStoreID))
    # Traverse service jobs
    for jobs in jobWrapper.services:
        for serviceJobStoreID in map(lambda x: x[0], jobs):
            if haveJob(serviceJobStoreID):
                assert serviceJobStoreID not in reachableFromRoot
                reachableFromRoot.add(serviceJobStoreID)