Mailbox Quarantine

In Exchange 2010 si è lavorato in molte direzione e particolare attenzione è stata data allo STORE. I cambiamenti ed i miglioramenti apportati sono stati molti e su vari aspetti, uno di qesti è l’introduzione della quarantena (se ricordate esisteva gia per i messaggi a livello di trasporto) per le mailbox che, per una corruzione logica o fisica, causano il crash dello store.
Un esempio piu o meno recente di crash dello store, era un problema legato con “Search Folder Nesting Level” (http://support.microsoft.com/kb/959135), che causava il dump del servizio ogni 5 minuti :-).
Oggi, in Exchange 2010, sono stati introdotti due differenti eventi che determinano se la mailbox deve essere isolata e sono:

  • se il thread in esecuzione su una specifica cassetta ha causato il crash
  • se ci sono piu di 5 thread allocati su una mailbox che non hanno fatto progessi per molto tempo

Come viene stabilito quando mettere in quarantena una mailbox?
Il processo è abbastanza semplice… quando viene intercettato uno dei due eventi riportato sopra, viene memorizzato in :

HKLM\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server Name>\Private-{db guid}\QuarantinedMailboxes\{mailbox guid}

utilizzando due chiavi CrashCount e LastCrashTime (chiavi replicate fra i nodi del cluster). Queste due chiavi vengono gestite dal processo delle STORE.EXE, mentre è possible personalizzare sia il numero di eventi che scatena il processo di quarantena, sia il quanto tempo la mailbox deve rimanere isolata:

HKLM\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server Name>\Private-{db guid}\QuarantinedMailboxes

Aggiungendo le seguenti chiavi di registry:

MailboxQuarantineDurationInSeconds
Data Type : REG_DWord
Value data : <value in seconds>

Name : MailboxQuarantineCrashThreshold
Data Type : REG_DWord
Value data : <value in crash instances>

Tutti questi parametri vengono letti dallo servizio dello STORE.EXE ogni 2 ore, ed in base hai valori presenti, si possono avere tre opzioni:

  1. se la mailbox non ha causato nessun altro problema nell’arco delle 2 ore e non è gia in quarantena le due chiavi di registry  CrashCount e LastCrashTime vengono resettate
  2. se la mailbox è gia in quarantena da piu di 6 ore o da piu di quanto specifcato nella chiave MailboxQuarantineDurationInSeconds la mailbox viene rilasciata dalla quarantena
  3. se la mailbox è gia in quarantena da meno di 6 ore o da meno di quanto specifcato nella chiave MailboxQuarantineDurationInSeconds la mailbox rimane in quarantena

Cosa succede quando la mailbox viene messa in quarantena?
In pratica non puo essere piu acceduta in nessun modo, ne via MAPI ne OWA, non viene acceduta neanche dai servizi di Exchange (ad esempio il Mailbox Assistant o il Content Indexing) l’unica operazione possible è il move-mailbox, ovviamente su un database dedicato dove fare le indagini del caso