Repository: plone/Products.CMFPlone

Issue:
AttributeError: 'PersistentAdapterRegistry' object has no attribute 'lookupAll'
The following error is raised in Plone 5.1 when you try to install a new Plone site with an add-on where the Dexterity content-class could not be imported properly e.g. for some NameError in my case.

In particular this error message shadows the primary problem. It seems to me that some errors in the bootstrapping phase of Plone or inside of GS are just swallowed.

```
2017-11-30 11:29:03 ERROR txn.140599418205952 Failed to abort resource manager: <Products.CMFCore.indexing.QueueTM object at 0x7fdfddecbd50>
Traceback (most recent call last):
  File "/home/ajung/.buildout/eggs/transaction-2.1.2-py2.7.egg/transaction/_transaction.py", line 514, in abort
    rm.abort(self)
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 321, in tpc_abort
    self.queue.abort()
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 237, in abort
    for name, util in sm.getUtilitiesFor(IIndexQueueProcessor):
  File "/home/ajung/.buildout/eggs/zope.interface-4.4.2-py2.7-linux-x86_64.egg/zope/interface/registry.py", line 290, in getUtilitiesFor
    for name, utility in self.utilities.lookupAll((), interface):
AttributeError: 'PersistentAdapterRegistry' object has no attribute 'lookupAll'
```


Discussion:
I had the same error here, but with different preconditions. 

