Procedure di rimozione delle raccolte, uso e controllo

Introduzione

La presente documentazione intende discutere di una particolare esigenza che può interessare qualsiasi applicazione, in particolare quelle che contano un elevato numero di utenti consultatori ai quali si decida di assegnare il diritto di costituire proprie raccolte ed operare su di esse.

L'esigenza alla quale si fa riferimento consta nell'evitare una proliferazione incontrollata delle raccolte limitando le possibilità degli utenti più inesperti o regolarizzando l'uso delle stesse da parte degli utenti pià esperti e scaltri. Questo può fungere da limitazione agli abusi del sistema ma anche a compiere una semplice pulizia, ad esempio rimuovendo quelle raccolte per le quali si ha evidenza che non sono state più modificate da un certo tempo.

La procedura di rimozione delle raccolte. Configurazione ed utilizzo

Vediamo come si implementa e come si controlla l'operato del thread preposto a questi scopi.
Al pari di altre procedure automatizzate presso il server Master, anche questa viene eseguita espressamente da un'estensione del server, un thread che ha questo compito. Il thread viene eseguito se e solo se esiste nella directory collect, che ospita le raccolte, un file denominato collect.conf.xml.

Nota:
Il file, pur rappresentando, almeno in parte, un file di configurazione, non viene posto nella directory conf in quanto si ritiene che in futuro esso potrà essere soggetto ad essere modificato programmaticamente. Per questa sua natura mista, quindi, di file di configurazione e di elenco di regole speciali, esso viene dislocato nella directory collect anziché nella directory conf.

Questo file contiene un particolare formato, derivato dallo standard adottato qualche tempo fa dal server, che consente di indicare come operare per raccolte pubbliche e private.
Esso contiene quindi una sezione public ed una private per dichiarare come operare nei confronti delle une e delle altre. Nell'ambito delle raccolte private, inolte, è possibile che sia presente una sezione nome_utente entro la quale esplicitare eventualmente, in generale o file per file, quale regola applicare alle raccolte di quest'utente.

Avremo quindi una modalità generale per le raccolte pubbliche e per le raccolte private nonché una modalità generale anche per ogni singolo utente.
Tanto per le modalità generali, identificate dal valore .globalmode per non rischiare confusione con un nome di raccolta, quanto per le modalità specifiche degli utenti, si può esprimere la regola che indica se la raccolta sia cancellabile o meno e, se sì, a quali condizioni.
Di seguito l'elenco delle regole attualmente accettate:

Le regole , in particolre per le raccolte publbiche, si applicano in cascata quindi in presenza di una regola specifica per una data raccolta, quella viene applicata, altrimenti si fa riferimento alla regola generale, ad esempio, dell'utente e, se assente, alla regola generale delle raccolte pubbliche. In sostanza, dalla regola più dettagliata a quella più generica, si applicherà la prima incontrata, quindi la più nidificata.

A partire da:
Dalla versione 20.3.3.* del server è stata introdotta una nuova voce configurazione. In ciascuna sezione può essere aggiunta una voce .allfiles con valore booleano positivo o negativo (il default è negativo). Se si associa un valore positivo a questa voce, non solo le raccolte ma qualsiasi altro file presente in queste directory verrà rimosso se vetusto.

Dal momento che un buon esempio vale più di 1000 parole, vediamo di seguito un campione del file collect.conf.xml.

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE xwconf SYSTEM "http://www.3di.it/extraway/xwconf_20040930.dtd">
<xwconf>
  <section name="public">
    <profile type=".globalmode" value="permanent"/>
  </section>
  <section name="private">
    <profile type=".globalmode" value="permanent"/>
    <profile type=".allfiles" value="true"/>
    <section name="fginestrini">
       <profile type=".globalmode" value="units:1000"/>
       <profile type="raccolta_associata_alla_ricerca_nome_nuova_ricerca_frequente_3" value="permanent"/>
       <profile type="raccolta_associata_alla_ricerca_costit_tetto" value="modification_date:45"/>
    </section>
    <section name="writelli">
       <profile type=".globalmode" value="creation_date:100"/>
    </section>
  </section>
