Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NrtmClientFactory getting IllegalStateException (Unexpected response from NRTM server) #480

Open
devnull-mr opened this issue Apr 5, 2018 · 0 comments

Comments

@devnull-mr
Copy link

devnull-mr commented Apr 5, 2018

Hi,

we are using Bootstrap and NRTM as per documentation.

Now, when starting the whois server locally it connects fine to the NRTM service:

[NrtmClientFactory] Connected to whois.ripe.net:4444
[NrtmClientFactory] %START Version: 3 RIPE 41429898-41453941

It then starts to load the updates to the WHOIS_MIRROR_RIPE_GRS Database until it has reached the serial number mentioned above:

select max(serial_id) from WHOIS_MIRROR_RIPE_GRS.serials;
+----------------+
| max(serial_id) |
+----------------+
|       41453941 |
+----------------+
1 row in set (0.01 sec)

But then, once it has loaded the latest serial, it gets an IllegalStateException:

ERROR [NrtmClientFactory] caught java.lang.IllegalStateException, cannot import from source RIPE-GRS, stopping.
ERROR [NrtmClientFactory] Unexpected response from NRTM server: "%END 41429898 - 41453941"
java.lang.IllegalStateException: Unexpected response from NRTM server: "%END 41429898 - 41453941"
	at net.ripe.db.whois.nrtm.client.NrtmClientFactory$NrtmClient.readOperationAndSerial(NrtmClientFactory.java:231)
	at net.ripe.db.whois.nrtm.client.NrtmClientFactory$NrtmClient.readUpdates(NrtmClientFactory.java:181)
	at net.ripe.db.whois.nrtm.client.NrtmClientFactory$NrtmClient.run(NrtmClientFactory.java:86)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

After that, the whois server keeps running and I can sent queries to it, but it no longer gets any new updates via NRTM.
Only if I stop and restart the whois server it gets the next serials via NRTM but then runs into the same issue again.

I am running

INFO  [WhoisServer] Running version: 1.92-SNAPSHOT

which was compiled from the git master branch on March 26th.

Has the protocol changed recently ?

NrtmClientFactory has this on line 35:

private static final Pattern OPERATION_AND_SERIAL_PATTERN = Pattern.compile("^(ADD|DEL)[ ](\\d+)$");

so it only knows ADD and DEL, but not END, which is why it is failing in readOperationAndSerial():

final Matcher matcher = OPERATION_AND_SERIAL_PATTERN.matcher(line);
if (!matcher.find()) {
throw new IllegalStateException("Unexpected response from NRTM server: \"" + line + "\"");
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant