Abbiamo un programma Java di terze parti in black-box che prende i file di input da una posizione e crea PDF. Mette un file manifest nella stessa posizione ogni volta per ogni input che ci richiede di alimentare il file in modo controllato. Il manifest (o .xen/.que) esiste ancora? Non alimentare un file di input.C'è un momento in cui un file "non esiste" durante una rinomina?
Stiamo ottenendo MOLTO rari (uno su decine di migliaia di file) istanze del nostro script di feed che non trovano nulla, alimentano un file e l'errore risultante quando il manifest viene sovrascritto e le cose non corrispondono. Ho scritto uno script perl che non fa altro che stampare il tempo fino a 100 millesimi, inserire qualsiasi cosa nella directory che ci interessa e stamparlo. Sotto puoi vedere .xen e .que file dove .xen è l'input e .que è una versione rinominata di esso per indicare l'elaborazione.
La mia domanda è questa: come è possibile la mancanza di file a 94.26493? Il sistema operativo nasconde un file mentre sta rinominando? Stiamo riscontrando il nostro problema quando il programma di feed cerca i file in quel momento, quindi il mio hack pianificato è controllare i file due volte; si spera abbastanza lento da catturare entrambe le estremità del rinominare. Dovrei anche sottolineare che una volta che 2 file appaiono su una riga, è qui che il programma di alimentazione ha inserito un altro file. Non è lo stesso file di prima della rinomina.
1421417394.26392/gpfs/fsdd/projects/corr_esch/corr_esch.d.xen
1421417394.26416/gpfs/fsdd/projects/corr_esch/corr_esch.d.xen
1421417394.26442/gpfs/fsdd/projects/corr_esch/corr_esch.d.xen
1421417394.26468/gpfs/fsdd/projects/corr_esch/corr_esch.d.xen
1421417394.26493
1421417394.26907/gpfs/fsdd/projects/corr_esch/corr_esch.d.xen.que_142_1421417394265
1421417394.27426/gpfs/fsdd/projects/corr_esch/corr_esch.d.xen /gpfs/fsdd/projects/corr_esch/corr_esch.d.xen.que_142_1421417394265
1421417394.27456/gpfs/fsdd/projects/corr_esch/corr_esch.d.xen /gpfs/fsdd/projects/corr_esch/corr_esch.d.xen.que_142_1421417394265
1421417394.27486/gpfs/fsdd/projects/corr_esch/corr_esch.d.xen /gpfs/fsdd/projects/corr_esch/corr_esch.d.xen.que_142_1421417394265
1421417394.27528/gpfs/fsdd/projects/corr_esch/corr_esch.d.xen /gpfs/fsdd/projects/corr_esch/corr_esch.d.xen.que_142_1421417394265
Per quanto ne so, [rinominare è un'operazione atomica su sistemi POSIX] (http://stackoverflow.com/questions/167414/is-an-atomic-file-rename-with-overwrite-possible-on -windows), quindi penso che il file "esisterebbe" sia prima che dopo l'operazione di rinomina. Le operazioni con i file di Windows sono * non * generalmente atomiche a meno che non venga utilizzato [Transactional NTFS] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb968806%28v=vs.85%29.aspx), ma dal momento che questa domanda è contrassegnata come "unix", suppongo che non sia pertinente. – GoBusto
Corretto, in particolare AIX – pete1450
È possibile includere le parti rilevanti del programma perl? –