Commit Graph
36 Commits
Author SHA1 Message Date
gojomo 966646871c [HER-1727] (W)ARC filename uniqueness guarantees: adminport option, process_id option(?), JVM-global-repeat-suppression
* ArchiveUtilsTest.java
    tests for new HER-1727 guaranteed-no-repeat-timestamp functionality
2010-09-20 13:51:13 +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 8d1083922d [HER-1814] remove dependency on apache commons-pool/GenericObjectPool
* .classpath, pom.xml, org/apache/commons/pool/impl/*
    remove references to and patched classes based on commons-pool
* WriterPool.java
    move instance creation/round-robin-pool/dispose into this class
    close (rather then recycle) extra writers when crawl slows (via tracking time of last need/rollover)
* WriterPoolMember.java
    add isOversize() for external check of ready-to-rollover file
    avoid rollover before every record (so that set of related WARC records aren't split between files)
* ARCWriterPool.java, WARCWriterPool.java
    remove BasePoolableObjectFactory reference, implement class-appropriate makeWriter()
* ARCWriterPoolTest.java
    adjust for new never-timeout behavior
* ARCWriterPoolProcessor.java WARCWriterPoolProcessor.java
    adjust constructor calls
* WriterPoolProcessor.java
    replace poolMaxWaitMs (which caused eventual complete timeout from waiting for writer) with maxWaitForIdleMs, a much smaller value which only controls how long a thread waits for an reusable writer before considering creating a new one. (If creation isn't allowed, threads will now wait indefinitely for a writer to become available.)
2010-08-25 23:25:26 +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
gojomo 4c1a4f2e12 remove unneeded import 2010-06-15 21:34:57 +00:00
gojomo 3c8e72a20e * BloomFilterTest.java
disable by renaming ('xest') those tests taking >15mins each
2010-06-15 21:33:34 +00:00
gojomo 6be649b286 [HER-1783] BloomFilter64bit bit-length bug prevents full bitfield from being used; premature saturation
* BloomFilter64bit.java
    include the split-to-subarrays (for larger bitfields) and round-up-to-power-of-2 (for performance) options previously in largely-redundant classes
    fit a number of problems with int/long overflow and bitwise ops
    add methods for reporting/testing
* BloomFilter.java
    add methods for reporting/testing
* BloomFilterTest.java, BloomFilter64bitTest.java
    more extensive tests, including two lengthy tests of default/oversized blooms usually disabled by renaming
* BloomFilter32bit.java, BloomFilter32bitSplit.java, BloomFilter32bp2.java, BloomFilter32bp2Split.java
    deleted as buggy or redundant
* BenchmarkBlooms.java
    move to test source dir
* BloomUriUniqFilter.java
    change to accept filter instance (rather than parameters) for added configuration flexibility
    fix comments
* BloomUriUniqFilterTest.java
    supply filter not paramters
2010-06-15 21:30:34 +00:00
gojomo f9a3c2344c * BloomFilterTest.java
explicit deferenced bloom instance to avoid OOME
2010-06-08 03:38:56 +00:00
gojomo e9a11e56c6 HER-1783 BloomFilter64bit bit-length bug prevents full bitfield from being used; premature saturation
* BloomFilter64bit.java
    fix long arithmetic calculating bit-length m in constructor
    slight optimization of add()
* BloomFilterTest.java
    abstract superclass for bloom impl class tests
* BloomFilter64bitTest.java
    sanity check that set bits, after a handful of adds into default-sized filter, occupy top and bottom 20% of range (which would have caught this bug earlier)
2010-06-08 02:39:35 +00:00
gojomo 72fb1c55bd Move TLD list to resource file for easier drop-in updating
* ArchiveUtils.java
    read TLDs from tlds-alpha-by-domain.txt
* ArchiveUtilsTest.java
    verify TLDs read
* tlds-alpha-by-domain.txt
    from http://data.iana.org/TLD/tlds-alpha-by-domain.txt
2010-04-22 01:05:23 +00:00
gojomo 9e12e4abe5 test/deprecation cleanup
* CachedBdbMap.java
   @deprecated
* BdbModule.java
   note (unused) 'CBM' option is deprecated
* ObjectIdentityBdbCache.java
   tighten logging to FINE
* ObjectIdentityBdbCacheTest.java
   fix test that was only trying to log, rather than fail, problems
2010-04-13 02:15:53 +00:00
gojomo 1698412130 HER-1450 Reading at EOF using read(byte[]) causes position pointer to decrement.
* ARCWriterTest.java
    one more test to ensure the problem with read(void) was exercised/fixed
2010-04-09 21:25:26 +00:00
szznax cc6fb841d9 part of fix for [HER-1450] Reading at EOF using read(byte[]) causes position pointer to decrement.
* ArchiveRecord.java
    do not decrement position after EOR, port from H1
* ARCWriterTest.java
    added testArchiveRecordEORConsistent(), testArchiveRecordMarkSupport()
        port from H1
2010-04-09 18:25:16 +00:00
gojomo ed2061560e Improve Maven build robustness
* UURIFactoryTest.java
    specify stirng literal with escape-encoding, rather than as raw UTF-8
* **/pom.xml
    include 'project.build.sourceEncoding' property to suppress platform-encoding warnings
    (unfortunately, neither this nor similar 'maven.compile.encoding' property actually casues maven build to interpret Java source as UTF-8)
