I use that judgement too — sometimes I don’t bother if it’s internal and I never would for something trivial like a typo.
~ David Smiley Freelance Apache Lucene/Solr Search Consultant/Developer http://www.linkedin.com/in/davidwsmiley On Wed, Mar 4, 2015 at 4:13 PM, Ramkumar R. Aiyengar < [email protected]> wrote: > The change had no functional impact, hence left it alone. > > But happy to follow whatever is the existing practice. Should I have one > for every change? > > On Wed, Mar 4, 2015 at 8:29 PM, Alan Woodward <[email protected]> wrote: > >> Hi Ram, I think you missed a CHANGES.txt entry on this one? >> >> Alan Woodward >> www.flax.co.uk >> >> >> On 4 Mar 2015, at 19:45, [email protected] wrote: >> >> Author: andyetitmoves >> Date: Wed Mar 4 19:45:09 2015 >> New Revision: 1664126 >> >> URL: http://svn.apache.org/r1664126 >> Log: >> SOLR-6804: Untangle SnapPuller and ReplicationHandler >> >> This closes #110 >> >> Added: >> >> >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java >> - copied, changed from r1663969, >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java >> Removed: >> >> >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java >> Modified: >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java >> >> >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java >> >> >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapShooter.java >> lucene/dev/trunk/solr/core/src/test-files/log4j.properties >> >> >> lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java >> >> >> lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java >> >> >> lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java >> >> Modified: >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java >> URL: >> http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java?rev=1664126&r1=1664125&r2=1664126&view=diff >> >> ============================================================================== >> --- >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java >> (original) >> +++ >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java Wed >> Mar 4 19:45:09 2015 >> @@ -83,9 +83,9 @@ import org.apache.solr.common.util.IOUti >> import org.apache.solr.common.util.NamedList; >> import org.apache.solr.common.util.SimpleOrderedMap; >> import org.apache.solr.core.DirectoryFactory.DirContext; >> +import org.apache.solr.handler.IndexFetcher; >> import org.apache.solr.handler.ReplicationHandler; >> import org.apache.solr.handler.RequestHandlerBase; >> -import org.apache.solr.handler.SnapPuller; >> import org.apache.solr.handler.admin.ShowFileRequestHandler; >> import org.apache.solr.handler.component.DebugComponent; >> import org.apache.solr.handler.component.ExpandComponent; >> @@ -291,7 +291,7 @@ public final class SolrCore implements S >> dir = getDirectoryFactory().get(getDataDir(), DirContext.META_DATA, >> getSolrConfig().indexConfig.lockType); >> IndexInput input; >> try { >> - input = dir.openInput(SnapPuller.INDEX_PROPERTIES, >> IOContext.DEFAULT); >> + input = dir.openInput(IndexFetcher.INDEX_PROPERTIES, >> IOContext.DEFAULT); >> } catch (FileNotFoundException | NoSuchFileException e) { >> input = null; >> } >> @@ -307,7 +307,7 @@ public final class SolrCore implements S >> } >> >> } catch (Exception e) { >> - log.error("Unable to load " + SnapPuller.INDEX_PROPERTIES, e); >> + log.error("Unable to load " + IndexFetcher.INDEX_PROPERTIES, >> e); >> } finally { >> IOUtils.closeQuietly(is); >> } >> >> Copied: >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java >> (from r1663969, >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java) >> URL: >> http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java?p2=lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java&p1=lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java&r1=1663969&r2=1664126&rev=1664126&view=diff >> >> ============================================================================== >> --- >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java >> (original) >> +++ >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java >> Wed Mar 4 19:45:09 2015 >> @@ -67,11 +67,7 @@ import java.util.concurrent.ExecutionExc >> import java.util.concurrent.ExecutorService; >> import java.util.concurrent.Executors; >> import java.util.concurrent.Future; >> -import java.util.concurrent.ScheduledExecutorService; >> import java.util.concurrent.TimeUnit; >> -import java.util.concurrent.atomic.AtomicBoolean; >> -import java.util.regex.Matcher; >> -import java.util.regex.Pattern; >> import java.util.zip.Adler32; >> import java.util.zip.Checksum; >> import java.util.zip.InflaterInputStream; >> @@ -94,7 +90,6 @@ import org.apache.solr.common.SolrExcept >> import org.apache.solr.common.SolrException.ErrorCode; >> import org.apache.solr.common.params.CommonParams; >> import org.apache.solr.common.params.ModifiableSolrParams; >> -import org.apache.solr.common.util.ExecutorUtil; >> import org.apache.solr.common.util.FastInputStream; >> import org.apache.solr.common.util.NamedList; >> import org.apache.solr.core.DirectoryFactory; >> @@ -121,24 +116,16 @@ import org.slf4j.LoggerFactory; >> * >> * @since solr 1.4 >> */ >> -public class SnapPuller { >> +public class IndexFetcher { >> private static final int _100K = 100000; >> >> public static final String INDEX_PROPERTIES = "index.properties"; >> >> - private static final Logger LOG = >> LoggerFactory.getLogger(SnapPuller.class.getName()); >> + private static final Logger LOG = >> LoggerFactory.getLogger(IndexFetcher.class.getName()); >> >> private final String masterUrl; >> >> - private final ReplicationHandler replicationHandler; >> - >> - private final Integer pollInterval; >> - >> - private String pollIntervalStr; >> - >> - private ScheduledExecutorService executorService; >> - >> - private volatile long executorStartTime; >> + final ReplicationHandler replicationHandler; >> >> private volatile long replicationStartTime; >> >> @@ -166,11 +153,6 @@ public class SnapPuller { >> >> private boolean useExternal = false; >> >> - /** >> - * Disable the timer task for polling >> - */ >> - private AtomicBoolean pollDisabled = new AtomicBoolean(false); >> - >> private final HttpClient myHttpClient; >> >> private static HttpClient createHttpClient(SolrCore core, String >> connTimeout, String readTimeout, String httpBasicAuthUser, String >> httpBasicAuthPassword, boolean useCompression) { >> @@ -184,7 +166,7 @@ public class SnapPuller { >> return HttpClientUtil.createClient(httpClientParams, >> core.getCoreDescriptor().getCoreContainer().getUpdateShardHandler().getConnectionManager()); >> } >> >> - public SnapPuller(final NamedList initArgs, final ReplicationHandler >> handler, final SolrCore sc) { >> + public IndexFetcher(final NamedList initArgs, final ReplicationHandler >> handler, final SolrCore sc) { >> solrCore = sc; >> String masterUrl = (String) initArgs.get(MASTER_URL); >> if (masterUrl == null) >> @@ -197,8 +179,6 @@ public class SnapPuller { >> this.masterUrl = masterUrl; >> >> this.replicationHandler = handler; >> - pollIntervalStr = (String) initArgs.get(POLL_INTERVAL); >> - pollInterval = readInterval(pollIntervalStr); >> String compress = (String) initArgs.get(COMPRESSION); >> useInternal = INTERNAL.equals(compress); >> useExternal = EXTERNAL.equals(compress); >> @@ -207,35 +187,6 @@ public class SnapPuller { >> String httpBasicAuthUser = (String) >> initArgs.get(HttpClientUtil.PROP_BASIC_AUTH_USER); >> String httpBasicAuthPassword = (String) >> initArgs.get(HttpClientUtil.PROP_BASIC_AUTH_PASS); >> myHttpClient = createHttpClient(solrCore, connTimeout, readTimeout, >> httpBasicAuthUser, httpBasicAuthPassword, useExternal); >> - if (pollInterval != null && pollInterval > 0) { >> - startExecutorService(); >> - } else { >> - LOG.info(" No value set for 'pollInterval'. Timer Task not >> started."); >> - } >> - } >> - >> - private void startExecutorService() { >> - Runnable task = new Runnable() { >> - @Override >> - public void run() { >> - if (pollDisabled.get()) { >> - LOG.info("Poll disabled"); >> - return; >> - } >> - try { >> - LOG.debug("Polling for index modifications"); >> - executorStartTime = System.currentTimeMillis(); >> - replicationHandler.doFetch(null, false); >> - } catch (Exception e) { >> - LOG.error("Exception in fetching index", e); >> - } >> - } >> - }; >> - executorService = Executors.newSingleThreadScheduledExecutor( >> - new DefaultSolrThreadFactory("snapPuller")); >> - long initialDelay = pollInterval - (System.currentTimeMillis() % >> pollInterval); >> - executorService.scheduleAtFixedRate(task, initialDelay, >> pollInterval, TimeUnit.MILLISECONDS); >> - LOG.info("Poll Scheduled at an interval of " + pollInterval + "ms"); >> } >> >> /** >> @@ -427,13 +378,13 @@ public class SnapPuller { >> Thread.sleep(1000); >> c++; >> if (c >= 30) { >> - LOG.warn("SnapPuller unable to cleanup unused lucene >> index files so we must do a full copy instead"); >> + LOG.warn("IndexFetcher unable to cleanup unused lucene >> index files so we must do a full copy instead"); >> isFullCopyNeeded = true; >> break; >> } >> } >> if (c > 0) { >> - LOG.info("SnapPuller slept for " + (c * 1000) + "ms for >> unused lucene index files to be delete-able"); >> + LOG.info("IndexFetcher slept for " + (c * 1000) + "ms for >> unused lucene index files to be delete-able"); >> } >> } finally { >> writer.decref(); >> @@ -634,7 +585,7 @@ public class SnapPuller { >> props.setProperty(TIMES_CONFIG_REPLICATED, >> String.valueOf(confFilesCount)); >> } >> >> - props.setProperty(LAST_CYCLE_BYTES_DOWNLOADED, >> String.valueOf(getTotalBytesDownloaded(this))); >> + props.setProperty(LAST_CYCLE_BYTES_DOWNLOADED, >> String.valueOf(getTotalBytesDownloaded())); >> if (!successfulInstall) { >> int numFailures = 1; >> if (props.containsKey(TIMES_FAILED)) { >> @@ -663,20 +614,20 @@ public class SnapPuller { >> } >> } >> >> - static long getTotalBytesDownloaded(SnapPuller snappuller) { >> + long getTotalBytesDownloaded() { >> long bytesDownloaded = 0; >> //get size from list of files to download >> - for (Map<String, Object> file : snappuller.getFilesDownloaded()) { >> + for (Map<String, Object> file : getFilesDownloaded()) { >> bytesDownloaded += (Long) file.get(SIZE); >> } >> >> //get size from list of conf files to download >> - for (Map<String, Object> file : snappuller.getConfFilesDownloaded()) >> { >> + for (Map<String, Object> file : getConfFilesDownloaded()) { >> bytesDownloaded += (Long) file.get(SIZE); >> } >> >> //get size from current file being downloaded >> - Map<String, Object> currentFile = snappuller.getCurrentFile(); >> + Map<String, Object> currentFile = getCurrentFile(); >> if (currentFile != null) { >> if (currentFile.containsKey("bytesDownloaded")) { >> bytesDownloaded += (Long) currentFile.get("bytesDownloaded"); >> @@ -1053,33 +1004,33 @@ public class SnapPuller { >> Directory dir = null; >> try { >> dir = solrCore.getDirectoryFactory().get(solrCore.getDataDir(), >> DirContext.META_DATA, solrCore.getSolrConfig().indexConfig.lockType); >> - if (slowFileExists(dir, SnapPuller.INDEX_PROPERTIES)){ >> - final IndexInput input = >> dir.openInput(SnapPuller.INDEX_PROPERTIES, >> DirectoryFactory.IOCONTEXT_NO_CACHE); >> + if (slowFileExists(dir, IndexFetcher.INDEX_PROPERTIES)){ >> + final IndexInput input = >> dir.openInput(IndexFetcher.INDEX_PROPERTIES, >> DirectoryFactory.IOCONTEXT_NO_CACHE); >> >> final InputStream is = new PropertiesInputStream(input); >> try { >> p.load(new InputStreamReader(is, StandardCharsets.UTF_8)); >> } catch (Exception e) { >> - LOG.error("Unable to load " + SnapPuller.INDEX_PROPERTIES, e); >> + LOG.error("Unable to load " + IndexFetcher.INDEX_PROPERTIES, >> e); >> } finally { >> IOUtils.closeQuietly(is); >> } >> } >> try { >> - dir.deleteFile(SnapPuller.INDEX_PROPERTIES); >> + dir.deleteFile(IndexFetcher.INDEX_PROPERTIES); >> } catch (IOException e) { >> // no problem >> } >> - final IndexOutput out = >> dir.createOutput(SnapPuller.INDEX_PROPERTIES, >> DirectoryFactory.IOCONTEXT_NO_CACHE); >> + final IndexOutput out = >> dir.createOutput(IndexFetcher.INDEX_PROPERTIES, >> DirectoryFactory.IOCONTEXT_NO_CACHE); >> p.put("index", tmpIdxDirName); >> Writer os = null; >> try { >> os = new OutputStreamWriter(new PropertiesOutputStream(out), >> StandardCharsets.UTF_8); >> - p.store(os, SnapPuller.INDEX_PROPERTIES); >> + p.store(os, IndexFetcher.INDEX_PROPERTIES); >> dir.sync(Collections.singleton(INDEX_PROPERTIES)); >> } catch (Exception e) { >> throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, >> - "Unable to write " + SnapPuller.INDEX_PROPERTIES, e); >> + "Unable to write " + IndexFetcher.INDEX_PROPERTIES, e); >> } finally { >> IOUtils.closeQuietly(os); >> } >> @@ -1161,25 +1112,9 @@ public class SnapPuller { >> } >> >> /** >> - * Disable periodic polling >> - */ >> - void disablePoll() { >> - pollDisabled.set(true); >> - LOG.info("inside disable poll, value of pollDisabled = " + >> pollDisabled); >> - } >> - >> - /** >> - * Enable periodic polling >> - */ >> - void enablePoll() { >> - pollDisabled.set(false); >> - LOG.info("inside enable poll, value of pollDisabled = " + >> pollDisabled); >> - } >> - >> - /** >> - * Stops the ongoing pull >> + * Stops the ongoing fetch >> */ >> - void abortPull() { >> + void abortFetch() { >> stop = true; >> } >> >> @@ -1187,6 +1122,13 @@ public class SnapPuller { >> return replicationStartTime; >> } >> >> + long getReplicationTimeElapsed() { >> + long timeElapsed = 0; >> + if (getReplicationStartTime() > 0) >> + timeElapsed = TimeUnit.SECONDS.convert(System.currentTimeMillis() >> - getReplicationStartTime(), TimeUnit.MILLISECONDS); >> + return timeElapsed; >> + } >> + >> List<Map<String, Object>> getConfFilesToDownload() { >> //make a copy first because it can be null later >> List<Map<String, Object>> tmp = confFilesToDownload; >> @@ -1224,17 +1166,6 @@ public class SnapPuller { >> return tmp; >> } >> >> - boolean isPollingDisabled() { >> - return pollDisabled.get(); >> - } >> - >> - Long getNextScheduledExecTime() { >> - Long nextTime = null; >> - if (executorStartTime > 0) >> - nextTime = executorStartTime + pollInterval; >> - return nextTime; >> - } >> - >> private static class ReplicationHandlerException extends >> InterruptedException { >> public ReplicationHandlerException(String message) { >> super(message); >> @@ -1586,55 +1517,14 @@ public class SnapPuller { >> } >> } >> >> - static Integer readInterval(String interval) { >> - if (interval == null) >> - return null; >> - int result = 0; >> - Matcher m = INTERVAL_PATTERN.matcher(interval.trim()); >> - if (m.find()) { >> - String hr = m.group(1); >> - String min = m.group(2); >> - String sec = m.group(3); >> - result = 0; >> - try { >> - if (sec != null && sec.length() > 0) >> - result += Integer.parseInt(sec); >> - if (min != null && min.length() > 0) >> - result += (60 * Integer.parseInt(min)); >> - if (hr != null && hr.length() > 0) >> - result += (60 * 60 * Integer.parseInt(hr)); >> - result *= 1000; >> - } catch (NumberFormatException e) { >> - throw new SolrException(ErrorCode.SERVER_ERROR, >> INTERVAL_ERR_MSG); >> - } >> - } else { >> - throw new SolrException(ErrorCode.SERVER_ERROR, INTERVAL_ERR_MSG); >> - } >> - >> - return result; >> - } >> - >> public void destroy() { >> - try { >> - if (executorService != null) executorService.shutdown(); >> - } finally { >> - try { >> - abortPull(); >> - } finally { >> - if (executorService != null) ExecutorUtil >> - .shutdownNowAndAwaitTermination(executorService); >> - } >> - } >> + abortFetch(); >> } >> >> String getMasterUrl() { >> return masterUrl; >> } >> >> - String getPollInterval() { >> - return pollIntervalStr; >> - } >> - >> private static final int MAX_RETRIES = 5; >> >> private static final int NO_CONTENT = 1; >> @@ -1643,12 +1533,6 @@ public class SnapPuller { >> >> public static final String REPLICATION_PROPERTIES = >> "replication.properties"; >> >> - public static final String POLL_INTERVAL = "pollInterval"; >> - >> - public static final String INTERVAL_ERR_MSG = "The " + POLL_INTERVAL + >> " must be in this format 'HH:mm:ss'"; >> - >> - private static final Pattern INTERVAL_PATTERN = Pattern.compile("( >> \\d*?):(\\d*?):(\\d*)"); >> - >> static final String INDEX_REPLICATED_AT = "indexReplicatedAt"; >> >> static final String TIMES_INDEX_REPLICATED = "timesIndexReplicated"; >> >> Modified: >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java >> URL: >> http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java?rev=1664126&r1=1664125&r2=1664126&view=diff >> >> ============================================================================== >> --- >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java >> (original) >> +++ >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java >> Wed Mar 4 19:45:09 2015 >> @@ -36,9 +36,13 @@ import java.util.HashMap; >> import java.util.List; >> import java.util.Map; >> import java.util.Properties; >> +import java.util.concurrent.Executors; >> +import java.util.concurrent.ScheduledExecutorService; >> import java.util.concurrent.TimeUnit; >> import java.util.concurrent.atomic.AtomicBoolean; >> import java.util.concurrent.locks.ReentrantLock; >> +import java.util.regex.Matcher; >> +import java.util.regex.Pattern; >> import java.util.zip.Adler32; >> import java.util.zip.Checksum; >> import java.util.zip.DeflaterOutputStream; >> @@ -60,6 +64,7 @@ import org.apache.solr.common.SolrExcept >> import org.apache.solr.common.params.CommonParams; >> import org.apache.solr.common.params.ModifiableSolrParams; >> import org.apache.solr.common.params.SolrParams; >> +import org.apache.solr.common.util.ExecutorUtil; >> import org.apache.solr.common.util.FastOutputStream; >> import org.apache.solr.common.util.NamedList; >> import org.apache.solr.common.util.SimpleOrderedMap; >> @@ -75,6 +80,7 @@ import org.apache.solr.request.SolrQuery >> import org.apache.solr.response.SolrQueryResponse; >> import org.apache.solr.search.SolrIndexSearcher; >> import org.apache.solr.update.SolrIndexWriter; >> +import org.apache.solr.util.DefaultSolrThreadFactory; >> import org.apache.solr.util.NumberUtils; >> import org.apache.solr.util.PropertiesInputStream; >> import org.apache.solr.util.RefCounted; >> @@ -90,8 +96,8 @@ import org.slf4j.LoggerFactory; >> * file (command=filecontent&file=<FILE_NAME>) You can >> optionally specify an offset and length to get that >> * chunk of the file. You can request a configuration file by using "cf" >> parameter instead of the "file" parameter.</li> >> * <li>Get status/statistics (command=details)</li> </ol> <p>When running >> on the slave, it provides the following >> - * commands <ol> <li>Perform a snap pull now (command=snappull)</li> >> <li>Get status/statistics (command=details)</li> >> - * <li>Abort a snap pull (command=abort)</li> <li>Enable/Disable polling >> the master for new versions (command=enablepoll >> + * commands <ol> <li>Perform an index fetch now (command=snappull)</li> >> <li>Get status/statistics (command=details)</li> >> + * <li>Abort an index fetch (command=abort)</li> <li>Enable/Disable >> polling the master for new versions (command=enablepoll >> * or command=disablepoll)</li> </ol> >> * >> * >> @@ -134,9 +140,9 @@ public class ReplicationHandler extends >> } >> } >> >> - private SnapPuller snapPuller; >> + private IndexFetcher pollingIndexFetcher; >> >> - private ReentrantLock snapPullLock = new ReentrantLock(); >> + private ReentrantLock indexFetchLock = new ReentrantLock(); >> >> private String includeConfFiles; >> >> @@ -151,14 +157,18 @@ public class ReplicationHandler extends >> private boolean replicateOnCommit = false; >> >> private boolean replicateOnStart = false; >> - >> + >> + private ScheduledExecutorService executorService; >> + >> + private volatile long executorStartTime; >> + >> private int numberBackupsToKeep = 0; //zero: do not delete old backups >> >> private int numTimesReplicated = 0; >> >> private final Map<String, FileInfo> confFileInfoCache = new HashMap<>(); >> >> - private Integer reserveCommitDuration = >> SnapPuller.readInterval("00:00:10"); >> + private Integer reserveCommitDuration = readInterval("00:00:10"); >> >> volatile IndexCommit indexCommitPoint; >> >> @@ -166,6 +176,19 @@ public class ReplicationHandler extends >> >> private AtomicBoolean replicationEnabled = new AtomicBoolean(true); >> >> + private Integer pollInterval; >> + >> + private String pollIntervalStr; >> + >> + /** >> + * Disable the timer task for polling >> + */ >> + private AtomicBoolean pollDisabled = new AtomicBoolean(false); >> + >> + String getPollInterval() { >> + return pollIntervalStr; >> + } >> + >> @Override >> public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse >> rsp) throws Exception { >> rsp.setHttpCaching(false); >> @@ -221,38 +244,38 @@ public class ReplicationHandler extends >> return; >> } >> final SolrParams paramsCopy = new ModifiableSolrParams(solrParams); >> - Thread puller = new Thread("explicit-fetchindex-cmd") { >> + Thread fetchThread = new Thread("explicit-fetchindex-cmd") { >> @Override >> public void run() { >> doFetch(paramsCopy, false); >> } >> }; >> - puller.setDaemon(false); >> - puller.start(); >> + fetchThread.setDaemon(false); >> + fetchThread.start(); >> if (solrParams.getBool(WAIT, false)) { >> - puller.join(); >> + fetchThread.join(); >> } >> rsp.add(STATUS, OK_STATUS); >> } else if (command.equalsIgnoreCase(CMD_DISABLE_POLL)) { >> - if (snapPuller != null){ >> - snapPuller.disablePoll(); >> + if (pollingIndexFetcher != null){ >> + disablePoll(); >> rsp.add(STATUS, OK_STATUS); >> } else { >> rsp.add(STATUS, ERR_STATUS); >> rsp.add("message","No slave configured"); >> } >> } else if (command.equalsIgnoreCase(CMD_ENABLE_POLL)) { >> - if (snapPuller != null){ >> - snapPuller.enablePoll(); >> + if (pollingIndexFetcher != null){ >> + enablePoll(); >> rsp.add(STATUS, OK_STATUS); >> }else { >> rsp.add(STATUS,ERR_STATUS); >> rsp.add("message","No slave configured"); >> } >> } else if (command.equalsIgnoreCase(CMD_ABORT_FETCH)) { >> - SnapPuller temp = tempSnapPuller; >> - if (temp != null){ >> - temp.abortPull(); >> + IndexFetcher fetcher = currentIndexFetcher; >> + if (fetcher != null){ >> + fetcher.abortFetch(); >> rsp.add(STATUS, OK_STATUS); >> } else { >> rsp.add(STATUS,ERR_STATUS); >> @@ -321,38 +344,35 @@ public class ReplicationHandler extends >> return null; >> } >> >> - private volatile SnapPuller tempSnapPuller; >> + private volatile IndexFetcher currentIndexFetcher; >> >> public boolean doFetch(SolrParams solrParams, boolean forceReplication) >> { >> String masterUrl = solrParams == null ? null : >> solrParams.get(MASTER_URL); >> - if (!snapPullLock.tryLock()) >> + if (!indexFetchLock.tryLock()) >> return false; >> try { >> if (masterUrl != null) { >> - if (tempSnapPuller != null && tempSnapPuller != snapPuller) { >> - tempSnapPuller.destroy(); >> + if (currentIndexFetcher != null && currentIndexFetcher != >> pollingIndexFetcher) { >> + currentIndexFetcher.destroy(); >> } >> - >> - NamedList<Object> nl = solrParams.toNamedList(); >> - nl.remove(SnapPuller.POLL_INTERVAL); >> - tempSnapPuller = new SnapPuller(nl, this, core); >> + currentIndexFetcher = new IndexFetcher(solrParams.toNamedList(), >> this, core); >> } else { >> - tempSnapPuller = snapPuller; >> + currentIndexFetcher = pollingIndexFetcher; >> } >> - return tempSnapPuller.fetchLatestIndex(core, forceReplication); >> + return currentIndexFetcher.fetchLatestIndex(core, >> forceReplication); >> } catch (Exception e) { >> - SolrException.log(LOG, "SnapPull failed ", e); >> + SolrException.log(LOG, "Index fetch failed ", e); >> } finally { >> - if (snapPuller != null) { >> - tempSnapPuller = snapPuller; >> + if (pollingIndexFetcher != null) { >> + currentIndexFetcher = pollingIndexFetcher; >> } >> - snapPullLock.unlock(); >> + indexFetchLock.unlock(); >> } >> return false; >> } >> >> boolean isReplicating() { >> - return snapPullLock.isLocked(); >> + return indexFetchLock.isLocked(); >> } >> >> private void doSnapShoot(SolrParams params, SolrQueryResponse rsp, >> @@ -390,10 +410,10 @@ public class ReplicationHandler extends >> >> /** >> * This method adds an Object of FileStream to the response . The >> FileStream implements a custom protocol which is >> - * understood by SnapPuller.FileFetcher >> + * understood by IndexFetcher.FileFetcher >> * >> - * @see org.apache.solr.handler.SnapPuller.LocalFsFileFetcher >> - * @see org.apache.solr.handler.SnapPuller.DirectoryFileFetcher >> + * @see IndexFetcher.LocalFsFileFetcher >> + * @see IndexFetcher.DirectoryFileFetcher >> */ >> private void getFileStream(SolrParams solrParams, SolrQueryResponse >> rsp) { >> ModifiableSolrParams rawParams = new ModifiableSolrParams(solrParams); >> @@ -538,18 +558,28 @@ public class ReplicationHandler extends >> } >> >> void disablePoll() { >> - if (isSlave) >> - snapPuller.disablePoll(); >> + if (isSlave) { >> + pollDisabled.set(true); >> + LOG.info("inside disable poll, value of pollDisabled = " + >> pollDisabled); >> + } >> } >> >> void enablePoll() { >> - if (isSlave) >> - snapPuller.enablePoll(); >> + if (isSlave) { >> + pollDisabled.set(false); >> + LOG.info("inside enable poll, value of pollDisabled = " + >> pollDisabled); >> + } >> } >> >> boolean isPollingDisabled() { >> - if (snapPuller == null) return true; >> - return snapPuller.isPollingDisabled(); >> + return pollDisabled.get(); >> + } >> + >> + Long getNextScheduledExecTime() { >> + Long nextTime = null; >> + if (executorStartTime > 0) >> + nextTime = executorStartTime + pollInterval; >> + return nextTime; >> } >> >> int getTimesReplicatedSinceStartup() { >> @@ -611,31 +641,31 @@ public class ReplicationHandler extends >> list.add("isMaster", String.valueOf(isMaster)); >> list.add("isSlave", String.valueOf(isSlave)); >> >> - SnapPuller snapPuller = tempSnapPuller; >> - if (snapPuller != null) { >> - list.add(MASTER_URL, snapPuller.getMasterUrl()); >> - if (snapPuller.getPollInterval() != null) { >> - list.add(SnapPuller.POLL_INTERVAL, >> snapPuller.getPollInterval()); >> + IndexFetcher fetcher = currentIndexFetcher; >> + if (fetcher != null) { >> + list.add(MASTER_URL, fetcher.getMasterUrl()); >> + if (getPollInterval() != null) { >> + list.add(POLL_INTERVAL, getPollInterval()); >> } >> list.add("isPollingDisabled", >> String.valueOf(isPollingDisabled())); >> list.add("isReplicating", String.valueOf(isReplicating())); >> - long elapsed = getTimeElapsed(snapPuller); >> - long val = SnapPuller.getTotalBytesDownloaded(snapPuller); >> + long elapsed = fetcher.getReplicationTimeElapsed(); >> + long val = fetcher.getTotalBytesDownloaded(); >> if (elapsed > 0) { >> list.add("timeElapsed", elapsed); >> list.add("bytesDownloaded", val); >> list.add("downloadSpeed", val / elapsed); >> } >> Properties props = loadReplicationProperties(); >> - addVal(list, SnapPuller.PREVIOUS_CYCLE_TIME_TAKEN, props, >> Long.class); >> - addVal(list, SnapPuller.INDEX_REPLICATED_AT, props, Date.class); >> - addVal(list, SnapPuller.CONF_FILES_REPLICATED_AT, props, >> Date.class); >> - addVal(list, SnapPuller.REPLICATION_FAILED_AT, props, >> Date.class); >> - addVal(list, SnapPuller.TIMES_FAILED, props, Integer.class); >> - addVal(list, SnapPuller.TIMES_INDEX_REPLICATED, props, >> Integer.class); >> - addVal(list, SnapPuller.LAST_CYCLE_BYTES_DOWNLOADED, props, >> Long.class); >> - addVal(list, SnapPuller.TIMES_CONFIG_REPLICATED, props, >> Integer.class); >> - addVal(list, SnapPuller.CONF_FILES_REPLICATED, props, >> String.class); >> + addVal(list, IndexFetcher.PREVIOUS_CYCLE_TIME_TAKEN, props, >> Long.class); >> + addVal(list, IndexFetcher.INDEX_REPLICATED_AT, props, >> Date.class); >> + addVal(list, IndexFetcher.CONF_FILES_REPLICATED_AT, props, >> Date.class); >> + addVal(list, IndexFetcher.REPLICATION_FAILED_AT, props, >> Date.class); >> + addVal(list, IndexFetcher.TIMES_FAILED, props, Integer.class); >> + addVal(list, IndexFetcher.TIMES_INDEX_REPLICATED, props, >> Integer.class); >> + addVal(list, IndexFetcher.LAST_CYCLE_BYTES_DOWNLOADED, props, >> Long.class); >> + addVal(list, IndexFetcher.TIMES_CONFIG_REPLICATED, props, >> Integer.class); >> + addVal(list, IndexFetcher.CONF_FILES_REPLICATED, props, >> String.class); >> } >> if (isMaster) { >> if (includeConfFiles != null) list.add("confFilesToReplicate", >> includeConfFiles); >> @@ -677,12 +707,12 @@ public class ReplicationHandler extends >> master.add("replicableGeneration", repCommitInfo.generation); >> } >> >> - SnapPuller snapPuller = tempSnapPuller; >> - if (snapPuller != null) { >> + IndexFetcher fetcher = currentIndexFetcher; >> + if (fetcher != null) { >> Properties props = loadReplicationProperties(); >> if (showSlaveDetails) { >> try { >> - NamedList nl = snapPuller.getDetails(); >> + NamedList nl = fetcher.getDetails(); >> slave.add("masterDetails", nl.get(CMD_DETAILS)); >> } catch (Exception e) { >> LOG.warn( >> @@ -691,26 +721,26 @@ public class ReplicationHandler extends >> slave.add(ERR_STATUS, "invalid_master"); >> } >> } >> - slave.add(MASTER_URL, snapPuller.getMasterUrl()); >> - if (snapPuller.getPollInterval() != null) { >> - slave.add(SnapPuller.POLL_INTERVAL, >> snapPuller.getPollInterval()); >> + slave.add(MASTER_URL, fetcher.getMasterUrl()); >> + if (getPollInterval() != null) { >> + slave.add(POLL_INTERVAL, getPollInterval()); >> } >> - if (snapPuller.getNextScheduledExecTime() != null && >> !isPollingDisabled()) { >> - slave.add(NEXT_EXECUTION_AT, new >> Date(snapPuller.getNextScheduledExecTime()).toString()); >> + if (getNextScheduledExecTime() != null && !isPollingDisabled()) { >> + slave.add(NEXT_EXECUTION_AT, new >> Date(getNextScheduledExecTime()).toString()); >> } else if (isPollingDisabled()) { >> slave.add(NEXT_EXECUTION_AT, "Polling disabled"); >> } >> - addVal(slave, SnapPuller.INDEX_REPLICATED_AT, props, Date.class); >> - addVal(slave, SnapPuller.INDEX_REPLICATED_AT_LIST, props, >> List.class); >> - addVal(slave, SnapPuller.REPLICATION_FAILED_AT_LIST, props, >> List.class); >> - addVal(slave, SnapPuller.TIMES_INDEX_REPLICATED, props, >> Integer.class); >> - addVal(slave, SnapPuller.CONF_FILES_REPLICATED, props, >> Integer.class); >> - addVal(slave, SnapPuller.TIMES_CONFIG_REPLICATED, props, >> Integer.class); >> - addVal(slave, SnapPuller.CONF_FILES_REPLICATED_AT, props, >> Integer.class); >> - addVal(slave, SnapPuller.LAST_CYCLE_BYTES_DOWNLOADED, props, >> Long.class); >> - addVal(slave, SnapPuller.TIMES_FAILED, props, Integer.class); >> - addVal(slave, SnapPuller.REPLICATION_FAILED_AT, props, Date.class); >> - addVal(slave, SnapPuller.PREVIOUS_CYCLE_TIME_TAKEN, props, >> Long.class); >> + addVal(slave, IndexFetcher.INDEX_REPLICATED_AT, props, Date.class); >> + addVal(slave, IndexFetcher.INDEX_REPLICATED_AT_LIST, props, >> List.class); >> + addVal(slave, IndexFetcher.REPLICATION_FAILED_AT_LIST, props, >> List.class); >> + addVal(slave, IndexFetcher.TIMES_INDEX_REPLICATED, props, >> Integer.class); >> + addVal(slave, IndexFetcher.CONF_FILES_REPLICATED, props, >> Integer.class); >> + addVal(slave, IndexFetcher.TIMES_CONFIG_REPLICATED, props, >> Integer.class); >> + addVal(slave, IndexFetcher.CONF_FILES_REPLICATED_AT, props, >> Integer.class); >> + addVal(slave, IndexFetcher.LAST_CYCLE_BYTES_DOWNLOADED, props, >> Long.class); >> + addVal(slave, IndexFetcher.TIMES_FAILED, props, Integer.class); >> + addVal(slave, IndexFetcher.REPLICATION_FAILED_AT, props, >> Date.class); >> + addVal(slave, IndexFetcher.PREVIOUS_CYCLE_TIME_TAKEN, props, >> Long.class); >> >> slave.add("currentDate", new Date().toString()); >> slave.add("isPollingDisabled", String.valueOf(isPollingDisabled())); >> @@ -720,13 +750,13 @@ public class ReplicationHandler extends >> try { >> long bytesToDownload = 0; >> List<String> filesToDownload = new ArrayList<>(); >> - for (Map<String, Object> file : >> snapPuller.getFilesToDownload()) { >> + for (Map<String, Object> file : fetcher.getFilesToDownload()) { >> filesToDownload.add((String) file.get(NAME)); >> bytesToDownload += (Long) file.get(SIZE); >> } >> >> //get list of conf files to download >> - for (Map<String, Object> file : >> snapPuller.getConfFilesToDownload()) { >> + for (Map<String, Object> file : >> fetcher.getConfFilesToDownload()) { >> filesToDownload.add((String) file.get(NAME)); >> bytesToDownload += (Long) file.get(SIZE); >> } >> @@ -737,18 +767,18 @@ public class ReplicationHandler extends >> >> long bytesDownloaded = 0; >> List<String> filesDownloaded = new ArrayList<>(); >> - for (Map<String, Object> file : >> snapPuller.getFilesDownloaded()) { >> + for (Map<String, Object> file : fetcher.getFilesDownloaded()) { >> filesDownloaded.add((String) file.get(NAME)); >> bytesDownloaded += (Long) file.get(SIZE); >> } >> >> //get list of conf files downloaded >> - for (Map<String, Object> file : >> snapPuller.getConfFilesDownloaded()) { >> + for (Map<String, Object> file : >> fetcher.getConfFilesDownloaded()) { >> filesDownloaded.add((String) file.get(NAME)); >> bytesDownloaded += (Long) file.get(SIZE); >> } >> >> - Map<String, Object> currentFile = snapPuller.getCurrentFile(); >> + Map<String, Object> currentFile = fetcher.getCurrentFile(); >> String currFile = null; >> long currFileSize = 0, currFileSizeDownloaded = 0; >> float percentDownloaded = 0; >> @@ -767,10 +797,10 @@ public class ReplicationHandler extends >> >> long estimatedTimeRemaining = 0; >> >> - if (snapPuller.getReplicationStartTime() > 0) { >> - slave.add("replicationStartTime", new >> Date(snapPuller.getReplicationStartTime()).toString()); >> + if (fetcher.getReplicationStartTime() > 0) { >> + slave.add("replicationStartTime", new >> Date(fetcher.getReplicationStartTime()).toString()); >> } >> - long elapsed = getTimeElapsed(snapPuller); >> + long elapsed = fetcher.getReplicationTimeElapsed(); >> slave.add("timeElapsed", String.valueOf(elapsed) + "s"); >> >> if (bytesDownloaded > 0) >> @@ -840,13 +870,6 @@ public class ReplicationHandler extends >> return replicateAfter; >> } >> >> - private long getTimeElapsed(SnapPuller snapPuller) { >> - long timeElapsed = 0; >> - if (snapPuller.getReplicationStartTime() > 0) >> - timeElapsed = TimeUnit.SECONDS.convert(System.currentTimeMillis() >> - snapPuller.getReplicationStartTime(), TimeUnit.MILLISECONDS); >> - return timeElapsed; >> - } >> - >> Properties loadReplicationProperties() { >> Directory dir = null; >> try { >> @@ -856,7 +879,7 @@ public class ReplicationHandler extends >> IndexInput input; >> try { >> input = dir.openInput( >> - SnapPuller.REPLICATION_PROPERTIES, IOContext.DEFAULT); >> + IndexFetcher.REPLICATION_PROPERTIES, IOContext.DEFAULT); >> } catch (FileNotFoundException | NoSuchFileException e) { >> return new Properties(); >> } >> @@ -887,6 +910,37 @@ public class ReplicationHandler extends >> // } >> // } >> >> + private void setupPolling(String intervalStr) { >> + pollIntervalStr = intervalStr; >> + pollInterval = readInterval(pollIntervalStr); >> + if (pollInterval == null || pollInterval <= 0) { >> + LOG.info(" No value set for 'pollInterval'. Timer Task not >> started."); >> + return; >> + } >> + >> + Runnable task = new Runnable() { >> + @Override >> + public void run() { >> + if (pollDisabled.get()) { >> + LOG.info("Poll disabled"); >> + return; >> + } >> + try { >> + LOG.debug("Polling for index modifications"); >> + executorStartTime = System.currentTimeMillis(); >> + doFetch(null, false); >> + } catch (Exception e) { >> + LOG.error("Exception in fetching index", e); >> + } >> + } >> + }; >> + executorService = Executors.newSingleThreadScheduledExecutor( >> + new DefaultSolrThreadFactory("indexFetcher")); >> + long initialDelay = pollInterval - (System.currentTimeMillis() % >> pollInterval); >> + executorService.scheduleAtFixedRate(task, initialDelay, >> pollInterval, TimeUnit.MILLISECONDS); >> + LOG.info("Poll Scheduled at an interval of " + pollInterval + "ms"); >> + } >> + >> @Override >> @SuppressWarnings("unchecked") >> public void inform(SolrCore core) { >> @@ -901,7 +955,8 @@ public class ReplicationHandler extends >> NamedList slave = (NamedList) initArgs.get("slave"); >> boolean enableSlave = isEnabled( slave ); >> if (enableSlave) { >> - tempSnapPuller = snapPuller = new SnapPuller(slave, this, core); >> + currentIndexFetcher = pollingIndexFetcher = new >> IndexFetcher(slave, this, core); >> + setupPolling((String) slave.get(POLL_INTERVAL)); >> isSlave = true; >> } >> NamedList master = (NamedList) initArgs.get("master"); >> @@ -1005,7 +1060,7 @@ public class ReplicationHandler extends >> } >> String reserve = (String) master.get(RESERVE); >> if (reserve != null && !reserve.trim().equals("")) { >> - reserveCommitDuration = SnapPuller.readInterval(reserve); >> + reserveCommitDuration = readInterval(reserve); >> } >> LOG.info("Commits will be reserved for " + reserveCommitDuration); >> isMaster = true; >> @@ -1029,11 +1084,20 @@ public class ReplicationHandler extends >> core.addCloseHook(new CloseHook() { >> @Override >> public void preClose(SolrCore core) { >> - if (snapPuller != null) { >> - snapPuller.destroy(); >> + try { >> + if (executorService != null) executorService.shutdown(); >> + } finally { >> + try { >> + if (pollingIndexFetcher != null) { >> + pollingIndexFetcher.destroy(); >> + } >> + } finally { >> + if (executorService != null) ExecutorUtil >> + .shutdownNowAndAwaitTermination(executorService); >> + } >> } >> - if (tempSnapPuller != null && tempSnapPuller != snapPuller) { >> - tempSnapPuller.destroy(); >> + if (currentIndexFetcher != null && currentIndexFetcher != >> pollingIndexFetcher) { >> + currentIndexFetcher.destroy(); >> } >> } >> >> @@ -1307,8 +1371,40 @@ public class ReplicationHandler extends >> releaseCommitPointAndExtendReserve(); >> } >> } >> - } >> - >> + } >> + >> + static Integer readInterval(String interval) { >> + if (interval == null) >> + return null; >> + int result = 0; >> + if (interval != null) { >> + Matcher m = INTERVAL_PATTERN.matcher(interval.trim()); >> + if (m.find()) { >> + String hr = m.group(1); >> + String min = m.group(2); >> + String sec = m.group(3); >> + result = 0; >> + try { >> + if (sec != null && sec.length() > 0) >> + result += Integer.parseInt(sec); >> + if (min != null && min.length() > 0) >> + result += (60 * Integer.parseInt(min)); >> + if (hr != null && hr.length() > 0) >> + result += (60 * 60 * Integer.parseInt(hr)); >> + result *= 1000; >> + } catch (NumberFormatException e) { >> + throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, >> + INTERVAL_ERR_MSG); >> + } >> + } else { >> + throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, >> + INTERVAL_ERR_MSG); >> + } >> + >> + } >> + return result; >> + } >> + >> public static final String MASTER_URL = "masterUrl"; >> >> public static final String STATUS = "status"; >> @@ -1369,6 +1465,12 @@ public class ReplicationHandler extends >> >> public static final String FILE_STREAM = "filestream"; >> >> + public static final String POLL_INTERVAL = "pollInterval"; >> + >> + public static final String INTERVAL_ERR_MSG = "The " + POLL_INTERVAL + >> " must be in this format 'HH:mm:ss'"; >> + >> + private static final Pattern INTERVAL_PATTERN = Pattern.compile("( >> \\d*?):(\\d*?):(\\d*)"); >> + >> public static final int PACKET_SZ = 1024 * 1024; // 1MB >> >> public static final String RESERVE = "commitReserveDuration"; >> >> Modified: >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapShooter.java >> URL: >> http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapShooter.java?rev=1664126&r1=1664125&r2=1664126&view=diff >> >> ============================================================================== >> --- >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapShooter.java >> (original) >> +++ >> lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapShooter.java >> Wed Mar 4 19:45:09 2015 >> @@ -144,7 +144,7 @@ public class SnapShooter { >> details.add("snapshotName", snapshotName); >> LOG.info("Done creating backup snapshot: " + (snapshotName == null >> ? "<not named>" : snapshotName)); >> } catch (Exception e) { >> - SnapPuller.delTree(snapShotDir); >> + IndexFetcher.delTree(snapShotDir); >> LOG.error("Exception while creating snapshot", e); >> details.add("snapShootException", e.getMessage()); >> } finally { >> @@ -170,7 +170,7 @@ public class SnapShooter { >> int i=1; >> for (OldBackupDirectory dir : dirs) { >> if (i++ > numberToKeep) { >> - SnapPuller.delTree(dir.dir); >> + IndexFetcher.delTree(dir.dir); >> } >> } >> } >> @@ -181,7 +181,7 @@ public class SnapShooter { >> NamedList<Object> details = new NamedList<>(); >> boolean isSuccess; >> File f = new File(snapDir, "snapshot." + snapshotName); >> - isSuccess = SnapPuller.delTree(f); >> + isSuccess = IndexFetcher.delTree(f); >> >> if(isSuccess) { >> details.add("status", "success"); >> >> Modified: lucene/dev/trunk/solr/core/src/test-files/log4j.properties >> URL: >> http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/log4j.properties?rev=1664126&r1=1664125&r2=1664126&view=diff >> >> ============================================================================== >> --- lucene/dev/trunk/solr/core/src/test-files/log4j.properties (original) >> +++ lucene/dev/trunk/solr/core/src/test-files/log4j.properties Wed Mar 4 >> 19:45:09 2015 >> @@ -25,7 +25,7 @@ log4j.logger.org.apache.solr.hadoop=INFO >> #log4j.logger.org.apache.solr.cloud.ChaosMonkey=DEBUG >> #log4j.logger.org.apache.solr.update.TransactionLog=DEBUG >> #log4j.logger.org.apache.solr.handler.ReplicationHandler=DEBUG >> -#log4j.logger.org.apache.solr.handler.SnapPuller=DEBUG >> +#log4j.logger.org.apache.solr.handler.IndexFetcher=DEBUG >> >> #log4j.logger.org.apache.solr.common.cloud.ClusterStateUtil=DEBUG >> >> #log4j.logger.org.apache.solr.cloud.OverseerAutoReplicaFailoverThread=DEBUG >> \ No newline at end of file >> >> Modified: >> lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java >> URL: >> http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java?rev=1664126&r1=1664125&r2=1664126&view=diff >> >> ============================================================================== >> --- >> lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java >> (original) >> +++ >> lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java >> Wed Mar 4 19:45:09 2015 >> @@ -36,7 +36,7 @@ import org.apache.lucene.store.Directory >> import org.apache.lucene.util.IOUtils; >> import org.apache.solr.common.SolrException; >> import org.apache.solr.common.params.CommonParams; >> -import org.apache.solr.handler.SnapPuller; >> +import org.apache.solr.handler.IndexFetcher; >> import org.apache.solr.util.AbstractSolrTestCase; >> import org.apache.solr.util.TestHarness; >> import org.junit.AfterClass; >> @@ -93,7 +93,7 @@ public class TestArbitraryIndexDir exten >> assertU(adoc("id", String.valueOf(1), >> "name", "name"+String.valueOf(1))); >> //create a new index dir and index.properties file >> - File idxprops = new File(h.getCore().getDataDir() + >> SnapPuller.INDEX_PROPERTIES); >> + File idxprops = new File(h.getCore().getDataDir() + >> IndexFetcher.INDEX_PROPERTIES); >> Properties p = new Properties(); >> File newDir = new File(h.getCore().getDataDir() + "index_temp"); >> newDir.mkdirs(); >> @@ -104,7 +104,7 @@ public class TestArbitraryIndexDir exten >> p.store(os, "index properties"); >> } catch (Exception e) { >> throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, >> - "Unable to write " + SnapPuller.INDEX_PROPERTIES, e); >> + "Unable to write " + IndexFetcher.INDEX_PROPERTIES, e); >> } finally { >> IOUtils.closeWhileHandlingException(os); >> } >> >> Modified: >> lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java >> URL: >> http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java?rev=1664126&r1=1664125&r2=1664126&view=diff >> >> ============================================================================== >> --- >> lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java >> (original) >> +++ >> lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java >> Wed Mar 4 19:45:09 2015 >> @@ -172,17 +172,13 @@ public class TestReplicationHandler exte >> } >> >> NamedList query(String query, SolrClient s) throws SolrServerException, >> IOException { >> - NamedList res = new SimpleOrderedMap(); >> ModifiableSolrParams params = new ModifiableSolrParams(); >> >> params.add("q", query); >> params.add("sort","id desc"); >> >> QueryResponse qres = s.query(params); >> - >> - res = qres.getResponse(); >> - >> - return res; >> + return qres.getResponse(); >> } >> >> /** will sleep up to 30 seconds, looking for expectedDocCount */ >> @@ -304,7 +300,7 @@ public class TestReplicationHandler exte >> assertNotNull("slave has slave section", >> details.get("slave")); >> // SOLR-2677: assert not false negatives >> - Object timesFailed = >> ((NamedList)details.get("slave")).get(SnapPuller.TIMES_FAILED); >> + Object timesFailed = >> ((NamedList)details.get("slave")).get(IndexFetcher.TIMES_FAILED); >> assertEquals("slave has fetch error count", >> null, timesFailed); >> >> @@ -513,7 +509,7 @@ public class TestReplicationHandler exte >> slaveClient.close(); >> slaveClient = createNewSolrClient(slaveJetty.getLocalPort()); >> >> - //add a doc with new field and commit on master to trigger snappull >> from slave. >> + //add a doc with new field and commit on master to trigger index >> fetch from slave. >> index(masterClient, "id", "2000", "name", "name = " + 2000, >> "newname", "newname = " + 2000); >> masterClient.commit(); >> >> @@ -581,7 +577,7 @@ public class TestReplicationHandler exte >> } >> >> @Test >> - public void doTestSnapPullWithMasterUrl() throws Exception { >> + public void doTestIndexFetchWithMasterUrl() throws Exception { >> //change solrconfig on slave >> //this has no entry for pollinginterval >> slave.copyConfigFile(CONF_DIR + "solrconfig-slave1.xml", >> "solrconfig.xml"); >> @@ -608,7 +604,7 @@ public class TestReplicationHandler exte >> SolrDocumentList masterQueryResult = (SolrDocumentList) >> masterQueryRsp.get("response"); >> assertEquals(nDocs, masterQueryResult.getNumFound()); >> >> - // snappull >> + // index fetch >> String masterUrl = buildUrl(slaveJetty.getLocalPort()) + "/" + >> DEFAULT_TEST_CORENAME + "/replication?command=fetchindex&masterUrl="; >> masterUrl += buildUrl(masterJetty.getLocalPort()) + "/" + >> DEFAULT_TEST_CORENAME + "/replication"; >> URL url = new URL(masterUrl); >> @@ -623,7 +619,7 @@ public class TestReplicationHandler exte >> String cmp = BaseDistributedSearchTestCase.compare(masterQueryResult, >> slaveQueryResult, 0, null); >> assertEquals(null, cmp); >> >> - // snappull from the slave to the master >> + // index fetch from the slave to the master >> >> for (int i = nDocs; i < nDocs + 3; i++) >> index(slaveClient, "id", i, "name", "name = " + i); >> @@ -765,7 +761,7 @@ public class TestReplicationHandler exte >> .get("response"); >> assertEquals(totalDocs, masterQueryResult.getNumFound()); >> >> - // snappull >> + // index fetch >> Date slaveCoreStart = watchCoreStartAt(slaveClient, 30*1000, >> null); >> pullFromMasterToSlave(); >> if (confCoreReload) { >> @@ -1219,7 +1215,7 @@ public class TestReplicationHandler exte >> // record collection1's start time on slave >> final Date slaveStartTime = watchCoreStartAt(slaveClient, 30*1000, >> null); >> >> - //add a doc with new field and commit on master to trigger snappull >> from slave. >> + //add a doc with new field and commit on master to trigger index >> fetch from slave. >> index(masterClient, "id", "2000", "name", "name = " + 2000, >> "newname", "n2000"); >> masterClient.commit(); >> rQuery(1, "newname:n2000", masterClient); // sanity check >> >> Modified: >> lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java >> URL: >> http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java?rev=1664126&r1=1664125&r2=1664126&view=diff >> >> ============================================================================== >> --- >> lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java >> (original) >> +++ >> lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java >> Wed Mar 4 19:45:09 2015 >> @@ -69,7 +69,7 @@ public class MockDirectoryFactory extend >> // already been created. >> mockDirWrapper.setPreventDoubleWrite(false); >> >> - // snappuller & co don't seem ready for this: >> + // IndexFetcher & co don't seem ready for this: >> mockDirWrapper.setEnableVirusScanner(false); >> >> if (allowReadingFilesStillOpenForWrite) { >> >> >> >> > > > -- > Not sent from my iPhone or my Blackberry or anyone else's >
