Commit Graph
654 Commits
Author SHA1 Message Date
gojomo e791c23751 * BloomFilterTest
temporarily disable 495MB test until build box has more RAM
2011-05-28 01:10:33 +00:00
gojomo 292b30af1b remove unnecessary Serializable interface 2011-05-28 00:02:38 +00:00
gojomo 083e75e30a * CrawlServer.java
autoregister ConcurrentSkipListSet
2011-05-28 00:02:10 +00:00
nlevitt 164e6e2999 * commons/pom.xml
increase heap for surefire to size (640m) that seems to work on build box
2011-05-27 22:27:40 +00:00
gojomo 0cb6e96925 * commons/pom.xml
reduce heap for surefire in hopes of speeding build on memory-constrained build box
2011-05-27 05:17:27 +00:00
gojomo 99a49b2df7 Avoid treating temporarily-DEFERRED robots.txt handling as-if a failure-to-ignore in robots-ignored case
* DispositionProcessor
    treat S_DEFERRED different from other negative error statuses
2011-05-27 01:24:49 +00:00
nlevitt 728951d1ff Fix for HER-1791 - heritrix writes revisit record whether or not previous fetch
was archived
* CoreAttributeConstants.java
    new flag A_HISTORY_GOOD_TO_STORE w/ javadoc
* WriterPoolProcessor.java
    shouldWrite() - set A_HISTORY_GOOD_TO_STORE on CrawlURI if we decide to skip writing because of previous fetch with identical digest
* WARCWriterProcessor.java
    write() - set A_HISTORY_GOOD_TO_STORE on CrawlURI on successful write to warc
* PersistProcessor.java
    shouldStore() - change to return true if A_HISTORY_GOOD_TO_STORE is set on the CrawlURI
2011-05-26 16:44:53 +00:00
nlevitt 3acedc86a2 Different fix for HER-1891 which also fixes HER-1890, two cases of "seed
redirect url sometimes '0 NOTCRAWLED' in seeds-report.txt even when crawled"
* CandidatesProcessor.java 
    innerProcess() - set force-fetch on outlinks promoted to seeds
2011-05-26 16:07:28 +00:00
nlevitt 39d6caad8b Revert last fix (r7154,r7155) for HER-1891 in preparation for applying
different fix (see discussion on jira issue).
* CandidatesProcessor.java
2011-05-26 16:04:41 +00:00
nlevitt 2d267cf173 HER-843 - crawl.log record of which ARC a capture landed in
* WARCWriterProcessor.java
    write() - on success, add arcFilename to CrawlURI extraInfo
2011-05-25 22:23:53 +00:00
nlevitt 5e1571f8dd HER-1790 - record warc where url was saved in crawl.log
* CrawlURI.java
    new field JSONObject extraInfo, methods getExtraInfo() and addExtraInfo()
* WARCWriterProcessor.java
    write() - on success, add warcFilename to CrawlURI extraInfo
* CrawlerLoggerModule.java
    new config option logExtraInfo, default false 
* UriProcessingFormatter.java
    new field logExtraInfo
    format() - include CrawlURI extraInfo if logExtraInfo is enabled
               also include "-" if CrawlURI has no annotations, since this is no longer the last field on the line
* profile-crawler-beans.cxml
    <!-- <property name="logExtraInfo" value="false" /> -->
* NonFatalErrorFormatter.java, RuntimeErrorFormatter.java
    new constructor to handle logExtraInfo since these subclass UriProcessingFormatter
2011-05-25 22:11:18 +00:00
nlevitt 6827ad4a84 Fix bug introduced in r7154 and revealed by unit tests.
* CandidatesProcessor.java
    innerProcess() - do KeyedProperties overrides at the right time
2011-05-25 19:43:12 +00:00
nlevitt 29fa5f6563 Fix for HER-1891 seed redirect url sometimes "0 NOTCRAWLED" in seeds-report.txt
even when crawled, when original seed also has a regular link to the redirect
url
* CandidatesProcessor.java
    innerProcess() - present seed outlinks to the frontier ahead of non-seed outlinks, so that seed version of any duplicated outlink is always the one that's crawled
