Merge pull request #2191 from constantine2nd/develop

Metric scheduler
This commit is contained in:
Simon Redfern 2023-02-28 12:26:51 +01:00 committed by GitHub
commit b04dc63742
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 9 deletions

View File

@ -1207,12 +1207,17 @@ user_account_validated_redirect_url =
# In case is not defined default value is false
user_account_is_validated = false
# Defines the number of days we keep rows in the table "MetricsArchive"
# Disable/Enable Metric Scheduler
enable_metrics_scheduler = true
# Defines the number of days we keep rows in the table "MetricArchive"
# default value is 3 years
retain_archive_metrics_days = 1095
# Defines the number of days we keep rows in the table "Metric" former "MappedMetric"
retain_metrics_days = 367
# Defines the number of rows we can process at once
retain_metrics_move_limit = 50000
# Defines the interval of the scheduler
retain_metrics_scheduler_interval_in_seconds = 3600
#if same session used for different ip address, we can show this warning, default is false.
show_ip_address_change_warning=false

View File

@ -684,8 +684,14 @@ class Boot extends MdcLoggable {
case Full(i) => DatabaseDriverScheduler.start(i)
case _ => // Do not start it
}
MetricsArchiveScheduler.start(intervalInSeconds = 86400)
APIUtil.getPropsAsBoolValue("enable_metrics_scheduler", true) match {
case true =>
val interval =
APIUtil.getPropsAsIntValue("retain_metrics_scheduler_interval_in_seconds", 3600)
MetricsArchiveScheduler.start(intervalInSeconds = interval)
case false => // Do not start it
}
object UsernameLockedChecker {
def beginServicing(session: LiftSession, req: Req){

View File

@ -473,9 +473,13 @@ import net.liftweb.util.Helpers._
//AuthUser.currentUser.get.user.foreign // this will be issue when the resource user is in remote side {
val user = AuthUser.currentUser.openOrThrowException(ErrorMessages.attemptedToOpenAnEmptyBox)
// In case that the provider is empty field we default to "local_identity_provider" or "hostname"
val provider = if(user.provider.get.isEmpty) Constant.localIdentityProvider else user.provider.get
val provider =
if(user.provider.get == null || user.provider.get.isEmpty)
Constant.localIdentityProvider
else
user.provider.get
Users.users.vend.getUserByUserName(provider, user.username.get)
}else if (directLogin.isDefined) // Direct Login
} else if (directLogin.isDefined) // Direct Login
DirectLogin.getUser
else if (hasDirectLoginHeader(authorization)) // Direct Login Deprecated
DirectLogin.getUser

View File

@ -4,7 +4,7 @@ import java.util.concurrent.TimeUnit
import java.util.{Calendar, Date}
import code.actorsystem.ObpLookupSystem
import code.api.util.{APIUtil, OBPToDate}
import code.api.util.{APIUtil, OBPLimit, OBPToDate}
import code.metrics.{APIMetric, APIMetrics, MappedMetric, MetricArchive}
import code.util.Helper.MdcLoggable
import net.liftweb.common.Full
@ -23,7 +23,7 @@ object MetricsArchiveScheduler extends MdcLoggable {
def start(intervalInSeconds: Long): Unit = {
logger.info("Hello from MetricsArchiveScheduler.start")
scheduler.schedule(
initialDelay = Duration(getMillisTillMidnight(), TimeUnit.MILLISECONDS),
initialDelay = Duration(intervalInSeconds, TimeUnit.SECONDS),
interval = Duration(intervalInSeconds, TimeUnit.SECONDS),
runnable = new Runnable {
def run(): Unit = {
@ -57,9 +57,10 @@ object MetricsArchiveScheduler extends MdcLoggable {
case _ => 60
}
val someDaysAgo: Date = new Date(currentTime.getTime - (oneDayInMillis * days))
val limit = APIUtil.getPropsAsIntValue("retain_metrics_move_limit", 50000)
// Get the data from the table "Metric" older than specified by retain_metrics_days
logger.info("MetricsArchiveScheduler.conditionalDeleteMetricsRow says before candidateMetricRowsToMove val")
val candidateMetricRowsToMove = APIMetrics.apiMetrics.vend.getAllMetrics(List(OBPToDate(someDaysAgo)))
val candidateMetricRowsToMove = APIMetrics.apiMetrics.vend.getAllMetrics(List(OBPToDate(someDaysAgo), OBPLimit(limit)))
logger.info("MetricsArchiveScheduler.conditionalDeleteMetricsRow says after candidateMetricRowsToMove val")
logger.info(s"Number of rows: ${candidateMetricRowsToMove.length}")
candidateMetricRowsToMove map { i =>