POST /proxy/[port]/hosts is throwing Multiple entries with same key: www.test.com=173.0.92.19 and www.test.com=173.0.0.0, if I set again

61 views
Skip to first unread message

syam palepu

unread,
Aug 13, 2015, 11:52:57 AM8/13/15
to BrowserMob Proxy
Hi,

while using the BMP Rest API - POST /proxy/[port]/hosts for remapping the host. I see Multiple entries with same key: www.test.com=173.0.92.19 and www.test.com=173.0.0.0, if I set again with same key.

which mean if I POST  this requset {"www.test.com": "173.0.92.19"} to /proxy/[port]/hosts two times I am getting   java.lang.IllegalArgumentException: Multiple entries with same key: www.paypal.com=173.0.92.19 and www.paypal.com=173.0.0.0

looks like this API is not allowing the multiple keys. 
is there any option to override the existing keys?

Thanks in Advance.

Regards,
syam.

syam palepu

unread,
Aug 14, 2015, 3:37:46 AM8/14/15
to BrowserMob Proxy

I have found some thing regarding this, but I am not sure whether this is done purposefully.
@Post
@At("/:port/hosts")
public Reply<?> remapHosts(@Named("port") int port, Request<String> request) {
LegacyProxyServer proxy = proxyManager.get(port);
if (proxy == null) {
return Reply.saying().notFound();
}
@SuppressWarnings("unchecked") Map<String, String> headers = request.read(Map.class).as(Json.class);
for (Map.Entry<String, String> entry : headers.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
proxy.remapHost(key, value);
proxy.setDNSCacheTimeout(0);
proxy.clearDNSCache();
}
return Reply.saying().ok();
} while remapping the host, we are using the remaphost for each key pair. can't we do the whole map resetting as follows. @Post @At("/:port/hosts") public Reply<?> remapHosts(@Named("port") int port, Request<String> request) { LegacyProxyServer proxy = proxyManager.get(port); if (proxy == null) { return Reply.saying().notFound(); } @SuppressWarnings("unchecked") Map<String, String> headers = request.read(Map.class).as(Json.class); proxy.remapHosts(headers); proxy.setDNSCacheTimeout(0); proxy.clearDNSCache(); return Reply.saying().ok(); } would some one help me clear my understandings and query?

Thanks & Regards,
syam.

je...@outlook.com

unread,
Aug 17, 2015, 7:28:23 PM8/17/15
to BrowserMob Proxy
Can you paste the full stack trace of the error?

syam...@gmail.com

unread,
Aug 18, 2015, 6:58:38 AM8/18/15
to BrowserMob Proxy
Thanks for reply.

here is the full stack trace.


[WARN  2015-08-17T05:59:18,860 org.eclipse.jetty.util.log] (qtp318976698-15) /proxy/8081/hosts com.google.sitebricks.routing.EventDispatchException: Exception [IllegalArgumentException - "Multiple entries with same key: www.paypal.com=173.0.0.0 and www.paypal.com=173.0.92.19"] thrown by event method [public com.google.sitebricks.headless.Reply net.lightbody.bmp.proxy.bricks.ProxyResource.remapHosts(int,com.google.sitebricks.headless.Request)]

at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:150)
(See below for entire trace.)

        at com.google.sitebricks.routing.DefaultPageBook$MethodTuple.call(DefaultPageBook.java:830) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.sitebricks.routing.DefaultPageBook$MethodTuple.call(DefaultPageBook.java:805) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.sitebricks.routing.DefaultPageBook$PageTuple.callAction(DefaultPageBook.java:624) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.sitebricks.routing.DefaultPageBook$PageTuple.doMethod(DefaultPageBook.java:603) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.sitebricks.routing.WidgetRoutingDispatcher.fireEvent(WidgetRoutingDispatcher.java:171) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.sitebricks.routing.WidgetRoutingDispatcher.bindAndReply(WidgetRoutingDispatcher.java:102) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.sitebricks.routing.WidgetRoutingDispatcher.dispatch(WidgetRoutingDispatcher.java:88) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.sitebricks.DebugModeRoutingDispatcher.dispatch(DebugModeRoutingDispatcher.java:56) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.sitebricks.SitebricksFilter.doFilter(SitebricksFilter.java:62) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.sitebricks.HiddenMethodFilter.doFilter(HiddenMethodFilter.java:70) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:474) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:224) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:935) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:404) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:870) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.server.Server.handle(Server.java:346) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1068) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:807) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:220) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:520) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40) [browsermob-dist-2.1.0-beta-2.jar:?]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:528) [browsermob-dist-2.1.0-beta-2.jar:?]
        at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79]
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79]
        at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
        at com.google.sitebricks.routing.DefaultPageBook$MethodTuple.call(DefaultPageBook.java:820) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        ... 34 more
Caused by: java.lang.IllegalArgumentException: Multiple entries with same key: www.paypal.com=173.0.0.0 and www.paypal.com=173.0.92.19
        at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:150) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.common.collect.RegularImmutableMap.checkNoConflictInBucket(RegularImmutableMap.java:104) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.common.collect.RegularImmutableMap.<init>(RegularImmutableMap.java:70) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:254) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at net.lightbody.bmp.proxy.dns.AbstractHostNameRemapper.remapHost(AbstractHostNameRemapper.java:39) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at net.lightbody.bmp.BrowserMobProxyServer.remapHost(BrowserMobProxyServer.java:653) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at net.lightbody.bmp.proxy.bricks.ProxyResource.remapHosts(ProxyResource.java:543) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79]
        at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
        at com.google.sitebricks.routing.DefaultPageBook$MethodTuple.call(DefaultPageBook.java:820) ~[browsermob-dist-2.1.0-beta-2.jar:?]
        ... 34 more

                                                                                                                               114,1         82%
Thanks & Regards,
syam.

je...@outlook.com

unread,
Sep 6, 2015, 8:04:41 PM9/6/15
to BrowserMob Proxy
Sorry for the late reply here. This should now be fixed in master.
Reply all
Reply to author
Forward
0 new messages