2011-05-25 04:16:53 +00:00
nlevitt c2c24d1939 Move "implements CrawlUriReceiver" from WorkQueueFrontier to superclass
AbstractFrontier where the method CrawlUriReceiver.receive() is implemented.
2011-05-23 22:31:56 +00:00
nlevitt e70f0f8a50 Fix HER-1889 should recover from problems unescaping javascript in ExtractorJS
* ExtractorJS.java
    considerStrings() - catch exceptions from
    StringEscapeUtils.unescapeJavaScript(), log warning, and proceed
2011-05-20 00:05:09 +00:00
nlevitt d26bee27e8 * Link.java
addRelativeToVia() - really use base instead of via when via is missing, as
    the warning warns will happen
2011-05-19 23:43:16 +00:00
nlevitt 11b54e7ec1 Fix HER-1888 StringIndexOutOfBoundsException in
Recorder.getContentReplayPrefixString()
* Recorder.java 
    getContentReplayPrefixString() - return empty string there's no content, to
    avoid exception
2011-05-19 23:19:11 +00:00
nlevitt 2a6aca0fcd * Recorder.java
getContentReplayPrefixString() - use fallback character encoding if
    necessary, much like getContentReplayCharSequence()
2011-05-03 17:14:28 +00:00
gojomo f7712cc0bf Clarification to help [HER-1885] source-report.txt empty
* SourceTagsReport
    informative note if there's none of the info needed for this report
2011-04-29 22:21:54 +00:00
nlevitt 26f34c1b8c HER-1547 some sites may require an 'Accept' header
* FetchHTTP.java
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
    by default - this is what my firefox 4.0 for mac sends
* profile-crawler-beans.cxml
    commented-out default value
2011-04-25 20:43:17 +00:00
nlevitt d159b4e106 HER-741 Make extractors interrogate for charset
* ExtractorXML.java
    if charset not spec'd in http header look for <?xml encoding=""?>
* ExtractorHTML.java 
    lookForEncodingInContent() - 
    1. look for <meta http-equiv="content-type"...>
    2. if not found then look for <meta charset="">
    3. if not found then <?xml encoding=""...?>
* Recorder.java
    setCharacterEncoding() - If new encoding is different from old encoding,
    close replayCharSequence and set to null, which will trigger recreation on
    next retrieval.
2011-04-22 18:43:18 +00:00
nlevitt c9c74b5c28 * ExtractorXML.java
shouldExtract() - use getContentReplayPrefixString() for <?xml check
2011-04-22 00:42:09 +00:00
nlevitt a2eaa9d6ac HER-1820 followup
* UriUtils.java
    NAIVE_LIKELY_URI_PATTERN - revert change and unpublicize
    NAIVE_URI_EXCEPTIONS - add some mimetype strings that came up in testing
    isLikelyFalsePositive() - unpublicize
* ExtractorXML.java
    XML_URI_EXTRACTOR - do not use NAIVE_LIKELY_URI_PATTERN
    shouldExtract() - check for mimetype application/vnd.openxmlformats which is not xml
    processXml() - use UriUtils.isLikelyUri()
2011-04-21 17:18:01 +00:00
nlevitt 43dae4d84d HER-1884 when html is processed by ExtractorXML, which can happen when it
starts with <?xml..., a@href links are treated as embeds
* ExtractorXML.java
    shouldExtract() - return true if content starts with "<?xml" only if it
    does not also contain "<!doctype html" or "<html" early in the content
2011-04-20 20:57:41 +00:00
nlevitt c4595fdcc9 * profile-crawler-beans.cxml
-  <!-- <property name="independentExtractors" value="false" /> -->
    +  <!-- <property name="extractIndependently" value="false" /> -->
