close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Closed 14 years ago

#978 closed enhancement (fixed)

Ficheros non_standard_struct

Reported by: Iván Robles Owned by: Víctor de Buen Remiro
Priority: highest Milestone:
Component: Various Version: 2.0.1
Severity: major Keywords:
Cc:

Description

Buenos días,

tol deja en la carpeta de log de tol, aparte de los archivos "start.log" unos archivos "non_standard_struct".

Estos ficheros nos indican cuando tenemos estructuras en el codigo sin una @ delante, pues va a ser obligatoria ponerlas. Estos archivos pueden llegar a ser bastante grandes, y en ocasiones, cuando tenemos por ejemplo un lanzador de modelos, dejan un log por cada tol que se abre, y pueden llegar a ser muchos archivos y llenar el espacio del disco duro. En nuestro caso nos generan gigabytes de espacio cada mes que lanzamos estimaciones.

Las estructuras de cada proyecto se pueden controlar, pero hay codigo común a los proyectos, por ejemplo el algebra de Sadd.

Para solucionar esto hay varias opciones.

  • Borrar los logs generados cada cierto tiempo. Se puede realizar una tarea programada
  • Cambiar las estructuras de sadd cada proyecto en local
  • Que el log sea opcional. Es decir, que log permita dejar estos archivos o no
  • Que los archivos non_standar_struct sean mas pequeños, que solo deje un mensaje por cada tipo de error (ahora mismo si llamamos a una estrucutura varias veces deja varios warning)

Seguro que hay mas opciones que no se me ocurren. Si se puede dar una solución a esto que nos valga para todos genial.

De momento dejamos una función que borra de una carpeta los archivos y carpetas anteriores a una fecha.

//////////////////////////////////////////////////////////////////////////////
Set RemoveFileRec(Text path, Date dataUlt)
//////////////////////////////////////////////////////////////////////////////
{
  Set listDir = GetDir(path);
  Set files = Tokenizer(GetDirPaths(path),NL);
  Set directories = listDir[2];
  Set EvalSet(files,Real (Text pathFile){

    If(FileTime(pathFile)<dataUlt,
      {
         WriteLn("Eliminando archivo "+pathFile);
         OSFilRemove(pathFile)
       },
      0)
  });
  Real If((Card(listDir[1])+Card(directories))>0,
    Real 1,
    {
       WriteLn("Eliminando directorio "+path);
       OSDirRemove(path)
    }
  );
  If(Card(directories)>0,
  {
    Set EvalSet(directories,Set (Text pathDir){
      RemoveFileRec(path+"/"+pathDir,dataUlt)
    })
  },
  Empty
  )

};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Borra recursivamente todos los ficheros y carpetas anteriores a una fecha desde una direccion dada",RemoveFileRec);
//////////////////////////////////////////////////////////////////////////////


Change History (1)

comment:1 Changed 14 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed

(In [2605]) Fixes #978
La versión publicada tendrá desabilitado el control de estructuras no estándar que se podrá activar compilando localmente cuando se acometa la limpieza de una librería.

Note: See TracTickets for help on using tickets.