2009-12-02 01:34:40 +00:00
gojomo eb9bf5a8e2 BDBJE updates, refactoring
* commons/pom.xml, .classpath
    update to BDB-JE 4.0.71
* BdbModule.java
    (getStoredQueue) added
    (getStoredMap) made more general
    (openDatabase) all databases now 'managed'
* TempStoredSortedMap.java -> DisposableStoredSortedMap.java
    renamed
* StatisticsTracker.java, **Report.java
    use new name
* StoredQueue.java, StoredQueueTest.java
    move to org.archive.bdb package
* BdbMultipleWorkQueues.java, PrefixFinderTest.java
    update for BDB-JE 4 changes
* BdbFrontier.java
    use getStoredQueue 
    drop unneeded custom serialization support
* WorkQueueFrontier.java
    drop unneeded custom serialization support
2009-11-23 04:41:32 +00:00
gojomo daab317c94 [HER-1546] Springify(5): Update checkpointing to work smoothly with spring-configured crawls
processor-related bean checkpoint support:
* Checkpoint.java
    move to commons for proper dependency graph
* (others) 
    recognize above
2009-11-20 01:10:32 +00:00
gojomo 8591002573 [HER-1546] Springify(5): Update checkpointing to work smoothly with spring-configured crawls
* BdbModule.java
    implement Checkpointable; save/restore consistent sets of jdb log files
* BdbModuleTest.java
    testDoCheckpoint
2009-11-20 00:45:07 +00:00
gojomo e42e2ed7f6 Cleanup/consolidation/expansion of *Utils classes
* IoUtils.java
    remove class that confusingly-overlaps with commons IOUtils; move remaining methods to ArchiveUtils or archive's FileUtils
* ArchiveUtils.java, FileUtils.java
    receive relocated methods; eliminated deprecated or unused methods
* JSONUtils.java
    new class to collect common JSON actions
* Iteratorable.java
    wrap Iterator as Iterable for foreach usage
* (many)
    update to use alternate utils methods
2009-11-19 22:39:53 +00:00
gojomo 0497efbb32 [HER-1561] update license to Apache License 2.0
* (many)
    update license boilerplate
* (few)
    delete no-longer used classes
2009-11-10 21:03:27 +00:00
gojomo c05044d51b Eliminate double-database close log messages
* BdbModule.java
   split openDatabase() to openManagedDatabase() (auto-closed) and plain openDatabase() (caller-closes)
   set TempStoredSortedMap to use unmanaged openDatabase
* (others)
   use openManagedDatabase()
2009-10-04 05:06:14 +00:00
gojomo 1951930842 Improve test robustness in face of unpredictable GC
* ObjectIdentityBdbCache.java
   (pageOutStaleEntries) package-protection for unit-test visibility
* ObjectIdentityBdbCacheTest.java
   explicit pageOutStaleEntries, better assert-fail message
2009-09-29 20:20:14 +00:00
gojomo 5a0fe30366 Quiet JUnite test issues
* BdbModuleTest.java, CachedBdbMapTest.java
    use putIfAbsent() in preference to put() (which logs warning)
* BdbModule.java
    register big-cache DBs in implementation-specific methods, so always auto-closed on env close
2009-09-29 19:22:23 +00:00
gojomo 7521375128 [HER-1677] threads stuck in CachedBdbMap.get/_getMem
alternate simplified implementation of our object-cache need
* ObjectIdentityCache.java
    new interface, far less than (Concurrent)Map, for big seems-like-in-memory object-cache
* Supplier.java
    trivial interface for deferred-provision of new instance
* CachedBdbMap.java
    implement ObjectIdentityCache, mainly via getOrUse()
* ObjectIdentityMemCache.java
    trivial ConcurrentHashMap-based all-in-memory ObjectIdentityCache implementation
* ObjectIdentityBdbCache.java
    BDB-backed ObjectIdentityCache implementation, carved from CachedBdbMap
* BdbModule.java
    refactor utility methods to offer CachedBdbMap or ObjectIdentityBdbCache instances, via source toggle
* EnhancedEnvironment.java
    convenience test-environment method
* (others)
    update to use ObjectIdentityCache/ObjectIdentityMemCache in place of ConcurrentMap/ConcurrentHashMap
2009-09-25 21:18:14 +00:00
gojomo e7ab73dd5d [HER-1677] threads stuck in CachedBdbMap.get/_getMem
alternate simplified implementation of our object-cache need
* ObjectIdentityCache.java
    new interface, far less than (Concurrent)Map, for big seems-like-in-memory object-cache
* Supplier.java
    trivial interface for deferred-provision of new instance
* CachedBdbMap.java
    implement ObjectIdentityCache, mainly via getOrUse()
* ObjectIdentityMemCache.java
    trivial ConcurrentHashMap-based all-in-memory ObjectIdentityCache implementation
