theotherp / nzbhydra2

Usenet meta search
Other
1.25k stars 75 forks source link

- Binsearch / DateTimeParseException #470

Closed reiichido closed 4 years ago

reiichido commented 4 years ago

Hi,

Just did a fresh install of NZBHydra2 (v 2.10.2) on a Windows 7 x64 machine, french locale.

There is an issue with Binsearch indexer, locale related. Date parsing fails : java.time.format.DateTimeParseException: Text '07-Dec-2019' could not be parsed at index 3 at java.time.format.DateTimeFormatter.parseResolved0(Unknown Source) at java.time.format.DateTimeFormatter.parse(Unknown Source) at org.nzbhydra.indexers.Binsearch.parseRow(Binsearch.java:191) at org.nzbhydra.indexers.Binsearch.getSearchResultItems(Binsearch.java:108) at org.nzbhydra.indexers.Binsearch.getSearchResultItems(Binsearch.java:44) at org.nzbhydra.indexers.Indexer.searchInternal(Indexer.java:163) at org.nzbhydra.indexers.Indexer.search(Indexer.java:103) at org.nzbhydra.searching.Searcher.lambda$getIndexerCallable$13(Searcher.java:372) at java.util.concurrent.FutureTask.run(Unknown Source) at org.nzbhydra.logging.MdcThreadPoolExecutor$1.run(MdcThreadPoolExecutor.java:114) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

If I change my locale to English / US NZBHydra works fine.

I think changing line Binsearch.java:55 to : private static final DateTimeFormatter DATE_TIME_FORMATTER = new DateTimeFormatterBuilder().appendPattern("dd-MMM-yyyy").parseDefaulting(ChronoField.NANO_OF_DAY, 0).toFormatter(Locale.US).withZone(ZoneId.of("UTC"));

might do the job.

Thanks in advance,

Rei

reiichido commented 4 years ago

nzbhydra-debuginfos-2019-12-08-20-59.zip

theotherp commented 4 years ago

Works fine for me. Do you still get the error?

colemar commented 4 years ago

Same issue with Windows 10 x64 italian locale, NZBHydra 2.10.7

Java version: openjdk version "11.0.7" 2020-04-14 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.7+10) Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.20.0, JRE 11 Windows 10 amd64-64-Bit

java -XshowSettings -version 2> locale.txt grep -i locale locale.txt

Locale settings:
    default locale = italiano (Italia)
    default display locale = italiano (Italia)
    default format locale = italiano (Italia)
    available locales = , af, af_NA, af_ZA, agq, agq_CM, ak, ak_GH,
2020-04-24 04:27:31.860  INFO --- [  pool-86-thread-2] org.nzbhydra.indexers.Binsearch          : [ID: 48684, Host: 0:0:0:0:0:0:0:1] Binsearch: Calling https://www.binsearch.info/?adv_col=on&postdate=date&adv_sort=date&min=0&max=100&q=Double%20You%20Please%20Don't%20Go%20
2020-04-24 04:27:31.862  INFO --- [  pool-86-thread-3] org.nzbhydra.indexers.NzbIndex           : [ID: 48684, Host: 0:0:0:0:0:0:0:1] NZBIndex: Calling https://nzbindex.com/rss?more=1&max=250&hidecross=0&minsize=1&maxsize=2000&q=Double%20You%20Please%20Don't%20Go%20
2020-04-24 04:27:31.863  INFO --- [  pool-86-thread-4] org.nzbhydra.indexers.Newznab            : [ID: 48684, Host: 0:0:0:0:0:0:0:1] Drunken Slug: Calling https://api.drunkenslug.com/api?apikey=<apikey>&t=search&extended=1&q=Double%20You%20Please%20Don't%20Go%20&minsize=1&password=1&cat=3000&limit=100&offset=0
2020-04-24 04:27:32.558 ERROR --- [  pool-86-thread-2] org.nzbhydra.indexers.Binsearch          : [ID: 48684, Host: 0:0:0:0:0:0:0:1] Binsearch: Unexpected error while searching

java.time.format.DateTimeParseException: Text '13-Jun-2018' could not be parsed at index 3
    at java.base/java.time.format.DateTimeFormatter.parseResolved0(Unknown Source)
    at java.base/java.time.format.DateTimeFormatter.parse(Unknown Source)
    at org.nzbhydra.indexers.Binsearch.parseRow(Binsearch.java:191)
    at org.nzbhydra.indexers.Binsearch.getSearchResultItems(Binsearch.java:108)
    at org.nzbhydra.indexers.Binsearch.getSearchResultItems(Binsearch.java:44)
    at org.nzbhydra.indexers.Indexer.searchInternal(Indexer.java:184)
    at org.nzbhydra.indexers.Indexer.search(Indexer.java:119)
    at org.nzbhydra.searching.Searcher.lambda$getIndexerCallable$12(Searcher.java:411)
    at org.nzbhydra.searching.Searcher$$Lambda$1359/0000000000000000.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at org.nzbhydra.logging.MdcThreadPoolExecutor$1.run(MdcThreadPoolExecutor.java:114)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)

2020-04-24 04:27:32.560  WARN --- [  pool-86-thread-2] org.nzbhydra.indexers.Binsearch          : [ID: 48684, Host: 0:0:0:0:0:0:0:1] Because an error occurred Binsearch will be temporarily disabled until 2020-04-24T02:42:32.560174500Z. This is error number 1 in a row

Workaround: create a script named NZBHydra2.cmd in the same folder as NZBHydra.exe containing:

set JAVA_TOOL_OPTIONS=-Duser.language=en -Duser.country=US
start "NZBHydra2" NZBHydra2.exe
theotherp commented 4 years ago

@colemar Thanks, I never considered running Hydra with another locale. Fixed in next version.