Skip to content

Commit

Permalink
fix: unset config value not serialisable
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolasalexandre9 authored and matthv committed Nov 18, 2024
1 parent 35b9e7e commit a1181f9
Showing 1 changed file with 22 additions and 9 deletions.
31 changes: 22 additions & 9 deletions packages/Agent/src/Builder/AgentFactory.php
Original file line number Diff line number Diff line change
@@ -48,14 +48,11 @@ public function createAgent(array $config): self
$this->config = array_merge($this->config, $config);
$this->buildLogger();
if ($this->hasEnvSecret) {
$serializableConfig = $this->config;

if (isset($this->config['customizeErrorMessage']) && is_callable($this->config['customizeErrorMessage']) && ! is_string($this->config['customizeErrorMessage'])) {
Cache::put('customizeErrorMessage', new SerializableClosure($this->config['customizeErrorMessage']));
}

unset($serializableConfig['logger'], $serializableConfig['customizeErrorMessage']);
Cache::put('config', $serializableConfig, self::TTL_CONFIG);
Cache::put('config', $this->serializeConfig(), self::TTL_CONFIG);
}

Cache::put('forestAgent', new SerializableClosure(fn () => $this), self::TTL);
@@ -163,6 +160,14 @@ public static function sendSchema(bool $force = false): void
}
}

private function serializeConfig(): array
{
$serializableConfig = $this->config;
unset($serializableConfig['logger'], $serializableConfig['customizeErrorMessage']);

return $serializableConfig;
}

private function buildCache(): void
{
if ($this->hasEnvSecret) {
@@ -173,7 +178,7 @@ private function buildCache(): void
self::$fileCacheOptions = compact('filesystem', 'directory', 'disabledApcuCache');
}

Cache::add('config', $this->config, self::TTL_CONFIG);
Cache::add('config', $this->serializeConfig(), self::TTL_CONFIG);
}
}

@@ -194,17 +199,25 @@ public function getDatasourceInstance(): ?DatasourceContract

/**
* @codeCoverageIgnore
*/
public function __sleep(): array
*/
public function __serialize(): array
{
return [ 'hasEnvSecret', 'isBuild' , 'computedDatasource' ];
return [
'hasEnvSecret' => $this->hasEnvSecret,
'isBuild' => $this->isBuild,
'computedDatasource' => $this->computedDatasource,
];
}

/**
* @codeCoverageIgnore
*/
public function __wakeup(): void
public function __unserialize(array $data): void
{
$this->hasEnvSecret = $data['hasEnvSecret'];
$this->isBuild = $data['isBuild'];
$this->computedDatasource = $data['computedDatasource'];

$this->customizer = new DatasourceCustomizer();
}
}

0 comments on commit a1181f9

Please sign in to comment.