Fix SystemStackError when Peek bar is active with Rugged calls
Peek attempts to serialize results with to_json
, which calls
ActiveSupport::JSON
. If an object is passed to to_json
that contains
instance variables, ActiveSupport
will attempt to recursively traverse
all variables.
The problem is that we can get into an infinite loop if the instance references to an instance that references to something else that points back to the same instance.
To avoid this mess, we just call to_s
on the object if it has instance
variables. It appears only Gitlab::Git::Repository
and ::Repository
are the culprits here.
A better explanation is here: https://engineering.sequra.es/2015/07/que-json-activesupport-and-stack-level-too-deep/
Edited by Stan Hu