X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fmusic%2Fmain%2FPropertiesListener.java;h=c5e8c37cbd2c095feda40033da44bb6bb2032617;hb=4d6e2a982cc0ee48aca9d8531424d795e44842c9;hp=8b00e4733acc86bbe40dbb57cd972a9caccf51bf;hpb=9b6efbd93a12c858a0d2643013217ec3d6c3a46d;p=music.git diff --git a/src/main/java/org/onap/music/main/PropertiesListener.java b/src/main/java/org/onap/music/main/PropertiesListener.java index 8b00e473..c5e8c37c 100755 --- a/src/main/java/org/onap/music/main/PropertiesListener.java +++ b/src/main/java/org/onap/music/main/PropertiesListener.java @@ -3,6 +3,7 @@ * org.onap.music * =================================================================== * Copyright (c) 2017 AT&T Intellectual Property + * Modifications Copyright (C) 2018 IBM. * =================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +20,7 @@ * ============LICENSE_END============================================= * ==================================================================== */ + package org.onap.music.main; import java.io.FileInputStream; @@ -27,17 +29,33 @@ import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.Properties; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; + +import org.onap.music.datastore.PreparedQueryObject; import org.onap.music.eelf.logging.EELFLoggerDelegate; import org.onap.music.eelf.logging.format.AppMessages; import org.onap.music.eelf.logging.format.ErrorSeverity; import org.onap.music.eelf.logging.format.ErrorTypes; -public class PropertiesListener implements ServletContextListener { +import org.onap.music.exceptions.MusicLockingException; +import org.onap.music.exceptions.MusicServiceException; + +import com.datastax.driver.core.ResultSet; +import com.datastax.driver.core.Row; + +public class PropertiesListener { // implements ServletContextListener { private Properties prop; + private static final String MUSIC_PROPERTIES="music.properties"; +/* private Properties prop; +>>>>>>> c8db07f77a945bc22046ef50d773c3c3608b014a private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(PropertiesListener.class); @Override @@ -51,8 +69,8 @@ public class PropertiesListener implements ServletContextListener { try { InputStream musicProps = null; projectProp.load(new FileInputStream(musicPropertiesFilePath)); - if (projectProp.containsKey("music.properties")) { - musicProps = new FileInputStream(projectProp.getProperty("music.properties")); + if (projectProp.containsKey(MUSIC_PROPERTIES)) { + musicProps = new FileInputStream(projectProp.getProperty(MUSIC_PROPERTIES)); } else { musicProps = new FileInputStream(MusicUtil.getMusicPropertiesFilePath()); } @@ -84,7 +102,7 @@ public class PropertiesListener implements ServletContextListener { case "music.rest.ip": MusicUtil.setMusicRestIp(prop.getProperty(key)); break; - case "music.properties": + case MUSIC_PROPERTIES: MusicUtil.setMusicPropertiesFilePath(prop.getProperty(key)); break; case "lock.lease.period": @@ -119,6 +137,37 @@ public class PropertiesListener implements ServletContextListener { case "aaf.endpoint.url": MusicUtil.setAafEndpointUrl(prop.getProperty(key)); break; + case "admin.username": + MusicUtil.setAdminId(prop.getProperty(key)); + break; + case "admin.password": + MusicUtil.setAdminPass(prop.getProperty(key)); + break; + case "cassandra.port": + MusicUtil.setCassandraPort(Integer.parseInt(prop.getProperty(key))); + break; + case "aaf.admin.url": + MusicUtil.setAafAdminUrl(prop.getProperty(key)); + break; + case "music.namespace": + MusicUtil.setMusicNamespace(prop.getProperty(key)); + break; + case "admin.aaf.role": + MusicUtil.setAdminAafRole(prop.getProperty(key)); + break; + case "notify.interval": + MusicUtil.setNotifyInterval(Integer.parseInt(prop.getProperty(key))); + break; + case "notify.timeout": + MusicUtil.setNotifyTimeOut(Integer.parseInt(prop.getProperty(key))); + break; + case "lock.using": + MusicUtil.setLockUsing(prop.getProperty(key)); + break; + case "cacheobject.maxlife": + MusicUtil.setCacheObjectMaxLife(Integer.parseInt(prop.getProperty(key))); + CachingUtil.setCacheEternalProps(); + break; default: logger.error(EELFLoggerDelegate.errorLogger, "No case found for " + key); @@ -126,7 +175,7 @@ public class PropertiesListener implements ServletContextListener { } } } catch (IOException e) { - logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.IOERROR ,ErrorSeverity.CRITICAL, ErrorTypes.CONNECTIONERROR); + logger.error(EELFLoggerDelegate.errorLogger,e.getMessage(), AppMessages.IOERROR ,ErrorSeverity.CRITICAL, ErrorTypes.CONNECTIONERROR); logger.error(EELFLoggerDelegate.errorLogger, e.getMessage()); } @@ -138,10 +187,71 @@ public class PropertiesListener implements ServletContextListener { "List of all MUSIC ids:" + MusicUtil.getAllIds().toString()); logger.info(EELFLoggerDelegate.applicationLogger, "List of all MUSIC public ips:" + MusicUtil.getAllPublicIps().toString()); + + scheduleCronJobForZKCleanup(); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { prop = null; } + + + private ScheduledExecutorService scheduler; + public void scheduleCronJobForZKCleanup() { + scheduler = Executors.newSingleThreadScheduledExecutor(); + scheduler.scheduleAtFixedRate(new CachingUtil(), 0, 24, TimeUnit.HOURS); + 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); + } catch (MusicServiceException e1) { + logger.error(EELFLoggerDelegate.errorLogger, e1.getMessage(),ErrorSeverity.ERROR); + } + + //Zookeeper cleanup + scheduler.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + deleteLocksFromDB(); + } + } , 0, 24, TimeUnit.HOURS); + } + + + public void deleteLocksFromDB() { + PreparedQueryObject pQuery = new PreparedQueryObject(); + pQuery.appendQueryString( + "select * from admin.locks"); + try { + ResultSet rs = MusicCore.get(pQuery); + Iterator it = rs.iterator(); + StringBuilder deleteKeys = new StringBuilder(); + Boolean expiredKeys = false; + while (it.hasNext()) { + Row 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.getMessage(),ErrorSeverity.ERROR); + } + } +*/ }