- I registered a custom ``IIndexQueueProcessor`` as a local component utility. 
- I had a typo in the path given at ``factory="..."``, so this was a non existent path. 
- There were no error while registering the local component.
- A lookup of the local utility returned a ``<PloneSite at /Plone>``.
- Even the resulting ``AttributeError`` (because the ``begin`` method was not found was then masked similar to what @zopyx found above.

The bug is, for some reason local component registration just registers something (Plone Site object) instead of raising an exception if the dotted path does not exist.
**Update**: This is not reproducible anymore with Plone-5.1.2.1

------------
Had exactly the same error as reported above in a Plone-5.1.0.1, when installing an add-on via the add-site-advanced-form, but *not* when installing it after site-creation. The cause in my case was a portlet-assignment to a portlet-manager of Products.ContentWellPortlets via a GenericSetup-profile.

Steps to reproduce:
In an add-on's profile add 'portlets.xml' with these lines:
```
    <?xml version ="1.0"?>
    <portlets>
    <assignment name="top" category="context" key="/"
    manager="ContentWellPortlets.InHeaderPortletManager1"
    type="plone.portlet.static.Static" visible="True">
     </assignment>
    </portlets>
```
And install it along a site-creation, using "Advanced configuration".
This issue should be fixed before 5.1.2.
It is nearly impossible to use 5.1.2 with add-ons - neither as integrator nor as Plone user.
Unfortunately there is zero indication from the logs what the actual problem is causing this followup error.
Marked as blocker since this must be fixed before further releases.
So is this when installing an add-on in the add-ons control panel?  Or only when selecting extra add-ons to install while creating a site?
In the last case, I wonder if it would help to add `import transaction; transaction.commit()` after creating the Plone Site and before applying any extra add-on profiles. So right before this line: https://github.com/plone/Products.CMFPlone/blob/5.1.2/Products/CMFPlone/factory.py#L166
Could you try that @zopyx ?
@mauritsvanrees It only happens when selecting extra add-ons to install when creating a site. It does not happen when installing after site-creation via the add-ons control-panel or the ZMI's portal_quickinstaller.

Tried your suggestion and it does resolve the error in my case.

Frankly, I have no idea what's happening and avoid adapters in general, even more so because there was never a need for them amongst the use-cases I realized, and additionally ran into a non-reproducible(!) error, seemingly deriving of an adapter's persistent registry, some ages ago.
With a `transaction.commit()` before installing add-ons, the above `AttributeError lookupAll` goes away, but the underlying error (in Ida's case a `ComponentLookupError` for a portlet class) is still there. It only isn't drowned out by dozens of the same AttributeErrors in development. And when installing via the add-ons control panel, the underlying error is still there.

So the `transaction.commit()` doesn't really solve anything.

Technically, it could be 'fixed' in `CMFCore/indexing.py`:

```
    def abort(self):
        sm = getSiteManager()
        try:
            # We need to iterate over the utilities.
            utils = list(sm.getUtilitiesFor(IIndexQueueProcessor))
        except AttributeError:
            pass
        for name, util in utils:
            util.abort()
        self.clear()
```

But that is also a workaround, for a transaction abort that seems to only happen when there is an error in an add-on that is being installed via the advanced site add form. 
@mauritsvanrees thanks a lot for the investigations. I wonder if would be possible to re-use parts of the working after-site-creation-form within the on-site-creation-form. Theoretically it should. And could be of benefit, in terms of reducing redundancy and less work for maintaining. Practically it might open up one or another can. [Placeholder for thinking-face-emoji]
What do you mean with the 'working after-site-creation-form'? Do you mean the add-on form within the Site Setup?
Basically that is what the advanced site-creation form currently is.

Problem here is that a transaction abort fails, maybe because too much has been aborted already (so that the site manager does not work properly) for this particular abort to work... A fix in `CMFCore/indexing.py` might actually not be such a bad idea, although I see that my quick code above needs to be adjusted a bit to work.
But it still seems that it should maybe be possible to avoid that `sm.getUtilitiesFor` gets broken in the first place.

There are a bit too many possible angles to take here. But at least someone searching for a problem like this might end up in this issue report, and get some ideas of where to look.

Yes meant that form, wasn't aware it is reused already. Thought each form has it own solution and  therein lies the difference. Agree the fix should be where the cause of the errors lies.
BTW, from my side no urgency in fixing.
Well, they don't share code, so it is not code reuse. But the basic functionality of both is the same: call `portal_setup.runAllImportStepsFromProfile` on a profile. It's just that the advanced site creation form does this for various profiles at once.
The most logical way to make them more the same is to do a `transaction.commit` in between, and Andreas does not like the implications, and he has a good point there.
Didn't mean that a `transaction.commit` would be recommendable, was just agreeing with you all the way, that your fix in `CMFCore/indexing.py` is a feasible solution, yet it's always better to fix the root of the cause, however that solution may look. Cheers, Ida
By coincidence I saw another similar bug I reported a couple of weeks ago, in this case during test setup of Products.Poi in Plone 5.1: https://github.com/collective/Products.Poi/issues/44
@hvelarde why did you removed the "high" flag? This issue is a major and blocker and it must be resolved before the next release (5.1.3).
This bug now has labels '11 prio: blocker' and '12 prio: high'. I think that is why Hector removed one of them: there is no sense in having two priority labels.
It looks like you two agree that this is a blocker. :-)

Now if someone would have a good idea on what the real underlying problem is, that would be very helpful.
My workaround for this issue (in context of using plone.restapi for migration and my own browser view for provisioning a Plone site) is to create plain Plone website using `addPloneSite()` first and then installing all dependencies after that using `portal_quickinstaller.installProducts([products])`.
Indeed, "blocker" is more than "high". For an explanation of the labels please read https://docs.google.com/spreadsheets/d/1IQ73bSQ10b0pwoUFn0u8SE4epDdvwjhTiYTDyPAhx7A/edit#gid=0
blocker or high...I would love that the release management considers a blocker as a blocker instead of ignoring them
@zopyx I think dropping the feature of installing a site together with a set of addons is not an option in an bugfix release. 

I also digged a bit in code but did no came to the cause or a solution.
@zopyx did you confirm that the same works in a older version (e.g. 5.0.8)? 

I wanted to look into this but from the ticket I could not find a way to reproduce this issue in 5.0.2. 

I tried the approach by @ida and that worked fine (I added `<dependency>profile-Products.ContentWellPortlets:default</dependency>` to ``metadata.xml`` and ``Products.ContentWellPortlets`` to ``install_requires``.
I am pretty sure that this issue is related to Plone 5.1 since I have never seen this in similar complex Plone projects on Plone 5.0 and I had the very same issue when I added Plone 5.1 tests and Travis CI coverage for XML-Director from 5.0 -> 5.1.
The error is meanwhile reproducible with a complete Plone buildout without any extension when you create a Plone site without any extension TTW

```
[buildout]
parts =  
    zeo
    instance
    zopepy
    mrbob

extends = 
   http://dist.plone.org/release/5.1.2/versions.cfg

index = https://pypi.python.org/simple

find-links =
   http://dist.plone.org/release/5.1.2

extensions = 
    mr.developer

newest = false
show-picked-versions = true

always-update = false

sources = sources
versions = versions

auto-checkout =
    dynamore.policy 
    dynamore.seminarsdx
    dynamore.theme.diazo

[zeo]
recipe = plone.recipe.zeoserver
zeo-address = 5200

[instance]
recipe = plone.recipe.zope2instance
user = admin:admin
http-address = 5080
zeo-client = on
shared-blob = on
zeo-address = 5200
debug-mode = off
security-policy-implementation = C
verbose-security = off
blob-storage = ${buildout:directory}/var/blobstorage

environment-vars = 
    zope_i18n_compile_mo_files  True
    TZ Europe/Berlin


eggs =
    Pillow
    Plone
#    dynamore.policy
#    dynamore.seminarsdx
#    dynamore.theme.diazo
#    plone.restapi
#    collective.recaptchacontactform
#    kitconcept.dsgvo
#    plone.app.mosaic

zcml =


[zopepy]
recipe = zc.recipe.egg
eggs = ${instance:eggs}
interpreter = zopepy
scripts = zopepy

[sources]
dynamore.policy = git ssh://git@git.scale.eu:2222/webpages/plone-plugins-dynamore.policy.git
dynamore.seminarsdx = git ssh://git@git.scale.eu:2222/webpages/plone-plugins-dynamore.seminarsdx.git
dynamore.theme.diazo = git ssh://git@git.scale.eu:2222/webpages/plone-plugins-dynamore.theme.diazo.git

[versions]
zc.buildout = 2.5.3
setuptools = 26.1.1
zope.formlib = 4.0.6
zopyx.txng3.ext = 3.4.1
plone.schema = 1.2.0

MarkupSafe = 1.0
collective.recaptchacontactform = 1.0.0
kitconcept.dsgvo = 1.0.0a13
mr.bob = 0.1.2
orderedmultidict = 1.0
plone.rest = 1.0.0
plone.restapi = 2.0.0
recaptcha-client = 1.0.6
zope.app.i18n = 3.6.4
# plone.restapi==2.0.0
PyJWT = 1.6.4

# Required by:
# dynamore.theme.diazo==0.1.dev1
collective.themefragments = 2.11.1

# Required by:
# dynamore.theme.diazo==0.1.dev1
# spirit.plone.theming==0.8
collective.themesitesetup = 2.1.2

# Required by:
# jsonschema==2.6.0
functools32 = 3.2.3.post2

# Required by:
# dynamore.seminarsdx==1.0
furl = 1.2

# Required by:
# plone.schema==1.2.0
jsonschema = 2.6.0

# Required by:
# collective.recaptchacontactform==1.0.0
plone.formwidget.recaptcha = 1.0b3

# Required by:
# collective.themesitesetup==2.1.2
polib = 1.1.0

# Required by:
# dynamore.theme.diazo==0.1.dev1
spirit.plone.theming = 0.8

# Required by:
# bobtemplates.plone==3.0.0a3
stringcase = 1.2.0

# Required by:
# spirit.plone.theming==0.8
tzlocal = 1.5.1

# Required by:
# collective.themesitesetup==2.1.2
zope.app.localpermission = 4.0.0


[mrbob]
recipe = zc.recipe.egg
eggs =
    mr.bob
    bobtemplates.plone==3.0.0a3
``` 

```

2018-08-09 09:16:11 INFO GenericSetup.types 'Folder' type info imported.
2018-08-09 09:16:11 INFO GenericSetup.types 'Link' type info imported.
2018-08-09 09:16:11 INFO GenericSetup.types 'File' type info imported.
2018-08-09 09:16:11 INFO GenericSetup.types 'Image' type info imported.
2018-08-09 09:16:11 INFO GenericSetup.types 'News Item' type info imported.
2018-08-09 09:16:11 INFO GenericSetup.types 'Event' type info imported.
2018-08-09 09:16:11 INFO Products.GenericSetup.tool Applying main profile profile-plone.app.contenttypes:plone-content
2018-08-09 09:16:11 INFO GenericSetup.rolemap Role / permission map imported.
2018-08-09 09:16:11 INFO GenericSetup.portlets Portlets imported
2018-08-09 09:16:11 ERROR txn.140457537296128 Error in abort() on manager <Products.CMFCore.indexing.QueueTM object at 0x7fbed224e600>
Traceback (most recent call last):
  File "/home/ajung/.buildout/eggs/transaction-2.1.2-py2.7.egg/transaction/_transaction.py", line 455, in _cleanup
    rm.abort(self)
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 321, in tpc_abort
    self.queue.abort()
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 237, in abort
    for name, util in sm.getUtilitiesFor(IIndexQueueProcessor):
  File "/home/ajung/.buildout/eggs/zope.interface-4.4.3-py2.7-linux-x86_64.egg/zope/interface/registry.py", line 290, in getUtilitiesFor
    for name, utility in self.utilities.lookupAll((), interface):
AttributeError: 'PersistentAdapterRegistry' object has no attribute 'lookupAll'
2018-08-09 09:16:11 ERROR txn.140457537296128 Error in abort() on manager <Products.CMFCore.indexing.QueueTM object at 0x7fbed98347a0>
Traceback (most recent call last):
  File "/home/ajung/.buildout/eggs/transaction-2.1.2-py2.7.egg/transaction/_transaction.py", line 455, in _cleanup
    rm.abort(self)
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 321, in tpc_abort
    self.queue.abort()
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 237, in abort
    for name, util in sm.getUtilitiesFor(IIndexQueueProcessor):
  File "/home/ajung/.buildout/eggs/zope.interface-4.4.3-py2.7-linux-x86_64.egg/zope/interface/registry.py", line 290, in getUtilitiesFor
    for name, utility in self.utilities.lookupAll((), interface):
AttributeError: 'PersistentAdapterRegistry' object has no attribute 'lookupAll'
2018-08-09 09:16:11 ERROR txn.140457537296128 Error in tpc_abort() on manager <Connection at 7fbed98f10d0>
Traceback (most recent call last):
  File "/home/ajung/.buildout/eggs/transaction-2.1.2-py2.7.egg/transaction/_transaction.py", line 461, in _cleanup
    rm.tpc_abort(self)
  File "/home/ajung/.buildout/eggs/ZODB-5.3.0-py2.7.egg/ZODB/Connection.py", line 631, in tpc_abort
    transaction = transaction.data(self)
  File "/home/ajung/.buildout/eggs/transaction-2.1.2-py2.7.egg/transaction/_transaction.py", line 483, in data
    raise KeyError(ob)
KeyError: <Connection at 7fbed98f10d0>
2018-08-09 09:16:11 ERROR txn.140457537296128 Error in tpc_abort() on manager <Products.CMFCore.indexing.QueueTM object at 0x7fbed224e600>
Traceback (most recent call last):
  File "/home/ajung/.buildout/eggs/transaction-2.1.2-py2.7.egg/transaction/_transaction.py", line 461, in _cleanup
    rm.tpc_abort(self)
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 321, in tpc_abort
    self.queue.abort()
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 237, in abort
    for name, util in sm.getUtilitiesFor(IIndexQueueProcessor):
  File "/home/ajung/.buildout/eggs/zope.interface-4.4.3-py2.7-linux-x86_64.egg/zope/interface/registry.py", line 290, in getUtilitiesFor
    for name, utility in self.utilities.lookupAll((), interface):
AttributeError: 'PersistentAdapterRegistry' object has no attribute 'lookupAll'
2018-08-09 09:16:11 ERROR txn.140457537296128 Error in tpc_abort() on manager <Products.CMFCore.indexing.QueueTM object at 0x7fbed98347a0>
Traceback (most recent call last):
  File "/home/ajung/.buildout/eggs/transaction-2.1.2-py2.7.egg/transaction/_transaction.py", line 461, in _cleanup
    rm.tpc_abort(self)
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 321, in tpc_abort
    self.queue.abort()
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 237, in abort
    for name, util in sm.getUtilitiesFor(IIndexQueueProcessor):
  File "/home/ajung/.buildout/eggs/zope.interface-4.4.3-py2.7-linux-x86_64.egg/zope/interface/registry.py", line 290, in getUtilitiesFor
    for name, utility in self.utilities.lookupAll((), interface):
AttributeError: 'PersistentAdapterRegistry' object has no attribute 'lookupAll'
2018-08-09 09:16:11 ERROR Zope.SiteErrorLog 1533798971.960.067856441782 http://dev.zopyx.de:5080/@@plone-addsite
Traceback (innermost last):
  Module ZPublisher.Publish, line 138, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 48, in call_object
  Module Products.CMFPlone.browser.admin, line 272, in __call__
  Module Products.CMFPlone.factory, line 156, in addPloneSite
  Module Products.GenericSetup.tool, line 388, in runAllImportStepsFromProfile
   - __traceback_info__: profile-plone.app.contenttypes:plone-content
  Module Products.GenericSetup.tool, line 1442, in _runImportStepsFromContext
  Module Products.GenericSetup.tool, line 1289, in _doRunHandler
  Module plone.app.contenttypes.setuphandlers, line 330, in import_content
  Module plone.app.contenttypes.setuphandlers, line 173, in create_frontpage
  Module plone.app.contenttypes.setuphandlers, line 93, in addContentToContainer
  Module OFS.ObjectManager, line 358, in _setObject
  Module zope.event, line 31, in notify
  Module zope.component.event, line 27, in dispatch
  Module zope.component._api, line 139, in subscribers
  Module zope.interface.registry, line 442, in subscribers
  Module zope.interface.adapter, line 607, in subscribers
  Module zope.component.event, line 36, in objectEventNotify
  Module zope.component._api, line 139, in subscribers
  Module zope.interface.registry, line 442, in subscribers
  Module zope.interface.adapter, line 607, in subscribers
  Module plone.app.versioningbehavior.subscribers, line 62, in create_version_on_save
  Module Products.CMFEditions.CopyModifyMergeRepositoryTool, line 307, in save
  Module transaction._manager, line 147, in savepoint
  Module transaction._transaction, line 228, in savepoint
  Module transaction._transaction, line 344, in _saveAndRaiseCommitishError
  Module transaction._transaction, line 225, in savepoint
  Module transaction._transaction, line 713, in __init__
  Module ZODB.Connection, line 1000, in savepoint
  Module ZODB.Connection, line 547, in _commit
  Module ZODB.Connection, line 579, in _store_objects
  Module ZODB.serialize, line 419, in serialize
  Module ZODB.serialize, line 428, in _dump
  Module zodbpickle.pickle_2, line 233, in dump
  Module zodbpickle.pickle_2, line 295, in save
  Module zodbpickle.pickle_2, line 557, in save_tuple
  Module zodbpickle.pickle_2, line 295, in save
  Module zodbpickle.pickle_2, line 557, in save_tuple
  Module zodbpickle.pickle_2, line 295, in save
  Module zodbpickle.pickle_2, line 557, in save_tuple
  Module zodbpickle.pickle_2, line 295, in save
  Module zodbpickle.pickle_2, line 557, in save_tuple
  Module zodbpickle.pickle_2, line 295, in save
  Module zodbpickle.pickle_2, line 571, in save_tuple
  Module zodbpickle.pickle_2, line 326, in save
  Module zodbpickle.pickle_2, line 762, in save_global
  Module zodbpickle.pickle_2, line 834, in whichmodule
TypeError: unhashable type: 'Missing.Missing'
2018-08-09 09:16:11 ERROR txn.140457537296128 Failed to abort resource manager: <Products.CMFCore.indexing.QueueTM object at 0x7fbed224e600>
Traceback (most recent call last):
  File "/home/ajung/.buildout/eggs/transaction-2.1.2-py2.7.egg/transaction/_transaction.py", line 514, in abort
    rm.abort(self)
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 321, in tpc_abort
    self.queue.abort()
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 237, in abort
    for name, util in sm.getUtilitiesFor(IIndexQueueProcessor):
  File "/home/ajung/.buildout/eggs/zope.interface-4.4.3-py2.7-linux-x86_64.egg/zope/interface/registry.py", line 290, in getUtilitiesFor
    for name, utility in self.utilities.lookupAll((), interface):
AttributeError: 'PersistentAdapterRegistry' object has no attribute 'lookupAll'
2018-08-09 09:16:11 ERROR txn.140457537296128 Failed to abort resource manager: <Products.CMFCore.indexing.QueueTM object at 0x7fbed98347a0>
Traceback (most recent call last):
  File "/home/ajung/.buildout/eggs/transaction-2.1.2-py2.7.egg/transaction/_transaction.py", line 514, in abort
    rm.abort(self)
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 321, in tpc_abort
    self.queue.abort()
  File "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg/Products/CMFCore/indexing.py", line 237, in abort
    for name, util in sm.getUtilitiesFor(IIndexQueueProcessor):
  File "/home/ajung/.buildout/eggs/zope.interface-4.4.3-py2.7-linux-x86_64.egg/zope/interface/registry.py", line 290, in getUtilitiesFor
    for name, utility in self.utilities.lookupAll((), interface):
AttributeError: 'PersistentAdapterRegistry' object has no attribute 'lookupAll'
```


```

#!/home/ajung/sandboxes/plone-server-buildout-plone5/bin/python2

import sys
sys.path[0:0] = [
  '/home/ajung/.buildout/eggs/Pillow-4.3.0-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/Plone-5.1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.recipe.zope2instance-4.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/ZODB3-3.11.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Zope2-2.13.27-py2.7.egg',
  '/home/ajung/.buildout/eggs/zc.recipe.egg-2.0.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/mailinglogger-3.8.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/setuptools-26.1.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/zc.buildout-2.5.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.upgrade-2.0.14.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.iterate-3.3.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.dexterity-2.4.9-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.caching-1.2.21-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.CMFPlone-5.1.2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.CMFPlacefulWorkflow-1.7.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.ATContentTypes-2.3.8-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.Archetypes-1.15.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/archetypes.multilingual-3.0.6-py2.7.egg',
  '/home/ajung/.buildout/eggs/olefile-0.44-py2.7.egg',
  '/home/ajung/.buildout/eggs/transaction-2.1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/BTrees-4.4.1-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/persistent-4.2.4.2-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/ZODB-5.3.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/ZEO-5.1.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/ZServer-3.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Record-2.13.0-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/Products.ZCTextIndex-2.13.5-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/Products.ZCatalog-3.0.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.TemporaryFolder-3.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.StandardCacheManagers-2.13.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.Sessions-3.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.PythonScripts-2.13.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.MIMETools-2.13.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.MailHost-2.13.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.ExternalMethod-2.13.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.BTreeFolder2-2.14.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/initgroups-4.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.viewlet-3.7.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.traversing-4.1.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.testing-3.9.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.testbrowser-3.11.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.tales-3.5.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.tal-3.5.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.structuredtext-3.5.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.size-3.4.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.site-3.9.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.sequencesort-3.4.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.sendmail-3.7.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.security-4.1.1-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/zope.schema-4.5.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.publisher-4.3.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.ptresource-3.9.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.proxy-4.3.0-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/zope.processlifetime-1.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.pagetemplate-4.2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.location-3.9.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.lifecycleevent-3.6.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.interface-4.4.3-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/zope.i18nmessageid-4.1.0-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/zope.i18n-4.2.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.exceptions-3.6.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.event-3.5.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.deferredimport-3.5.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.contenttype-4.2.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.contentprovider-3.7.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.container-3.11.2-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/zope.configuration-3.7.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.component-4.4.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.browserresource-4.1.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.browserpage-4.1.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.browsermenu-4.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.browser-2.1.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zLOG-3.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zExceptions-2.13.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zdaemon-4.2.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/tempstorage-4.0.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/pytz-2017.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/docutils-0.14-py2.7.egg',
  '/home/ajung/.buildout/eggs/ZopeUndo-4.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/ZConfig-3.1.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/RestrictedPython-3.6.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.OFSP-2.13.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/Persistence-2.13.2-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/MultiMapping-3.1-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/Missing-3.2-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/ExtensionClass-4.3.0-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/DocumentTemplate-2.13.4-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/DateTime-4.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/Acquisition-4.4.2-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/AccessControl-3.0.14-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/plone.app.viewletmanager-2.0.11-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.contentrules-2.0.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.PluggableAuthService-1.11.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.PlonePAS-5.0.15-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.GenericSetup-1.8.8-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.CMFEditions-3.2.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.CMFCore-2.2.12-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.ramcache-1.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.folder-1.2.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.portlets-2.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.annotation-3.5.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.statusmessages-5.0.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.DCWorkflow-2.2.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.memoize-1.2.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.locking-2.2.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/z3c.form-3.6-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.deprecation-4.3.0-py2.7.egg',
  '/home/ajung/sandboxes/plone-server-buildout-plone5/lib/python2.7/site-packages',
  '/home/ajung/.buildout/eggs/plone.z3cform-0.9.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.supermodel-1.3.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.autoform-1.7.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.z3cform-3.0.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.uuid-1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.layout-2.7.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.content-3.5.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/lxml-4.1.1-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/plone.schemaeditor-2.0.19-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.rfc822-1.1.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.namedfile-4.2.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.formwidget.namedfile-2.0.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.dexterity-2.6.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.behavior-1.2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.textfield-1.2.11-py2.7.egg',
  '/home/ajung/.buildout/eggs/z3c.zcmlhook-1.0b1-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.CMFDynamicViewFTI-4.1.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.registry-1.1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.protect-3.1.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.registry-1.7.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.cachepurging-1.0.14-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.caching-1.1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.dottedname-4.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.cachedescriptors-3.5.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.app.locales-3.7.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/z3c.autoinclude-0.3.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/slimit-0.8.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/pyScss-1.3.5-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/plonetheme.barceloneta-1.8.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.theme-3.0.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.subrequest-1.8.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.session-3.7.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.schema-1.2.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.portlet.static-3.1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.portlet.collection-3.3.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.outputfilters-3.0.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.intelligenttext-2.2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.indexer-1.0.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.i18n-3.0.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.browserlayer-2.2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.batching-1.1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.workflow-3.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.vocabularies-4.0.6-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.users-2.4.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.theming-2.0.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.redirector-1.3.6-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.portlets-4.3.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.locales-5.1.8-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.linkintegrity-3.3.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.multilingual-5.2.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.i18n-3.0.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.discussion-3.0.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.customerize-1.3.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.controlpanel-3.0.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.contenttypes-1.4.10-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.contentrules-4.0.18-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.contentmenu-2.2.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.contentlisting-1.3.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.api-1.8.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/mockup-2.7.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/five.pt-2.2.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/five.localsitemanager-2.0.6-py2.7.egg',
  '/home/ajung/.buildout/eggs/five.customerize-1.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/borg.localrole-3.1.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.contentmigration-2.1.19-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.ResourceRegistries-3.0.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.PortalTransforms-3.1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.PluginRegistry-1.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.PlacelessTranslationService-2.0.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.MimetypesRegistry-2.1.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.ExternalEditor-1.1.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.ExtendedPathIndex-3.3.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.CMFUid-2.2.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.CMFQuickInstallerTool-3.0.16-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.CMFFormController-3.1.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.CMFDiffTool-3.2.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.validation-2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.widgets-2.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.imaging-2.0.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.collection-1.2.6-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.blob-1.7.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.uuid-1.0.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.folder-1.0.11-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.ZSQLMethods-2.13.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.datetime-3.4.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/collective.monkeypatcher-1.1.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/zodbpickle-0.7.0-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/zc.lockfile-1.2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/trollius-2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/futures-3.1.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/mechanize-0.2.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.broken-3.6.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.filerepresentation-3.6.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.componentvocabulary-1.0.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.ZopeVersionControl-1.1.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.copy-3.5.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.app.publication-3.12.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.globalrequest-1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/z3c.formwidget.query-0.16-py2.7.egg',
  '/home/ajung/.buildout/eggs/simplejson-3.12.0-py2.7-linux-x86_64.egg',
  '/home/ajung/.buildout/eggs/piexif-1.0.13-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.scale-3.0.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.synchronize-1.0.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.alterego-1.1.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/five.globalrequest-1.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/repoze.xmliter-0.6-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.transformchain-1.2.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.keyring-3.0.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/z3c.caching-2.0a1-py2.7.egg',
  '/home/ajung/.buildout/eggs/ply-3.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/pathlib-1.0.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/enum34-1.1.6-py2.7.egg',
  '/home/ajung/.buildout/eggs/jsonschema-2.6.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/Unidecode-0.4.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.querystring-1.4.8-py2.7.egg',
  '/home/ajung/.buildout/eggs/roman-1.4.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.resourceeditor-2.1.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.resource-2.0.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/diazo-1.2.8-py2.7.egg',
  '/home/ajung/.buildout/eggs/feedparser-5.2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.relationfield-1.4.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.intid-1.1.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/z3c.relationfield-0.7-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.lockingbehavior-1.0.5-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.versioningbehavior-1.3.3-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.app.event-3.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.stringinterp-1.2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/decorator-4.1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/Chameleon-2.25-py2.7.egg',
  '/home/ajung/.buildout/eggs/z3c.pt-3.0.0a1-py2.7.egg',
  '/home/ajung/.buildout/eggs/sourcecodegen-0.6.14-py2.7.egg',
  '/home/ajung/.buildout/eggs/Markdown-2.6.9-py2.7.egg',
  '/home/ajung/.buildout/eggs/python_gettext-3.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/archetypes.schemaextender-2.1.8-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.untrustedpython-4.0.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.error-3.7.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.authentication-3.7.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/future-0.16.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/functools32-3.2.3.post2-py2.7.egg',
  '/home/ajung/.buildout/eggs/cssselect-1.0.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/five.intid-1.1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.intid-3.7.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/zc.relation-1.0-py2.7.egg',
  '/home/ajung/.buildout/eggs/z3c.objpath-1.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.formwidget.recurrence-2.1.2-py2.7.egg',
  '/home/ajung/.buildout/eggs/plone.event-1.3.4-py2.7.egg',
  '/home/ajung/.buildout/eggs/icalendar-4.0.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/Products.DateRecurringIndex-2.1-py2.7.egg',
  '/home/ajung/.buildout/eggs/zope.keyreference-3.6.4-py2.7.egg',
  ]

import plone.recipe.zope2instance.ctl

if __name__ == '__main__':
    sys.exit(plone.recipe.zope2instance.ctl.main(
        ['-C', '/home/ajung/sandboxes/plone-server-buildout-plone5/parts/instance/etc/zope.conf']
        + sys.argv[1:]))

```
The commits linked above exclude the occurrence of the originating error, when a referenced dependency-profile-id does not exist. Done like in a site's add-on-controlpanel, it shows the add-on as broken and disables the possibility to be selected for an installation.

Unfortunately Jenkins doesn't like it, so closed the PR again. The test-report is here:
https://jenkins.plone.org/blue/organizations/jenkins/pull-request-5.1/detail/pull-request-5.1/1350/pipeline/

BTW, was it correct to create a PR-branch from the 5.1.x-branch?


For the other errors, which then should not, but still could occur, there's some spots in `Products.CMFPlone.tool.py`, where either an error does not stop execution of further code-lines, or is swallowed silently. Try to share my personal notes in a human-readable way, soonish.

Cannot contribute much concerning the index-error, though :-(
Please leave the issue open until it is officially merged and confirmed.
That was unintentional and happened automagically with the keyword "fixes" in this PR:
https://github.com/zopefoundation/Products.GenericSetup/pull/64

@mauritsvanrees The problem was that `getProfilesForDependencies` failed silently if a dependency-id does not exists, but still returns an empty tuple, thus not breaking further procedures and causing multiple errors overlaying each other, instead of breaking hard in first place.

In any way it would be good, to mimicry the add-on-section in a site's creation-form, the same way it is done in an existing's site's addons-form, by inhibiting the possibility to install broken add-ons.

@hvelarde Why did you silently delete the branch, respectively would you mind to inform the people whose contribution's you're deleting, beforehand?
@ida I'm sorry; I erased the branch because usually people close pull requests and forget to do so and we end with a lot of stale branches; I'm not deleting your contributions, they must be in you local copy of the repository, so feel free to open a new pull request when you're ready.
I would to test this fix asap personally since it affects our current project. Unfortunately I am on vacation until mid September..but I am looking forward for giving further feedback.
The branch – again – for the interested audience:
https://github.com/plone/Products.CMFPlone/tree/site-crea-warn-broken-addons-refs-2228

Which is pushed from a fork, just in case anything gets deleted, the changes are also here:
https://github.com/ida/Products.CMFPlone/tree/site-crea-warn-broken-addons-refs-2228

Not requesting a PR right now, postponed until unknown.
Created PR to see if Jenkins eats it, with positive result. Closing PR anyway for reasons described in a comment at:https://github.com/plone/Products.CMFPlone/pull/2504
Also deleted the related branch, to not leave litter.
I backported ida's fix in GenericSetup to 1.8, so we can get a release for plone 5.1 (master of GenericSetup is plone 5.2)

@ida I'm not sure if your fix still requires changes to CMFPlone? If so, can you re-add the PR with a "WIP:" (work in progress) in the title? Please keep the commits on a branch, also if you have it in your fork of the repo. It gets really difficult to backport the changes if they are just applied to master :)

@sunew The actual bug-fix happended in GenericSetup, the branch here was for adding broken-addons-warnings in the site-creation-template, should probably get it's own ticket and is not critical, imho.

Gonna look these days, if there's an issue already, otherwise open a new one, and then repush the branch, if you don't have any objections.

Thanks for your feedback and bearing with delayed response-times! I'm rather occasionally online for the next week.
@ida great, thanks! 
@zopyx maybe you have the possibility to test your setup with GenericSetup 1.8 branch? 
yes, https://github.com/plone/Products.CMFPlone/issues/2228#issuecomment-416247282
@zopyx yep :) Enjoy the vacation.
@sunew Tested the 1.8-branch and the multiple errors still occur, that's because I made changes after the recommendations of the product-owners without testing it manually again.
I'm sorry, but I don't have more time left to spend on this issue, good proceeding!
@zopyx I copied your buildout from above, and tried to reproduce.
I cannot reproduce the problem on my system, adding a plone site ttw works fine, no traceback in the log.

I have commented out:

```
auto-checkout =
#    dynamore.policy
#    dynamore.seminarsdx
#    dynamore.theme.diazo

```
(I do not have access to the repo, so I cannot clone these. Should have no effect, since they are not in eggs)

A diff of bin/instance:

```
sune@sune-t440:/work/playground/plone/ajung-reproduce$ diff instance.txt jung-instance.txt 
28a29
>   'lib/python2.7/site-packages',
108c109
<   'plone.recipe.zope2instance-4.4.0-py2-none-any.ovo',
---
>   'plone.recipe.zope2instance-4.3-py2.7.egg',
166,167c167
<   'pyScss-1.3.5-py2.7.egg',
<   'python_dateutil-2.6.1-py2.7.egg',
---
>   'pyScss-1.3.5-py2.7-linux-x86_64.egg',
176d175
<   'six-1.10.0-py2.7.egg',
182c181
<   'Unidecode-0.04.1-py2.7.egg',
---
>   'Unidecode-0.4.1-py2.7.egg',

```




@sunew I am _currently_ testing the GS 1.8 in our migration setup...
The GenericSetup 1.8 solves actually nothing. The lookupAll problem persists.
The specific error situation in our case is that the default profile contains a registry file with a record for interface `spirit.plone.theming ...` . The lookupAll traceback is triggered when the related add-on is not installed or not initalized. 

@zopyx 
Ok. So we can conclude:
1. The error is not reproducable on a pure plone 1.5.2 with no addons
2. The error is triggered by a default profile with a non-exisitng interface (ie. the original problem, the missing interface, is masked by GS).

I will try to reproduce with a bobtemplate addon with a default profile pointing to a non-existing interface, and see if I can make a fix...

@sunew The first ocurring error will fail hard, if you change the following line to `return None`:
https://github.com/zopefoundation/Products.GenericSetup/blob/3ca5ee7b3947e02e2cad0c3eaad17d4913322dd7/Products/GenericSetup/tool.py#L951
Tried to explain that in https://github.com/zopefoundation/Products.GenericSetup/issues/68, hope that saves you some time.
@ida thanks! Very helpful:)
FYI in case it is helpful. I ran into this problem as well (https://travis-ci.org/collective/collective.shibboleth/jobs/439564303) and it is gone when I use Plone 5.1.2.1.
> FYI in case it is helpful. I ran into this problem as well (https://travis-ci.org/collective/collective.shibboleth/jobs/439564303) and it is gone when I use Plone 5.1.2.1.

All my reports are related to 5.1.2.1
@zopyx sorry for the noise. I was wrong. You can indeed still see the error with Plone 5.1.2 here: https://travis-ci.org/collective/collective.shibboleth/jobs/439564303 (Code: https://github.com/collective/collective.shibboleth/pull/2)
I don't get the point. #2228 is an error in Plone 5.1.2.1.
I suppose this was one of those github-auto-close problems. We had this already in past. Weird.
Why was 5.1.4 released with this blocker? 
Minimal buildout for failing Plone 5.1.4: https://github.com/zopyx/failing-plone
https://github.com/zopyx/failing-plone works on MacOS - weird
Your buildout works here on a *very* customized Ubuntu 14.04. Also tried with Multilingual using `advanced=1`. Works.
I can confirm the failing-plone buildout works for me on MacOS 10.14, python 2.7.15
Interesting observation: the error is reproducible with latest Ubuntu and FC26 where we use a shared eggs-directory. Both machines are pretty fresh and the eggs cache is also pretty new. Running the instance from a buildout with local egg-cache (eggs-directory=eggs) then I do not see the error. I also verified the issues with a system Python vs. self-compiled Python which makes no difference. This is unlikely a local problem (two different machines, two different OSes) however the different behaviour with local vs. global eggs cache appears more than weird.
I have a global egg cache here configured in my `~/.buildout/default.cfg` and it works.
As far as I understand, this is not a problem in Plone. It is a problem in GenericSetup that hides the underlying problem. And the underlying problem is an add-on that lists a non-existing dependency profile. Installing the add-on in the add-ons control panel would fail. Installing it in the advanced add-plone-site also fails, but sadly in a non-helpful way.

So something that should fail, now fails in an unclear way.  I would not call this a blocker.
But sure, it should be fixed.

Onwards:

- It is solved on master in https://github.com/zopefoundation/Products.GenericSetup/pull/64, but possibly [extra work needed](https://github.com/zopefoundation/Products.GenericSetup/issues/68).
- And Plone 4.3-5.1 are all using GenericSetup 1.8, so the solution should be backported to branch 1.8.
Using the current GS master does not make a difference.
I cannot reproduce the issue. https://github.com/zopyx/failing-plone works fine. Even which `eggs-directory=eggs`. Please provide steps how to reproduce the issue.

Resolving patch:
diff --git a/Products/CMFPlone/factory.py b/Products/CMFPlone/factory.py
--- a/Products/CMFPlone/factory.py
+++ b/Products/CMFPlone/factory.py
@@ -1,8 +1,11 @@
 # -*- coding: utf-8 -*-
+from Products.CMFPlone import PloneMessageFactory as _
 from Products.CMFPlone.Portal import PloneSite
 from Products.CMFPlone.events import SiteManagerCreatedEvent
 from Products.CMFPlone.interfaces import INonInstallable
 from Products.GenericSetup.tool import SetupTool
+from Products.statusmessages.interfaces import IStatusMessage
+from logging import getLogger
 from plone.registry.interfaces import IRegistry
 from zope.component import queryUtility
 from zope.event import notify
@@ -16,6 +19,8 @@
 # A little hint for PloneTestCase
 _IMREALLYPLONE5 = True
 
+logger = getLogger('Plone')
+
 
 @implementer(INonInstallable)
 class NonInstallable(object):
@@ -163,8 +168,23 @@ def addPloneSite(context, site_id, title='Plone site', description='',
     site.manage_changeProperties(**props)
 
     for extension_id in extension_ids:
-        setup_tool.runAllImportStepsFromProfile(
-            'profile-%s' % extension_id)
+        try:
+            setup_tool.runAllImportStepsFromProfile(
+                'profile-%s' % extension_id)
+        except Exception as msg:
+            IStatusMessage(request).add(_(
+                'Could not install ${profile_id}: ${error_msg}! '
+                'Please try to install it manually using the "Addons" '
+                'controlpanel and report any issues to the '
+                'addon maintainers.',
+                mapping={
+                    'profile_id': extension_id,
+                    'error_msg': msg.args,
+                }),
+                type='error')
+            logger.exception(
+                'Error while installing addon {}. '
+                'See traceback below for details.'.format(extension_id))
 
     if snapshot is True:
         setup_tool.createSnapshot('initial_configuration')


Test patch: