The low level cache deserialisation was leaving bad data in an low level cache object in the error case. This fixes it so the object state only gets modified on successful deserialisation of all the metadata.