* WriterPoolMember.java
write(*), copyFrom() - return number of (uncompressed) bytes written, for
convenience
* WARCWriter.java
tally by record type: number of records written, content bytes, total
bytes, and (possibly compressed) size on disk
* WARCWriterProcessor.java
keep totals and write report to processors-report.txt
* WorkQueue.java
add noteExhausted() for emptied queues
* WorkQueueFrontier.java
add synchronization around checkFutures() activity
use noteExhausted when queue is totally empty
new property textSource, an org.archive.io.ReadSource, allowing
specification inline in cxml as well as in external file
* profile-crawler-beans.cxml
commented out clauses demonstrating use of textSource
* DecideRuleSequence.java
- use Spring Lifecycle start() to initialize logToFile
- inject logger module as SimpleFileLoggerProvider, since we're in
heritrix-modules and don't have access to CrawlerLoggerModule from
heritrix-engine
* CrawlerLoggerModule.java
- implement SimpleFileLoggerProvider
- setupSimpleLog() - use 'T' instead of '+' between date and time in
timestamp
* SimpleFileLoggerProvider.java
new interface with one method, setupSimpleLog()
* Scoper.java
do not call scope.start()/scope.stop(), these are handled using Spring
Lifecycle now
* DecideRule.java
remove unused, unneeded start()/stop()
* KryoBinding.java
always default to registrationOptional, for now
* StatisticsTracker.java
explicitly set valueClass of sourceDistribution to ConcurrentHashMap
* StoredQueue.java
answer 0 for size() when backing DB closed
* CheckpointService
Made checkpointIntervalMinutes setter accept a long instead of an int (was missed when the class variable was made a long). While it was non-harmful the way it was, this is more in line with Java conventions.
* 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
* BdbModule
store lengths in JDB manifest; limit extension of last JDB on recover
* CrawlerJournal
rotate frontier-recover on checkpoints like other logs
* 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
* 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)
* (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
* 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()