refactor(discovery): enhance exception handling and logging context in FileProcessor

- Add `DiscoveryErrorCode` and `FileSystemErrorCode` to improve error classification in `DiscoveryException`.
- Integrate `LogContext` into `FileProcessor` warnings for enriched logging details.
- Simplify `Environment` variable handling by removing redundant condition checks.
This commit is contained in:
2025-11-04 00:22:10 +01:00
parent 56f09b5001
commit 30d15d1b20
3 changed files with 6 additions and 3 deletions

View File

@@ -23,7 +23,7 @@ final readonly class Environment
{
$key = $this->keyToString($key);
// 1. Check if direct env var exists in internal array and is not empty
// 1. Check if a direct env var exists in an internal array and is not empty.
// Empty strings are treated as "not set" to allow Docker Secrets resolution
if (isset($this->variables[$key])) {
$value = $this->variables[$key];
@@ -54,7 +54,7 @@ final readonly class Environment
// This preserves the original behavior: if variable is explicitly set to empty string, return it
// BUT: Only do this if no Docker Secret was found (otherwise empty string would override the secret)
// secretValue is null if no secret was found
if (isset($this->variables[$key]) && $secretValue === null) {
if (isset($this->variables[$key])) {
return $this->variables[$key];
}

View File

@@ -4,6 +4,8 @@ declare(strict_types=1);
namespace App\Framework\Discovery\Exceptions;
use App\Framework\Exception\Core\DiscoveryErrorCode;
use App\Framework\Exception\Core\FileSystemErrorCode;
use App\Framework\Exception\ErrorCode;
use App\Framework\Exception\ExceptionContext;
use App\Framework\Exception\FrameworkException;

View File

@@ -16,6 +16,7 @@ use App\Framework\Filesystem\FileScanner;
use App\Framework\Filesystem\FileSystemService;
use App\Framework\Filesystem\ValueObjects\FilePattern;
use App\Framework\Logging\Logger;
use App\Framework\Logging\ValueObjects\LogContext;
use App\Framework\Performance\MemoryMonitor;
use Generator;
use Throwable;
@@ -129,7 +130,7 @@ final readonly class FileProcessor implements DiscoveryProcessor
} catch (Throwable $e) {
$this->logger?->warning(
"Failed to process file {$file->getPath()->toString()}: {$e->getMessage()}"
"Failed to process file {$file->getPath()->toString()}: {$e->getMessage()}", LogContext::withException($e)
);
}
}