I developed an add-on using ploneCLI some years back and it works well for our internal client. I've made some modifications over its life but for the most part it's simple, with two types, one for student and one for course. Counselors, HS liaisons, and managers are allowed to register students into courses that they have permission to, there's a cap on the # of students, etc. I have approx 6800 records in the ZODB.
I'm trying to get things to migrate and I'm getting problems with the upgrade steps. Before I started migrating the Data.fs, in the old site I did the following:
- uninstalled unnecessary addons (I was using collective.importexport to extract records but switched to datatables and views instead).
- cleared and rebuilt catalog
- packed the database
- GoogleFu seemed to indicate that the inability to load state may be due to the catalog? so I verified that the catalog was in decent shape with collective.catalogcleanup (didn't actually use it but the info it provided I thought was useful i.e no broken brains well except mine ).
Handling catalog portal_catalog.
Brains in portal_catalog: 6958
portal_catalog: removed 0 brains without UID.
portal_catalog: removed no brains in object check.
portal_catalog: 0 non unique uids found.
portal_catalog: 0 items need new unique uids.
portal_catalog: total problems: 0Ignored nonexisting catalog uid_catalog.
Ignored nonexisting catalog reference_catalog.
Done with catalog cleanup.
Dry run selected: aborted any transaction changes.
When I run @@plone-upgrade things bork at:
[plone.app.upgrade:32][waitress-0] Indexing new indexes exclude_from_nav.
2021-03-25 15:34:37,709 ERROR [ZODB.Connection:809][waitress-0] Couldn't load state for yc.cnow.content.student.Student 0x0d497e
Traceback (most recent call last):
File "/Users/etyrer/Development/p-524-z2/buildout-cache/eggs/cp27m/ZODB-5.6.0-py2.7.egg/ZODB/Connection.py", line 795, in setstate
self._reader.setGhostState(obj, p)
File "/Users/etyrer/Development/p-524-z2/buildout-cache/eggs/cp27m/ZODB-5.6.0-py2.7.egg/ZODB/serialize.py", line 633, in setGhostState
state = self.getState(pickle)
File "/Users/etyrer/Development/p-524-z2/buildout-cache/eggs/cp27m/ZODB-5.6.0-py2.7.egg/ZODB/serialize.py", line 626, in getState
return unpickler.load()
File "/Users/etyrer/Development/p-524-z2/buildout-cache/eggs/cp27m/ZODB-5.6.0-py2.7.egg/ZODB/serialize.py", line 492, in _persistent_load
return self.load_persistent(*reference)
File "/Users/etyrer/Development/p-524-z2/buildout-cache/eggs/cp27m/ZODB-5.6.0-py2.7.egg/ZODB/serialize.py", line 534, in load_persistent
self._cache.new_ghost(oid, obj)
TypeError: Cache values must be persistent objects.
So I am in unfamiliar territory here. I'm not sure why I'm having an issue with persistence when I don't think I've explicitly toyed with that feature... or at least I don't think I did. The migration fails when new indexes are indexed, could I have an issue with my index? Search works really well btw, so I'm not sure where to troubleshoot.
Searching this error seems to suggest very little either. I would appreciate any thoughtful comments or suggestions. Thanks in advance. -est2