+ public void deleteLocksFromDB() {
+ PreparedQueryObject pQuery = new PreparedQueryObject();
+ String consistency = MusicUtil.EVENTUAL;
+ pQuery.appendQueryString("CREATE TABLE IF NOT EXISTS admin.locks ( lock_id text PRIMARY KEY, ctime text)");
+ try {
+ ResultType result = MusicCore.nonKeyRelatedPut(pQuery, consistency);
+ if ( result.equals(ResultType.FAILURE)) {
+ logger.error(EELFLoggerDelegate.errorLogger,"Error creating Admin.locks table.",AppMessages.QUERYERROR,ErrorSeverity.CRITICAL, ErrorTypes.QUERYERROR);
+ }
+ } catch (MusicServiceException e1) {
+ logger.error(EELFLoggerDelegate.errorLogger,e1,AppMessages.QUERYERROR,ErrorSeverity.CRITICAL, ErrorTypes.QUERYERROR);
+ }
+
+ pQuery = new PreparedQueryObject();
+ pQuery.appendQueryString(
+ "select * from admin.locks");
+ try {
+ ResultSet rs = MusicCore.get(pQuery);
+ Iterator<Row> it = rs.iterator();
+ StringBuilder deleteKeys = new StringBuilder();
+ Boolean expiredKeys = false;
+ while (it.hasNext()) {
+ Row row = it.next();
+ String id = row.getString("lock_id");
+ long ctime = Long.parseLong(row.getString("ctime"));
+ if(System.currentTimeMillis() >= ctime + 24 * 60 * 60 * 1000) {
+ expiredKeys = true;
+ String new_id = id.substring(1);
+ try {
+ MusicCore.deleteLock(new_id);
+ } catch (MusicLockingException e) {
+ logger.info(EELFLoggerDelegate.applicationLogger,
+ e.getMessage());
+ }
+ deleteKeys.append("'").append(id).append("'").append(",");
+ }
+ }
+ if(expiredKeys) {
+ deleteKeys.deleteCharAt(deleteKeys.length()-1);
+ CachingUtil.deleteKeysFromDB(deleteKeys.toString());
+ }
+ } catch (MusicServiceException e) {
+ logger.error(EELFLoggerDelegate.errorLogger,e,AppMessages.CACHEERROR,ErrorSeverity.CRITICAL, ErrorTypes.DATAERROR);
+ }
+ }