This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author serhiy.storchaka
Recipients alexandre.vassalotti, anilredshift, pitrou, serhiy.storchaka
Date 2016-01-05.09:18:35
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1451985515.78.0.997536531372.issue26013@psf.upfronthosting.co.za>
In-reply-to
Content
Thank you for your report Anil.

Python 3.4.3 creates incorrect pickle with protocol 2 (it can't be load in Python 2). issue18473 fixed pickling with protocol 2 in Python 3, but broke loading broken pickles created in unpatched versions of Python 3.

Here is a patch that allows to load such broken pickles.

But it is too late to fix Python 3.4, it can get only security fixes. You have Celery specific workaround. More general workaround is to update _compact_pickle.IMPORT_MAPPING, e.g.:

import _compact_pickle
_compact_pickle.IMPORT_MAPPING.update({
    'UserDict': 'collections',
    'UserList': 'collections',
    'UserString': 'collections',
    'whichdb': 'dbm',
    'StringIO':  'io',
    'cStringIO': 'io',
})

Note that you have to set mapping not just for one module name like 'UserList', but for all 'UserDict', 'UserList', and 'UserString', because it is not predicable to what module name 'collections' is mapped in Python 3.4.3.
History
Date User Action Args
2016-01-05 09:18:35serhiy.storchakasetrecipients: + serhiy.storchaka, pitrou, alexandre.vassalotti, anilredshift
2016-01-05 09:18:35serhiy.storchakasetmessageid: <1451985515.78.0.997536531372.issue26013@psf.upfronthosting.co.za>
2016-01-05 09:18:35serhiy.storchakalinkissue26013 messages
2016-01-05 09:18:35serhiy.storchakacreate