2011-04-20 20:54:21 +00:00
nlevitt 6d6c1059a5 Use Recorder.getContentReplayCharSequence() instead of deprecated
getReplayCharSequence()
2011-04-20 19:38:12 +00:00
gojomo 630ddb4deb [HER-1883] seeds result info (for seeds report, crawl report tally) lost after checkpoint & resume
* SeedRecord.java
    ensure makeDirty() is called after every updateWith() (but not the initial instantiation)
2011-04-20 02:38:26 +00:00
nlevitt 70d21ca2da HER-1820 more eager xml link extraction
* ExtractorXML.java
    instead of considering only strings that start with http(s):, consider all
    strings that match UriUtils.NAIVE_LIKELY_URI_PATTERN (and, as before,
    constitute the entirety of the xml tag content or attribute value)
* UriUtils.java
    - NAIVE_LIKELY_URI_PATTERN - add quotes to the excluded characters so it
      does not eat the closing quote when matching xml attribute values, and
      make visibility public for use in ExtractorXML
    - isLikelyUri() - refactor false positive check into new method
      isLikelyFalsePositive() so that it can be used in ExtractorXML avoiding
      redundant check against NAIVE_LIKELY_URI_PATTERN
2011-04-20 01:18:00 +00:00
nlevitt b064d43db5 Fix HER-1792 backslashes in urls can in some cases really mean backslashes
(specifically, when they're in the query string)
* UURIFactory.java
    fixup() - replace \ with / up to the first ? in the url, instead of
    anywhere in the url
    and update comments
* UURIFactoryTest.java
    backslash test
2011-04-19 02:11:20 +00:00
gojomo 2be8af10a9 * ArchiveReaderFactory
comment about possible weakness in checking response to Range:d request
2011-04-16 08:06:03 +00:00
gojomo 8bc70dd82a [HER-1881] GZIPMembersInputStream.compressedSkip(long) ignores return value of in.skip(offset)
* GZIPMembersInputStream
    use ByteStreams.skipFully to skip desired amount or hit EOF
2011-04-16 07:43:53 +00:00
gojomo 991a67e0e4 Post 3.1.0-beta
* **/pom.xml
    chnge version-identifier to "3.1.0-SNAPSHOT"
2011-04-15 22:28:52 +00:00
gojomo 52d00a9917 Prep for 3.1.0-beta
* **/pom.xml
    increment declared version
2011-04-15 18:09:43 +00:00
gojomo 1a2ec76805 comment typo, missing serialization ID 2011-04-15 18:08:12 +00:00
nlevitt 2df2584573 Fix HER-1880 robots.txt less specific Allow overrides more specific Disallow
* RobotsDirectives.java
    - use plain ConcurrentSkipListSet<String> instead of PrefixSet, to
      maintain complete list of prefixes, so we can know the longest match
    - allows(String) - return true if longest matching Allow prefix is longer
      than or equal to longest matching Disallow prefix
* RobotstxtTest.java
    flip expected result of test of generic Allow against specific Disallow
2011-04-14 02:25:43 +00:00
nlevitt 75b7b9066c Followup to r7127 - add jna to eclipse classpath
* .classpath
    <classpathentry kind="var" path="M2_REPO/net/java/dev/jna/jna/3.2.3/jna-3.2.3.jar"/>
2011-04-13 00:54:26 +00:00
gojomo 722a8549ab [HER-1821] H3: implement hard-link-based BDB/state-dir checkpointing
* BdbModule.java
    new setting, useHardLinkCheckpoints, default true
    doCheckpoint now creates hard-links to active log files from the in-environment checkpoint-dir
    doRecover now relinks from checkpoint-dir files, when available, in preference to whatever is already in the env-dir
* pom.xml
    bring in JNA for native calls
* CLibrary
    wrapper for the link() function
2011-04-12 00:09:51 +00:00
gojomo 6388dc7605 [HER-1878] NullPointerException when parsing (some?) WARC files over slow connections
* GZIPMembersInputStream
    override OpenJDK7GZIPInputStream.readTrailer to not rely on available() as indicator of end-of-stream
    fix membersIterator hasNext() to also not rely on available() as indicator of end-of-stream
* ArchiveReader
    change innerHasNext to peek one byte (using mark/reset) rather than rely on available() as indicator of end-of-stream
    remove redundant getInputStream accessor in favor of field-name-matching getIn/setIn
* ArchiveReaderFactory, (W)ARCReaderFactory
    remove no-longer-necessary RepositionableStream references
    use getIn() rather than getInputStream()
2011-04-11 22:58:05 +00:00
gojomo bd45720bae improved comments about new naming conventions/default-template 2011-04-11 22:49:01 +00:00
nlevitt f2ad45045b * FetchWhois.java
fix whois uri syntax - add missing "/" token
2011-04-07 17:17:48 +00:00
nlevitt 020ef44551 * FetchWhois.java
class-level javadoc including informal specification of whois uri
2011-04-07 06:44:06 +00:00
gojomo f4cf64af29 [HER-1053] compressed HTTP fetch: "Accept-encoding: gzip"
[HER-728] Offer replay stream that has been un-chunked (whether because response was HTTP/1.1 or used chunked in HTTP/1.0 against spec)
[HER-1876] Offer HTTP/1.1 option - for chunked transfer-encoding (but not persistent connections) 
* (all)
    update to use new (decoded-as-necessary) content streams/CharSequences
2011-04-06 20:54:16 +00:00
gojomo 3a53da1073 adapted tests for other changes 2011-04-06 20:52:06 +00:00
gojomo e29e7dd36a comment typo 2011-04-06 20:51:40 +00:00
gojomo 9f3b8d11db * ReplayInputStream
constructor comment about using destroy()
2011-04-06 20:51:14 +00:00
gojomo c5eb3ffd53 [HER-1053] compressed HTTP fetch: "Accept-encoding: gzip"
[HER-728] Offer replay stream that has been un-chunked (whether because response was HTTP/1.1 or used chunked in HTTP/1.0 against spec)
[HER-1876] Offer HTTP/1.1 option - for chunked transfer-encoding (but not persistent connections) 
* FetchHTTP
    add 'acceptCompression' and 'useHTTP11' properties, both default false
* Recorder
    track whether recorded-input is transfer-encoded (chunked) or content-encoded (gzip etc)
    offer alternate replay streams for 
      (1) raw 'messageBody'; 
      (2) entity (un-chunked if necessary)
      (3) content (decompressed if necessary)
    always content & GenericReplayCharSequence for CharSequence replays
* GenericReplayCharSequence
    always use a stream (rather than random-access buffer)
    always decode to prefix buffer first, so short content never touches disk no matter the encoding
* InMemoryReplayCharSequence
    deleted; 'Generic' now works similarly for small content and anyway random-access for single-byte-encodings is now rarely possible (given deconding streams)
* RecordingInputStream, RecordingOutputStream
    adjust for changed stream names, functionality moved to Recorder
* ReplayCharSequence
    use Charset instances rather than names
* ReplayInputStream
    add convenience constructor (and tmp-file-destroy) for copying any other inputStream into a seekable ReplayInputStream
2011-04-06 20:42:43 +00:00
gojomo 3f98fc248b * ArchiveUtils
(readFully) return actual number of bytes read into array
* FileUtils
    (readFullyToFile) simplify; also return total bytes read
2011-04-06 20:22:30 +00:00
nlevitt b79308b2e0 Part of HER-1875 - socket timeout for whois fetcher
* FetchWhois.java
2011-04-05 01:22:01 +00:00
nlevitt 81cda7be59 HER-1875 followup - override SocketFactory to support connect timeout for ftp
data connection
2011-04-05 01:21:09 +00:00
nlevitt 653f24e713 Avoid exception - "org.springframework.beans.NotWritablePropertyException:
Invalid property 'timeoutSeconds' of bean class
[org.archive.modules.fetcher.FetchFTP]: Bean property 'timeoutSeconds' is not
writable or has an invalid setter method. Does the parameter type of the setter
match the return type of the getter?"
* FetchFTP.java
    change setTimeoutSeconds(Integer) to setTimeoutSeconds(int)
2011-04-04 20:10:54 +00:00