Commit Graph
291 Commits
Author SHA1 Message Date
gojomo c170390c0d Fix selftest failures where empty 'profile' directory may not exist (eg git)
* SelfTestBase
    only copy profile directory if it exists
2010-11-16 00:58:13 +00:00
gojomo cb7f96682b Remove synchronization on frontier methods; rely on safe queues, synchronization-per-WorkQueue instead
* AbstractFrontier
    remove inbound/outbound queues; simplify managerThread
    perform findEligible/schedule/receive/finish immediately
* WorkQueueFrontier
    eliminate holdQueues setting 
    synchronize sendToQueue on target queue
    make findEligibleUri reentrant; rely on [Blocking|Stored]Queue thread-safety
    make arriving at front of ready trigger for 'active'/budget-session
    simplify inactiveQueues management
    simplify waking from overflow
* WorkQueue
    redefine 'active' as in-budget-session
    rename 'held' as 'managed'
    synchronize major methods, relying on allQueues cache that operations on same intended queue use identical instance
    split over-budget test to isOverSessionBudget and isOverTotalBudget
    have toString show classKey
* BdbFrontier
    checkpoint fixes: remember nextOrdinal, rotate frontier-recover log, reset queues on recovery
    consistencyCheck method for probing state during stress tests
2010-11-15 22:56:03 +00:00
gojomo c8074bdbf3 Improve ability to force-terminate crawls
* RecordingInputStream.java
    check for interrupt on each socket-timeout
* CrawlController.java
    on second requestCrawlStop, interrupt threads via ToePool.cleanup
* ToePool.java
   adjust for new earlier/repeated cleanup
* ToeThread.java
   better warnings/recovery on forced-interrupts
2010-11-15 22:26:36 +00:00
gojomo d4f5004b9c Lessen synchronization bottleneck on crawl.log
* UriProcessingFormatter.java
    allow pre-caching of a specific LogRecord's formatted version, outside the synchronized publish()