* ObjectIdentityBdbCache.java
    BDB-backed ObjectIdentityCache implementation, carved from CachedBdbMap
* BdbModule.java
    refactor utility methods to offer CachedBdbMap or ObjectIdentityBdbCache instances, via source toggle
* EnhancedEnvironment.java
    convenience test-environment method
* (others)
    update to use ObjectIdentityCache/ObjectIdentityMemCache in place of ConcurrentMap/ConcurrentHashMap
2009-09-25 21:16:53 +00:00
gojomo 8d09ee38ae CachedBdbMap cleanup 2009-08-11 02:07:22 +00:00
gojomo 0ebac2f115 * CachedBdbMapTest.java
more timing/heap voodoo for test robustness
2009-08-06 20:11:04 +00:00
gojomo 272ae19961 Cleanup
* CachedBdbMap.java
    remove debug output
* TestUtils.java
    add info logging
* CachedBdbMapTest.java
    make more robust against prior heap usage, different platforms
2009-08-04 06:55:31 +00:00
gojomo c196a1de77 [HER-1658] CachedBdbMaps not expunging as expected (especially StatisticsTracker.processedSeedsRecords)
* CachedBdbMap.java
    do expunge on put(), replace()
    add low-memory-sensitive 'canary' to force expunge even if otherwise untriggered
* CachedBdbMapTest.java
    add test of idle expunge in low-memory conditions
* CrawlURI.java
    (getURI) direct access to String URI (don't reuse toString() functionally)
* SeedRecord.java
    support for updating record with later/repeat report
* StatisticsTracker.java
    remove put()s for processedSeedRecords, hostsLastFinished
* BdbFrontier.java
    (getQueueFor) remove put, do in concurrent-compliant manner
2009-08-04 00:06:22 +00:00
szznax e8a8639277 initial checkin: this class is useful for determining why ArchiveReader fails for problematic W/ARC files 2009-07-17 21:52:21 +00:00
gojomo dd254088e1 [HER-1633] port IsCrossTopmostAssignedSurtHopDecideRule to heritrix3
* HopCrossesAssignmentLevelDomainDecideRule.java
    port H2 IsCrossTopmostAssignedSurtHopDecideRule to H3 under this new name
* PublicSuffixes.java
    update comment, public method for 'Assignment Level Domain'/'Assignment Level SURT' term
* AssignmentLevelSurtQueueAssignmentPolicy
    renamed TopmostAssignedSurtQueueAssignmentPolicy
2009-07-08 00:28:56 +00:00
gojomo cb8a374e5d [HER-1636] H3: Failed get of replay char sequence due the OutOfMemoryError: Map failed (port HER-1482)
(from nlevitt's H2 commit message:)
* InMemoryReplayCharSequence.java
    new, simple ReplayCharSequence that supports any encoding, keeping everything in memory
* GenericReplayCharSequence.java
    If the encoding supports random access, memory maps the backing file directly; otherwise decodes to UTF-16 and maps that. Supports the first Integer.MAX_VALUE bytes of the file. Maps up to 64M; moves the map around as necessary for larger files.
* Latin1ByteReplayCharSequence.java
    removed, functionality split between InMemoryReplayCharSequence and GenericReplayCharSequence
* ReplayCharSequenceTest.java
    xestHugeReplayCharSequence() - uncomment to test a huge replay char sequence
    testReplayCharSequenceByteToStringOverflow() - test both UTF-8 and windows-1252
* RecordingOutputStream.java
    use the new ReplayCharSequences
2009-07-07 21:53:57 +00:00
gojomo d336ea760f quiet excessive logging 2009-06-05 02:00:07 +00:00
gojomo 9155e5f4f9 copying noah's work to h3
Fix for [HER-1506] ByteReplayCharSequence ignores specified/non-default character encodings, reported by Jean-No?\195?\171l Rivasseau
* RecordingOutputStream.java
    use ByteReplayCharSequence only for iso8859-1
* ReplayCharSequenceTest.java
    new tests for iso8859-1, windows-1252 and ascii
2009-05-14 21:19:24 +00:00
gojomo 2dec5dfd1a Fix for [HER-1268] ExtractorHTML not able to extract some links (due to them violating RFC2396)
* ExtractorHTMLTest.java, UURIFactoryTest.java
    test that relative-URIs with late-position colons aren't interpreted as absolute URIs with long, illegal schemes
* UURIFactory.java
    update RFC2396REGEX to require legal scheme
* LaxURI.java
    allow illegal candidate scheme to just be interpreted as something else
2009-05-12 22:22:11 +00:00
gojomo 3f7d85d7aa Fix for [HER-1528] NumberFormatException in UURIFactory.checkPort()
* UURIFactoryTest.java
    test that port-looking-part that's out of integer bounds throws URIException not NumberFormatException
* UURIFactory.java
    catch NumberFormatException; allow to surface as URIException
2009-05-12 18:21:17 +00:00
gojomo e047bf68e0 copy 'springy' branch to heritrix3 2009-05-11 22:56:36 +00:00