</xwconf>

Nell'esempio di cui sopra vediamo che la regola globale per le raccolte pubbliche è che esse siano permanenti e, solo per le private, che la verifica sulla possibile rimozione dei files si estende anche ai files che non sono raccolte. Questo vale anche per tutte le raccolte private ad eccezione di quelle degli utenti fginestrini e writelli per i quali sono state indicare regole diverse.
L'utente fginestrini non avrà, in generale, raccolte contenenti più di 1000 unità informative. Nella fattispecie, una sua particolare raccolta denominata "raccolta associata alla ricerca nome nuove ricerca frequente 3" (opportunamente indicato secondo la modalità in cui si presentano i nomi dei files di raccolta su disco) sarà permanente mentre una diversa raccolta, denominata "raccolta associata alla ricerca costit tetto", se presente, verrà rimossa dopo 45 giorni dalla sua ultima modifica.
Per l'utente writelli le raccolte avranno tutte un limite di tempo, non più di 100 giorni dalla loro data di creazione.

La configurazione che si ritiene possa essere la pià frequente, comunque, potebbe essere la successiva...

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE xwconf SYSTEM "http://www.3di.it/extraway/xwconf_20040930.dtd">
<xwconf>
  <section name="public">
    <profile type=".globalmode" value="permanent"/>
  </section>
  <section name="private">
    <profile type=".globalmode" value="modification_date:180"/>
  </section>
</xwconf>

...che si limita a fare pulizia rimuovendo tutte quelle raccolte private che non vengono più modificate da almeno sei mesi (180 giorni).

Dal momento che l'unità di misura, in termini di tempo, è il giorno, il thread preposto alla rimozione delle raccolte viene eseguito ogni 24 ore. Ciò significa che, trascorse 24 ore dalla fine dell'ultima esecuzione, il thread viene risvegliato e controlla nuovamente da capo ogni raccolta esistente.
Se al suo risveglio il thread rileva che il file di configurazoine collect.conf.xml risulta assente, la procedura viene interrotta. Se poi il file viene creato nuovamente, la procedura può essere riavviata.

Registrazioni nei files di log

Le operazioni compiute dal thread il cui compito è stato descritto nel paragrafo precedente vengono tutte registrate nei principali files di log: xw.log e xwannomese.log. In essi si presentano registrazioni aventi il seguente aspetto:
Innanzitutto viene indicato il momento in cui inizia il lavoro del thread con una registrazione come la seguente...

20050928155023.431	03836	[I]RmCollect: Starting Remove Job

La cancellazione dei files può quindi andar a buon fine e lasciare una registrazione come la seguente...

20050928155828.796	03836	[I]RmCollect: File c:\xw\collect\writelli\codicestrada.12 successfully removed

...oppure fallire lasciando una registrazione come la seguente...

20050928160001.437	03836	[E]RmCollect: Error removing file c:\xw\collect\fabio\raccolta_costit_tetto.30

Al termine del ciclo di verifica e cancellazione, che ovviamente potrebbe non rimuovere alcuna raccolta, la segnalazione sarà...

20050928160002.687	03836	[I]RmCollect: Ending Remove Job

Se poi vengono meno le condizioni per compiere i test (perché si presenta un errore oppure perché il file di configurazione viene cancellato) si avrà una registrazione come la seguente...

20050928160028.812	03836	[I]RmCollect: Exiting from main loop (0)

...indicando un valore diverso da 0 ed il tipo di log '[E]' qualora il ciclo si sia interrotto a causa di un errore.

Autore:
Tirabassi Roberto
Date
2007/10/16 16:33:52

Torna a Indice delle voci


HighWay/eXtraWay Project - Frequently Asked Questions (Doxygen 1.6.1)