2021年3月9日星期二

symfony serialize() returned as member variable from __sleep() but does not exist

I suddenly started getting this error, after doing some Entity changes unrelated to this action

Notice: serialize(): "questionPools" returned as member variable from __sleep() but does not exist

Action looks like this:

/**   * @param UserProvider $userProvider   * @param Exam $exam   * @param ExamService $examService   * @Route("/start/{id}", name="/start")   */  public function startAction(UserProvider $userProvider, Exam $exam, ExamService $examService)  {      try {          $userExam = $examService->startExam($exam);          $userExam->setUser($userProvider->getUser());          $this->db()->persist($userExam);          $this->db()->flush();      } catch (RuntimeException $exception) {          $this->addFlash('danger', $exception->getMessage());          return $this->redirectToRoute('userExam/available');      } catch (Exception $exception) {          $this->addFlash('danger', $exception->getMessage());          return $this->redirectToRoute('userExam/available');      }      return $this->redirectToRoute('userExam/fill', ['hash' => $userExam->getHash()]);  }  

Stack trace leads to vendor, as the error happens during the redirect.
"questionPools" is property of an Exam Entity:

/**   * Class Exam   * @package App\Entity   * @ORM\Entity(repositoryClass="App\Repository\ExamRepository")   * @ORM\Table(name="exam",indexes={@ORM\Index(name="search_idx", columns={"start", "stop"})})   */  class Exam extends AbstractEntity  {      // Time in minutes      const DEFAULT_TIME = 30;      const DEFAULT_THRESHOLD = 80;        /**       * @var Collection|QuestionPool[]       * @ORM\OneToMany(targetEntity="App\Entity\QuestionPool",       *     mappedBy="exam",       *     cascade={"persist", "remove"},       *     orphanRemoval=true,       *     )       */      protected Collection $questionPools;  

startExam(Exam $exam) method of ExamService class does not change this collection, only creates an UserExam object based on it. It should pass this object, I don't understand why it throws some serialization error.
I thought it has something to do with caching, but I even manually deleted the /var/cache/dev directory to be sure it's not that.
For full clarity here's the stack trace:

ErrorException:  Notice: serialize(): "questionPools" returned as member variable from __sleep() but does not exist      at W:\wamp64\www\exams\vendor\symfony\security-http\Firewall\ContextListener.php:178    at Symfony\Component\Security\Http\Firewall\ContextListener->onKernelResponse(object(ResponseEvent), 'kernel.response', object(TraceableEventDispatcher))       (W:\wamp64\www\exams\vendor\symfony\event-dispatcher\Debug\WrappedListener.php:117)    at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke(object(ResponseEvent), 'kernel.response', object(TraceableEventDispatcher))       (W:\wamp64\www\exams\vendor\symfony\event-dispatcher\EventDispatcher.php:230)    at Symfony\Component\EventDispatcher\EventDispatcher->callListeners(array(object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener)), 'kernel.response', object(ResponseEvent))       (W:\wamp64\www\exams\vendor\symfony\event-dispatcher\EventDispatcher.php:59)    at Symfony\Component\EventDispatcher\EventDispatcher->dispatch(object(ResponseEvent), 'kernel.response')       (W:\wamp64\www\exams\vendor\symfony\event-dispatcher\Debug\TraceableEventDispatcher.php:151)    at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch(object(ResponseEvent), 'kernel.response')       (W:\wamp64\www\exams\vendor\symfony\http-kernel\HttpKernel.php:190)    at Symfony\Component\HttpKernel\HttpKernel->filterResponse(object(RedirectResponse), object(Request), 1)       (W:\wamp64\www\exams\vendor\symfony\http-kernel\HttpKernel.php:178)    at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)       (W:\wamp64\www\exams\vendor\symfony\http-kernel\HttpKernel.php:79)    at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)       (W:\wamp64\www\exams\vendor\symfony\http-kernel\Kernel.php:195)    at Symfony\Component\HttpKernel\Kernel->handle(object(Request))       (W:\wamp64\www\exams\public\index.php:20)                  

Please advise, I'm really lost here. Thank you.

https://stackoverflow.com/questions/66557783/symfony-serialize-returned-as-member-variable-from-sleep-but-does-not-exis March 10, 2021 at 11:07AM

没有评论:

发表评论