From f08914e7b376b92e9046dd8bd4bc4dc2f5996e6f Mon Sep 17 00:00:00 2001 From: Monika Date: Wed, 26 Jun 2019 17:54:18 -0400 Subject: installed solr --- .../webapp/js/angular/controllers/replication.js | 235 +++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 solr-8.1.1/server/solr-webapp/webapp/js/angular/controllers/replication.js (limited to 'solr-8.1.1/server/solr-webapp/webapp/js/angular/controllers/replication.js') diff --git a/solr-8.1.1/server/solr-webapp/webapp/js/angular/controllers/replication.js b/solr-8.1.1/server/solr-webapp/webapp/js/angular/controllers/replication.js new file mode 100644 index 000000000..9f7ac3e41 --- /dev/null +++ b/solr-8.1.1/server/solr-webapp/webapp/js/angular/controllers/replication.js @@ -0,0 +1,235 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +solrAdminApp.controller('ReplicationController', + function($scope, $rootScope, $routeParams, $interval, $timeout, Replication, Constants) { + $scope.resetMenu("replication", Constants.IS_CORE_PAGE); + + $scope.iterationCount = 1; + + $scope.refresh = function() { + Replication.details({core:$routeParams.core}, function(response) { + var timeout; + var interval; + if ($scope.interval) $interval.cancel($scope.interval); + $scope.isSlave = (response.details.isSlave === 'true'); + if ($scope.isSlave) { + $scope.progress = getProgressDetails(response.details.slave); + $scope.iterations = getIterations(response.details.slave); + $scope.versions = getSlaveVersions(response.details); + $scope.settings = getSlaveSettings(response.details); + if ($scope.settings.isReplicating) { + timeout = $timeout($scope.refresh, 1000); + } else if(!$scope.settings.isPollingDisabled && $scope.settings.pollInterval) { + interval = $scope.interval = $interval(function() { + $scope.settings.tick--; + }, 1000, $scope.settings.tick); + timeout = $timeout($scope.refresh, 1000*(1+$scope.settings.tick)); + } + } else { + $scope.versions = getMasterVersions(response.details); + } + $scope.master = getMasterSettings(response.details, $scope.isSlave); + + var onRouteChangeOff = $scope.$on('$routeChangeStart', function() { + if (interval) $interval.cancel(interval); + if (timeout) $timeout.cancel(timeout); + onRouteChangeOff(); + }); + }); + + }; + + $scope.execute = function(command) { + Replication.command({core:$routeParams.core, command:command}, function(data){$scope.refresh()}); + } + + $scope.showIterations = function() { $scope.iterationCount = 100000}; // limitTo should accept undefined, but doesn't work. + $scope.hideIterations = function() { $scope.iterationCount = 1}; + + $scope.refresh(); + }); + +var getProgressDetails = function(progress) { + + progress.timeRemaining = parseSeconds(progress.timeRemaining); + progress.totalPercent = parseInt(progress.totalPercent); + if (progress.totalPercent === 0) { + progress.totalPercentWidth = "1px"; + } else { + progress.totalPercentWidth = progress.totalPercent + "%"; + } + progress.currentFileSizePercent = parseInt(progress.currentFileSizePercent); + + if (!progress.indexReplicatedAtList) { + progress.indexReplicatedAtList = []; + } + + if (!progress.replicationFailedAtList) { + progress.replicationFailedAtList = []; + } + return progress; +}; + +var getIterations = function(slave) { + + var iterations = []; + + var find = function(list, date) { + return list.filter(function(e) {return e.date == date}); + }; + + for (var i in slave.indexReplicatedAtList) { + var date = slave.indexReplicatedAtList[i]; + var iteration = {date:date, status:"replicated", latest: false}; + if (date == slave.indexReplicatedAt) { + iteration.latest = true; + } + iterations.push(iteration); + } + + for (var i in slave.replicationFailedAtList) { + var failedDate = slave.replicationFailedAtList[i]; + var matchingIterations = find(iterations, failedDate); + if (matchingIterations[0]) { + iteration = matchingIterations[0]; + iteration.status = "failed"; + } else { + iteration = {date: failedDate, status:"failed", latest:false}; + iterations.push(iteration); + } + if (failedDate == slave.replicationFailedAt) { + iteration.latest = true; + } + } + iterations.sort(function(a,b){ return a.date> b.date;}).reverse(); + return iterations; +}; + +var getMasterVersions = function(data) { + versions = {masterSearch:{}, master:{}}; + + versions.masterSearch.version = data.indexVersion; + versions.masterSearch.generation = data.generation; + versions.masterSearch.size = data.indexSize; + + versions.master.version = data.master.replicableVersion || '-'; + versions.master.generation = data.master.replicableGeneration || '-'; + versions.master.size = '-'; + + return versions; +}; + +var getSlaveVersions = function(data) { + versions = {masterSearch: {}, master: {}, slave: {}}; + + versions.slave.version = data.indexVersion; + versions.slave.generation = data.generation; + versions.slave.size = data.indexSize; + + versions.master.version = data.slave.masterDetails.replicableVersion || '-'; + versions.master.generation = data.slave.masterDetails.replicableGeneration || '-'; + versions.master.size = '-'; + + versions.masterSearch.version = data.slave.masterDetails.indexVersion; + versions.masterSearch.generation = data.slave.masterDetails.generation; + versions.masterSearch.size = data.slave.masterDetails.indexSize; + + versions.changedVersion = data.indexVersion !== data.slave.masterDetails.indexVersion; + versions.changedGeneration = data.generation !== data.slave.masterDetails.generation; + + return versions; +}; + +var parseDateToEpoch = function(date) { + // ["Sat Mar 03 11:00:00 CET 2012", "Sat", "Mar", "03", "11:00:00", "CET", "2012"] + var parts = date.match( /^(\w+)\s+(\w+)\s+(\d+)\s+(\d+\:\d+\:\d+)\s+(\w+)\s+(\d+)$/ ); + + // "Sat Mar 03 2012 10:37:33" + var d = new Date( parts[1] + ' ' + parts[2] + ' ' + parts[3] + ' ' + parts[6] + ' ' + parts[4] ); + return d.getTime(); +} + +var parseSeconds = function(time) { + var seconds = 0; + var arr = new String(time || '').split('.'); + var parts = arr[0].split(':').reverse(); + + for (var i = 0; i < parts.length; i++) { + seconds += ( parseInt(parts[i], 10) || 0 ) * Math.pow(60, i); + } + + if (arr[1] && 5 <= parseInt(arr[1][0], 10)) { + seconds++; // treat more or equal than .5 as additional second + + } + + return seconds; +} + +var getSlaveSettings = function(data) { + var settings = {}; + settings.masterUrl = data.slave.masterUrl; + settings.isPollingDisabled = data.slave.isPollingDisabled == 'true'; + settings.pollInterval = data.slave.pollInterval; + settings.isReplicating = data.slave.isReplicating == 'true'; + settings.nextExecutionAt = data.slave.nextExecutionAt; + + if(settings.isReplicating) { + settings.isApprox = true; + settings.tick = parseSeconds(settings.pollInterval); + } else if (!settings.isPollingDisabled && settings.pollInterval) { + if( settings.nextExecutionAt ) { + settings.nextExecutionAtEpoch = parseDateToEpoch(settings.nextExecutionAt); + settings.currentTime = parseDateToEpoch(data.slave.currentDate); + + if( settings.nextExecutionAtEpoch > settings.currentTime) { + settings.isApprox = false; + settings.tick = ( settings.nextExecutionAtEpoch - settings.currentTime) / 1000; + } + } + } + return settings; +}; + +var getMasterSettings = function(details, isSlave) { + var master = {}; + var masterData = isSlave ? details.slave.masterDetails.master : details.master; + master.replicationEnabled = masterData.replicationEnabled == "true"; + master.replicateAfter = masterData.replicateAfter.join(", "); + + if (masterData.confFiles) { + master.files = []; + var confFiles = masterData.confFiles.split(','); + for (var i=0; i=0) { + title = file.replace(':', ' ยป '); + var parts = file.split(':'); + if (isSlave) { + short = parts[1]; + } else { + short = parts[0]; + } + } + master.files.push({title:title, name:short}); + } + } + return master; +} -- cgit v1.2.3-70-g09d2