* GenerationFileHandler.java
    force a format before publish(), to benefit above (a small hit in other cases where it's redundant)
2010-11-15 21:01:37 +00:00
gojomo 1501e1ddd1 * ScriptResource.java
flush rather than close, avoiding console dump
2010-11-15 20:59:45 +00:00
gojomo 6a2716ce00 Reduce synchronization bottlenecks
* FrontierJournal, CrawlerJournal
    do barest minimum inside 'synchronized' method
2010-11-12 19:37:52 +00:00
gojomo 301b943f03 Consolidate ModuleAttributeConstants into CoreAttributeConstants
* (many)
    distinction between these two constant-collecting classes was fuzzy (to the point that they already referred to each other), and they were both in same subproject/package already as well; so, merged constants into the larger, older class
2010-11-09 23:47:37 +00:00
gojomo 6452013af7 Frontier throughput experiments & fixed, continued
* WorkQueueFrontier
    (findEligibleURI) avoid outbound.capacity-sensitive activation, which under a race created by recent changes led to infinite recursion here
* AbstractFrontier
    (next) when nothing is immediately ready, try adding one-at-a-time to outbound, rather than fillOutbound()
2010-11-09 23:32:12 +00:00
gojomo ad57749dea * WorkQueueFrontier.java
debugging output for reported findEligibleURI deep-recursion
2010-11-08 23:45:19 +00:00
gojomo b5eb4f3c1e * AbstractFrontier
reduce size of inbound now that many threads will opportunistically clear it
2010-11-08 23:44:43 +00:00
gojomo 3dc5f04c06 Avoid deadlock on terminate() of already-paused/stopping crawl
* AbstractFrontier
    (managementTasks) don't synchronize around possibly-blocking take(), only around process()
2010-11-08 21:06:58 +00:00
gojomo 3be9941f76 Resolve deadlock seen after latest changes
* AbstractFrontier
    (drainInbound) don't assume current thread will be able to take() full batch; poll() and exit early if other threads have drained queue first
2010-11-08 18:54:03 +00:00
gojomo f12e940edd Discard 'CredentialAvatar' -- no longer needed with Spring settings -- use Credential instances directly 2010-11-06 03:45:00 +00:00
gojomo c7398ce463 Experiment to work-around Frontier.managerThread bottleneck
* AbstractFrontier, WorkQueueFrontier
    synchronize around all InEvent/findEligibleURI actions, so that drainInbound and fillOutbound may be called outside managerThread
    whenever a ToeThread would block on enqueue() or next(), try the appropriate catch-up method before blocking
    remove assertions no longer true with activity happening outside managerThread
2010-11-06 02:14:39 +00:00
gojomo 0627a67dce Minimize transient garbage volume by optimized serialization based on the 'Kryo' library
* AutoKryo
    extension of Kryo to allow classes to control their own registration, trigger registration of associated classes, and deserialize classes without no-arg constructors
* KryoBinding
    binding for use with BDB that uses AutoKryo serialization for a 2X-4X reduction in byte[] size
* UURI
    improved serialization via Externalizable and Kryo's CustomSerialization methods
* BdbModule
    discard deprecated CachedBDBMap option
    (getObjectCache) extend with both declaredClass and valueClass (for when map values are specializations of the declared type, as with frontier.allQueues)
    adjust type declarations
* ObjectIdentityBdbCache
    use KryoBinding rather than SerialBinding
* CachedBdbMapTest
    discarded
* BdbFrontier, BdbServerCache, StatisticsTracker
    adjust type declarations, objectCache creation
* BdbMultipleWorkQueues
    use KryoBinding rather than (Recycling)SerialBinding
* BdbWorkQueue, CrawlServer, CrawlHost, CrawlURI
    add autoregister support
* LinkContext
    public for kryo registration
2010-11-05 23:23:58 +00:00
gojomo f4d69b37da Minimize transient garbage creation identified by allocation profiling
* UURIFactory, canonicalize/**, PathologicalPathDecideRule, ExtractorHTML
    use recycled matchers via TextUtils
* CrawlURI, KeyedProperties, OverlayContext, SheetOverlaysManager
    use ArrayList and indexed access rather than LinkedList and iterator instances
2010-11-05 21:34:53 +00:00
nlevitt acedca1788 Part of [HER-1836] let more than one extractor run on a single url - new
setting "independentExtractors" - when enabled, extractors run regardless of
whether other extractors have run
* profile-crawler-beans.cxml, AbstractFrontier.java, ExtractorParameters.java,
  Extractor.java
    new setting independentExtractors
* ContentExtractor.java
    shouldProcess() - respect independentExtractors
2010-10-26 23:49:42 +00:00
gojomo d72e6cd1d0 [HER-1830] H3: improve sheet examples in default configuration CXML
* **/profile-crawler-beans.xml
    only 1 example SurPrefixesSheetAssociation
2010-10-01 00:16:23 +00:00
gojomo 13d8c4f851 [HER-1830] H3: improve sheet examples in default configuration CXML
* **/profile-crawler-beans.xml
    example SurPrefixesSheetAssociation
2010-09-30 23:01:25 +00:00
gojomo a757140cf6 [HER-1831] change version numbering convention to be less confusing
* **/pom.xml
    change 3.1.1-SNAPSHOT to 3.0.1-SNAPSHOT
2010-09-30 19:48:35 +00:00
gojomo f1cd7dd527 [HER-1827] Have Frontier report include top X longest queues
* WorkQueueFrontier.java
    improve effective precision of top-n-queues by also updating on dequeues
2010-09-28 22:42:22 +00:00
gojomo 8f28d493a2 [HER-1827] Have Frontier report include top X longest queues
* Histotable.java
    expose static method useful for frequency-reporting
* TopNSet.java, TopNSet.java
    improve handling of case where updates may decrease frequency counts
    add convenience methods for common needs
* WorkQueueFrontier.java
    replace single longestActiveQueue with largestQueues TopNSet, of configurable size
    make max-queues-to-report-per-category configurable
2010-09-28 22:12:28 +00:00
gojomo de32bdb053 [HER-1825] H3: make default base queue precedence a more useful default
* BaseQueuePrecedencePolicy.java
    make default '3' (leaving space for 2 'higher') rather than '1'
2010-09-24 04:34:20 +00:00
gojomo 7909954b8f [HER-1823] H3: adding SheetAssociations mid-crawl won't affect already queued CrawlURIs (sheet liveness)
* SheetsOverlayManager.java
    (applyOverlaysTo) clear previous info so redundant sheets don't accrete
2010-09-21 11:07:33 +00:00
gojomo 1ce23ecbcd [HER-747] Ensure 'retired' status for queues is operator-controllable
[HER-1768] Changing queue totalBudget not retiring queue as expected
* CrawlURI.java
    (includesRetireDirective) internalize to CrawlURI
* AbstractFrontier.java
    allow re-enqueuing of untried URI with retire-driective
    clean up terminology/method-names
* WorkQueue.java, WorkQueueFrontier.java, BdbFrontier.java
    adjust budget/sessionBalance handling to always count up, always consult latest values, always refresh values from latest URI
    (processFinish) reorganize to reduce redundancy
* DispositionProcessor.java
    offer forceRetire setting
* QuotaEnforcer.java
    set failed-status *or* forceRetire, not both
[HER-1823] H3: adding SheetAssociations mid-crawl won't affect already queued CrawlURIs (sheet liveness) 
* SheetsOverlayManager.java
    (applyOverlaysTo) rename, unify, reapply whenever called to ensure liveness
* CandidatesProcessor.java
    adjust to rename
2010-09-21 10:55:07 +00:00
gojomo c701cd391a [HER-1822] H3: bean browser in non-paused crawl sometimes raises exceptions, doesn't work
* JobRelatedResource.java
    add more property names to blacklist
    route all relevant requests through new utilitiy getPropertyDescriptors method that patches instances as necessary to suppress problems
2010-09-21 10:28:29 +00:00
gojomo 1f08c114bb * ToeThread.java
tighten INFO logging to FINE
2010-09-10 21:12:48 +00:00
gojomo 4166316113 * AbstractFrontier.java
remove Serializable & related transient declarations -- serialization no longer used for checkpointing nor advisable
2010-09-10 01:00:19 +00:00
gojomo d6a4d158b0 [HER-1803] H3: make it easier to change robots settings
* RobotsPolicy.java
    simplified unification of RobotsHonoring and RobotsExclusion policy classes; subclasses specialize
* ObeyRobotsPolicy.java
    classic obey-robots-as-declared policy
* IgnoreRobotsPolicy.java
    ignore declared robots policy
* CustomRobotsPolicy.java
    follow custom-crafted policy in robots.txt format
* MostFavoredRobotsPolicy.java
    follow the most-permissive policy available to a set of user-agents; optionally adopt ('masquerade') the user-agent whose rules are chosen
* RobotsExclusionPolicy.java, RobotsHonoringPolicy.java
    deleted
* CrawlMetadata.java
    use new string robotsPolicyName as main determinant of policy
    maintain map of available policies ('obey','ignore', and any the operator added)
* CrawlServer.java
    retain Robotstxt instance rather than customized RobotsExclusionPolicy
* PreconditionEnforcer.java
    use full CrawlMetadata rather than just UserAgentProvider subset
    consult RobotsPolicy looked up through CrawlMetadata for allow/disallow decision
* DispositionProcessor.java
    update CrawlServer with Robotstxt only
    consult Robotstxt for crawl-delay
* profile-crawler-beans.cxml (*2), migrate-template-crawler-beans.cxml, selftest-crawler-beans.cxml
    remove old declarations/examples; add new
* ExtractorHTML.java, JerichoExtractorHTML.java
    consult RobotsPolicy.obeyMetaRobotsNofollow for NOFOLLOW
* Robotstxt.java
    new constructors for new use patterns
* **/*Test.java
    update/remove to match new use patterns
2010-09-10 00:27:20 +00:00
gojomo bce841be5f * JobResource.java
improve message for checkpoint-not-made flash
2010-09-09 23:21:28 +00:00
gojomo 3861c8caa4 * BdbMultipleWorkQueues.java
improve detail of logging of error that's been seen in some checkpoint-resume situations
2010-09-09 23:20:47 +00:00
gojomo de551ced58 [HER-1801] H3: Unreleased lock causes deadlock when checkpointing
* Frontier.java
    add beginDisposition(), endDisposition() methods
* AbstractFrontier.java
    implement beginDisposition(), endDisposition() methods to maintain dispositions-in-progress lock
* BdbFrontier.java
    acquire exclusive dispositionInProgressLock before allowing checkpoint to begin; release at completion of checkpoint
* ToeThread.java
    call beginDisposition before dispositionChain/finished(); call endDisposition after finished() and on exceptions
* DispositionChain.java
    shed all prior relation to locking/checkpointing
2010-09-03 02:14:41 +00:00
gojomo d12d078a07 [HER-1800] H3: Incomplete checkpoint listed in combo box
* Checkpoint.java
    remove previous attempt to use Lifecycle to catch error
* Checkpointable.java
    @Autowired(required=false) annotation for setRecoveryCheckpoint
* CheckpointService.java
    HasValidator implementation for post-build validity check; also check at launch (probably redundant)
* CheckpointValidator.java
    ensure validity stamp exists on any present Checkpoint
2010-09-03 01:03:01 +00:00
gojomo 99ce106a9d * CrawlJob.java
tighten logging
2010-09-03 00:30:33 +00:00
gojomo bc698c09fc [HER-1480] URIs logged (as -6 or -7) that should never be scheduled
* LaxURI.java
    increase tolerance with regard to path-segments
* UURIFactory.java
    allow digits in scheme regex
    discard old supported-schemes code
* UURIFactoryTest.java
    tests for roundtrip serialization of problematic hostlike-scheme and bars-in-path
* CrawlerLoggerModule.java
    discard special-casing of URI scheme errors
* SchemeNotInSetDecideRule.java
    rule to apply to URIs of unknown schemes; by default REJECTs those not usually handled by Heritrix
* **/profile-crawler-beans.cxml
    add REJECT SchemeNotInSetDecideRule
2010-09-03 00:24:13 +00:00
gojomo 0347269785 [HER-1817] cleanup logging.properties / WARNING+ for most 3rd party; SEVERE+ for HttpClient; INFO for project classes
* logging.properties
    streamline to bare essentials; allow INFO for org.archive classes
* GenericReplayCharSequence.java, BdbUriUniqFilter.java
    demote some INFO logging to FINE
2010-09-03 00:00:46 +00:00
gojomo 9bfa8fc1db * JobResource.java
remove stray whitespace
2010-09-02 23:56:52 +00:00
gojomo ad8941fa23 1-liner fixing argument display for usage help argument echo
* Heritrix.java
    (usage) StringUtils.join the String[] args
    commit in honor of Travis, who suggested fix
2010-08-27 00:56:42 +00:00
gojomo 2f78980e5d [HER-1814] remove dependency on apache commons-pool/GenericObjectPool
* SelfTestBase.java
    don't try to UURIify 'fieldesc:' ad-hoc URIs
2010-08-26 21:56:50 +00:00
gojomo 47b28f92f8 fix class reference (and build) 2010-08-20 00:47:55 +00:00
gojomo b388479d32 [HER-1727] (W)ARC filename uniqueness guarantees: adminport option, process_id option(?), JVM-global-repeat-suppression
* Heritrix.java
    make heritrix.hostname, heritrix.pid, heritrix.port available as global properties
* PropertyUtils.java, PropertyUtilsTest.java
    utility methods to interpolate string values from one or several supplied Properties instances
* ArchiveUtils.java
    utility methods to give timestamps guaranteed larger/different than any previously-issued timestamp

* WriterPoolSettings.java, WriterPool.java, ARCWriterPool.java, WARCWriterPool.java, ARCWriterPoolTest.java
    improve field names, change 'suffix' to more general 'template'
* WriterPoolMember.java
    replace 'suffix' with 'template' which is interpolated when specific name is needed
    set default template to pattern extremely unlikely to generate duplicate filenames
    change default prefix to 'WEB'
    centralize creation of new basenames into generateNewBasename() method, which internalizes timetamp/serialNo minting and interpolation
* WriterPoolProcessor.java, ARCWriterProcessor.java, WARCWriterProcessor.java
    serve as own WriterPoolSettings instance
    replace 'suffix' with 'template' 
    
* ARCWriter.java
    accept (but truncate) 17-digit timestamps at creation
* DefaultWriterPoolSettings.java, TimestampSerialNo.java
    delete as superfluous
2010-08-20 00:21:43 +00:00
kristinn_sig c410c90b76 Implementation of [HER-1811] Replace the LowDiskPauseProcessor with something that works
* profile-crawler-beans.cxml
    Added a commented-out configuration for new DiskSpaceMonitor
* DiskSpaceMonitor.java
    Implements the required functionality
* package-info.java
    Description of new package for monitoring utilities
* LowDiskPauseProcessor.java
    Now marked as deprecated
2010-08-19 10:47:22 +00:00
szznax dd4bf9a910 correct canonicalizationPolicy bean template per archive-crawler msg 6649
* profile-crawler-beans.cxml, migrate-template-crawler-beans.cxml
    surround canonicalizationPolicy list with property element
2010-08-09 21:22:50 +00:00
gojomo a729c041e1 * URIAuthorityBasedQueueAssignmentPolicy.java
* SurtAuthorityQueueAssignmentPolicy.java
* HostnameQueueAssignmentPolicy.java
    correct inadvertent 'default' access rather than 'protected' allowing overriding
2010-08-04 20:26:22 +00:00
gojomo be954bc9b9 [HER-1804] H3: avoid echoing admin credentials to (possibly world-readable) _out log
* Heritrix.java
    replace echo of exact login/pw with note about whether it came from cmd-line or @file
2010-07-22 22:55:56 +00:00
gojomo 5f76c7ef56 [HER-1800] H3: Incomplete checkpoint listed in combo box
* CheckpointService.java
    use static method on Checkpoint for validity check
* Checkpoint.java 
    throw early-startup exception if attempting resumption of invalid checkpoint
2010-07-13 02:59:47 +00:00
gojomo 899fb6f404 [HER-1800] H3: Incomplete checkpoint listed in combo box
* CheckpointService.java
    (getAvailableCheckpointDirectories) return List, filtered to leave out directories without a 'valid' stamp; log WARNING to _out so that the attentive operator can manually clean-up/investigate
2010-07-13 01:19:10 +00:00
gojomo b4485b05b1 * EngineResource.java
show proper separator in path prompt
2010-07-09 21:55:13 +00:00
gojomo cfc4b347a6 [HER-1796] H3: interval rescheduling becomes erratic after URI rescheduled more than maxRetries times
* CrawlURI.java
    improve comments for fetchAttempts methods
    (resetForRescheduling) added to clear per-scheduling state
* WorkQueueFrontier.java
    call resetForRescheduling just before scheduling-at-specific-time
* FrontierJournal.java, AbstractFrontier.java
    renamings: prefer 'reenqueue' instead of 'reschedule' for describing simple (non-timed) retries
2010-07-09 01:45:26 +00:00
gojomo f75f95648a [HER-1795] H3: Wrong schemaLocation in .cxml
* **/*crawler-beans.cxml
    update all 2.0 spring schema refs to 2.5
2010-07-02 00:58:23 +00:00