private static bool CleanDatabase(string[] args) { bool res = true; try { // parse arguments and App.config file DatabaseCleaningManager dcm = new DatabaseCleaningManager(); dcm.ParseArgs(args.Skip(1).ToArray() ); dcm.InitFlow(); // call the flow manager according to parameters dcm.DoTestFlow(); // done dcm.FinishFlow(); } catch (Exception ex) { Logger.TraceWriteLine(string.Format("Unhandled exception {0}; Trace {1}", ex.Message, ex.StackTrace)); res = false; } return res; }
public void thread_main() { try { DateTime timestamp = DateTime.MinValue; DatabaseCleaningManager dcm = new DatabaseCleaningManager(); dcm.ParseArgs(m_args.Skip(1).ToArray()); dcm.InitFlow(); int iteration = 0; CleansingManager offline = new CleansingManager(new OfflineCleaningRuleProvider(dcm.SqlUtils)); while (m_exit_thread == false) { Logger.DebugWrite(string.Format("Thread is going to sleep at {0}...", DateTime.Now.ToLongTimeString())); Thread.Sleep(1000); Logger.DebugWriteLine(string.Format("back at {0}", DateTime.Now.ToLongTimeString())); if (m_exit_thread) break; DateTime cur = DateTime.Now; #if (!FREQUENT) object res = dcm.SqlUtils.ExecuteScalar(string.Format( "select count(*) from itemsmentions where time > timestamp('{0}')", timestamp.ToString("s"))); long num = (long)res; if (num > 0) #endif { if (0 == iteration++ % 10) // 2 minutes { // full cleanup timestamp = DateTime.Now; Logger.DebugWriteLine("Full cleaning"); offline.cleanData(null); } else { // incremental cleanup #if (FREQUENT) // test code object res = dcm.SqlUtils.ExecuteScalar(string.Format( "select count(*) from itemsmentions where time > timestamp('{0}')", timestamp.ToString("s"))); long num = (long)res; if (num == 0) continue; #endif Logger.TraceWriteLine("Incremental cleaning"); timestamp = cur; CleansingManager online = new CleansingManager(new OnlineCleaningRuleProvider(dcm.SqlUtils)); online.cleanData(null); //offline.cleanData(null); } } } } catch (Exception ex) { DCF.Common.Logger.TraceWriteLine("Caught exception " + ex.Message); } }