sync_one : hash uniquement l'entrée cliquée, pas toutes celles du même numéro
Bug : sur un manifest avec deux entrées partageant le même numéro de version (channels multiples — ex proserve-firefighter-1.5.4.32.zip ET proserve-full- 1.5.4.32.zip, deux builds distincts pour firefighter vs full), cliquer le bouton « 🔁 Hash » d'une ligne déclenchait le hash des DEUX ZIPs dans la même requête HTTP. Résultat 2 × 14 Go = 28 Go dans une seule requête, ce qui dépasse le timeout front d'OVH mutualisé (hard-limit invisible côté PHP même avec set_time_limit(0)) → 500 Internal Server Error. C'est pour ça que « des hashs de la même taille passaient sans problème avant » : c'est le cas 28 Go des DEUX ZIPs en une requête qui est nouveau (depuis l'introduction des channels), pas la taille du single 14 Go qui passait déjà. Fix : nouveau paramètre $onlyEntryId sur SignManifest::run(). Prend le pas sur $onlyVersion. L'admin action sync_one passe l'entryId (unique par ligne, généré par generate_entry_id()) au lieu du numéro de version. Une ligne cliquée = un ZIP hashé, point. Le bouton « 🔁 Sync (all versions) » (action sync_versions) continue de tout hasher — c'est ce que l'opérateur demande explicitement. Rétro-compat : si $onlyEntryId est null (CLI, cron, anciens callers), $onlyVersion filtre comme avant. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -671,11 +671,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
require_once "$root/tools/SignManifest.php";
|
||||
$signer = new \PSLauncher\Tools\SignManifest($root);
|
||||
$force = !empty($_POST['force']);
|
||||
// SignManifest::run filtre par numéro de version ; en cas d'entries
|
||||
// de même version sur des channels différents, le hash sera recalculé
|
||||
// pour toutes celles qui matchent (chacune pointe sur son propre ZIP,
|
||||
// donc le résultat est correct, juste un peu plus de boulot).
|
||||
$result = $signer->run('versions', $force, $version);
|
||||
// Filtre par entryId (pas par numéro de version). Sinon, quand deux
|
||||
// entrées partagent le même numéro (channels firefighter vs full sur
|
||||
// 1.5.4.32 p.ex.), les DEUX ZIPs sont hashés dans la même requête HTTP
|
||||
// → 2 × 14 Go = risque de dépasser le timeout front OVH sur mutualisé.
|
||||
$result = $signer->run('versions', $force, null, $entryId);
|
||||
$forceLabel = $force ? ' [FORCE]' : '';
|
||||
$message = "Hash de v{$version}{$forceLabel} :\n" . implode("\n", $result['log']);
|
||||
if (!$result['ok']) $messageType = 'error';
|
||||
|
||||
Reference in New Issue
Block a user