4 @link: http://hierarchical-cluster-engine.com/ 5 @copyright: Copyright © 2013-2014 IOIX Ukraine 6 @license: http://hierarchical-cluster-engine.com/license/ 28 KEY_VALUE_FILE_NAME_TEMPLATE =
"%s.db" 29 KEY_VALUE_FIELDS_FILE_NAME_TEMPLATE =
"%s_fields.db" 40 def __init__(self, keyValueStorageDir, rawDataDir, dBDataTask):
54 def process(self, siteCleanups, queryCallback):
56 if not isinstance(siteCleanups, list):
57 siteCleanups = [siteCleanups]
59 for siteCleanup
in siteCleanups:
64 if siteCleanup.historyCleanUp == dc.EventObjects.SiteCleanup.HISTORY_CLEANUP_LOG
or \
65 siteCleanup.historyCleanUp == dc.EventObjects.SiteCleanup.HISTORY_CLEANUP_FULL:
68 if siteCleanup.historyCleanUp == dc.EventObjects.SiteCleanup.HISTORY_CLEANUP_FULL:
71 if siteCleanup.delayedType == dc.EventObjects.NOT_DELAYED_OPERATION:
72 self.
cleanUpDBStorage(siteCleanup, KEY_VALUE_FILE_NAME_TEMPLATE, queryCallback)
73 self.
cleanUpDBStorage(siteCleanup, KEY_VALUE_FIELDS_FILE_NAME_TEMPLATE, queryCallback)
76 if siteCleanup.moveURLs:
84 self.
errorCode = Constants.EXIT_CODE_GLOBAL_ERROR
85 self.
errorMessage = (
">>> Site id [%s] not found" % siteCleanup.id)
88 ret.statuses.append(ret.errorCode)
89 if ret.errorMessage
is None or ret.errorMessage ==
"":
103 tbName = Constants.DC_URLS_TABLE_NAME_TEMPLATE % siteCleanup.id
104 query = sqlTemplate % tbName
105 res = queryCallback(query, Constants.SECONDARY_DB_ID)
108 if elem[0]
is not None:
109 StatisticLogManager.statisticUpdate(queryCallback, Constants.StatFreqConstants.FREQ_DELETED_STATE, 1,
110 siteCleanup.id, elem[0])
118 if siteCleanup.saveRootUrls:
119 SQL_COPY_QUERY_TEMPLATE =
"INSERT INTO %s SELECT * FROM dc_urls.%s WHERE dc_urls.%s.ParentMd5 != ''" 120 SQL_DEL_QUERY_TEMPLATE =
"DELETE FROM `%s` WHERE ParentMd5 != ''" 121 self.
staticUpdate(
"SELECT `URLMd5` FROM %s WHERE ParentMd5 != ''", siteCleanup, queryCallback)
123 SQL_COPY_QUERY_TEMPLATE =
"INSERT INTO %s SELECT * FROM dc_urls.%s" 124 SQL_DEL_QUERY_TEMPLATE =
"TRUNCATE TABLE `%s`" 125 self.
staticUpdate(
"SELECT `URLMd5` FROM %s", siteCleanup, queryCallback)
126 tbName = Constants.DC_URLS_TABLE_NAME_TEMPLATE % siteCleanup.id
127 query = SQL_DEL_QUERY_TEMPLATE % tbName
128 if siteCleanup.delayedType == dc.EventObjects.NOT_DELAYED_OPERATION:
129 queryCallback(query, Constants.SECONDARY_DB_ID)
130 elif siteCleanup.delayedType == dc.EventObjects.DELAYED_OPERATION:
131 query = Constants.SQL_CREATE_QUERY_TEMPLATE % (tbName, tbName)
132 queryCallback(query, Constants.FOURTH_DB_ID)
133 if siteCleanup.saveRootUrls:
134 query = SQL_COPY_QUERY_TEMPLATE % (tbName, tbName, tbName)
136 query = SQL_COPY_QUERY_TEMPLATE % (tbName, tbName)
137 queryCallback(query, Constants.FOURTH_DB_ID)
138 query = SQL_DEL_QUERY_TEMPLATE % tbName
139 queryCallback(query, Constants.SECONDARY_DB_ID)
148 tbName = tablePrefix % siteCleanup.id
149 SQL_TRUNCATE_QUERY_TEMPLATE =
"TRUNCATE TABLE `%s`" 150 query = SQL_TRUNCATE_QUERY_TEMPLATE % tbName
151 queryCallback(query, dbId)
159 CLEAR_SITE_RECORS_SQL = (
"UPDATE `sites` SET TcDate=NOW(), Resources=0, Iterations=0, State=%s, " +
160 "ErrorMask=0, Errors=0, Contents=0, CollectedURLs=0 WHERE id = '%s'")
161 query = CLEAR_SITE_RECORS_SQL % (str(siteCleanup.state), siteCleanup.id)
162 queryCallback(query, Constants.PRIMARY_DB_ID)
181 tmpDirName = self.
rawDataDir +
"/" + os.path.basename(tempfile.NamedTemporaryFile().name)
182 originDirName = self.
rawDataDir +
"/" + siteCleanup.id
183 logger.debug(
">>> originDir = %s", str(originDirName))
184 os.rename(originDirName, tmpDirName)
185 shutil.rmtree(tmpDirName)
186 except Exception
as err:
187 type_, value_, traceback_ = sys.exc_info()
188 logger.debug(
"type_ = %s, value_ = %s", str(type_), str(value_))
189 stack = traceback.format_tb(traceback_)
190 logger.debug(
"Error: %s\n%s", str(err), str(stack.pop()))
191 logger.debug(
">>> [cleanUpRawDataStorage] CURRENT DIR " + str(os.getcwd()))
def isSiteExist(self, siteId, queryCallback, userId=None)
def cleanUpMysqlStorage(self, siteCleanup, queryCallback)
GeneralResponse event object, represents general state response for multipurpose usage.
def staticUpdate(self, sqlTemplate, siteCleanup, queryCallback)
def trancateArbitraryTable(self, tablePrefix, siteCleanup, dbId, queryCallback)
def __init__(self, keyValueStorageDir, rawDataDir, dBDataTask)
def process(self, siteCleanups, queryCallback)
def cleanUpRawDataStorage(self, siteCleanup)
def cleanUpMysqlSiteTable(self, siteCleanup, queryCallback)
def copyUrlsToDcUrls(self, siteId, queryCallback)
def cleanUpDBStorage(self, siteCleanup, filesSuffix, queryCallback)