Exception while starting flashback proxy
- Dominant language
- Java
- Stars
- 580
- Forks
- 48
- PR merge metrics
- No merged PRs in 30d
Description
while doing ```curl "http://localhost:1234/admin?action=startFlashback" --data '{
"sceneMode": "record",
"sceneName": "test1",
"matchRule": "matchEntireRequest",
"scenePath": "/tmp",
"proxyHost": "localhost",
"proxyPort": "5555"
}'```
we get:
```{"exceptionClass":"com.linkedin.restli.server.RestLiServiceException","message":"INTERNAL SERVER ERROR","stackTrace":"com.linkedin.restli.server.RestLiServiceException [HTTP Status:500]: INTERNAL SERVER ERROR\n\tat com.linkedin.restli.internal.server.RestLiMethodInvoker.doInvoke(RestLiMethodInvoker.java:317)\n\tat com.linkedin.restli.internal.server.RestLiMethodInvoker.access$100(RestLiMethodInvoker.java:62)\n\tat com.linkedin.restli.internal.server.RestLiMethodInvoker$RestLiRequestFilterChainCallbackImpl.onSuccess(RestLiMethodInvoker.java:424)\n\tat com.linkedin.restli.internal.server.filter.RestLiRequestFilterChain.onRequest(RestLiRequestFilterChain.java:72)\n\tat com.linkedin.restli.internal.server.RestLiMethodInvoker.invoke(RestLiMethodInvoker.java:198)\n\tat com.linkedin.restli.server.RestLiServer.handleResourceRequest(RestLiServer.java:337)\n\tat com.linkedin.restli.server.RestLiServer.doHandleRequest(RestLiServer.java:227)\n\tat com.linkedin.restli.server.BaseRestServer.handleRequest(BaseRestServer.java:61)\n\tat com.linkedin.restli.server.DelegatingTransportDispatcher.handleRestRequest(DelegatingTransportDispatcher.java:61)\n\tat com.linkedin.r2.filter.transport.DispatcherRequestFilter.onRestRequest(DispatcherRequestFilter.java:68)\n\tat com.linkedin.r2.filter.FilterChainIterator$FilterChainRestIterator.doOnRequest(FilterChainIterator.java:131)\n\tat com.linkedin.r2.filter.FilterChainIterator$FilterChainRestIterator.doOnRequest(FilterChainIterator.java:117)\n\tat com.linkedin.r2.filter.FilterChainIterator.onRequest(FilterChainIterator.java:57)\n\tat com.linkedin.r2.filter.transport.ServerQueryTunnelFilter.onRestRequest(ServerQueryTunnelFilter.java:58)\n\tat com.linkedin.r2.filter.FilterChainIterator$FilterChainRestIterator.doOnRequest(FilterChainIterator.java:131)\n\tat com.linkedin.r2.filter.FilterChainIterator$FilterChainRestIterator.doOnRequest(FilterChainIterator.java:117)\n\tat com.linkedin.r2.filter.FilterChainIterator.onRequest(FilterChainIterator.java:57)\n\tat com.linkedin.r2.filter.message.rest.RestFilter.onRestRequest(RestFilter.java:50)\n\tat com.linkedin.r2.filter.FilterChainIterator$FilterChainRestIterator.doOnRequest(FilterChainIterator.java:131)\n\tat com.linkedin.r2.filter.FilterChainIterator$FilterChainRestIterator.doOnRequest(FilterChainIterator.java:117)\n\tat com.linkedin.r2.filter.FilterChainIterator.onRequest(FilterChainIterator.java:57)\n\tat com.linkedin.r2.filter.FilterChainImpl.onRestRequest(FilterChainImpl.java:86)\n\tat com.linkedin.r2.filter.transport.FilterChainDispatcher.handleRestRequest(FilterChainDispatcher.java:70)\n\tat com.linkedin.r2.transport.http.server.HttpDispatcher.handleRequest(HttpDispatcher.java:95)\n\tat com.linkedin.r2.transport.http.server.HttpDispatcher.handleRequest(HttpDispatcher.java:70)\n\tat com.linkedin.r2.transport.http.server.HttpNettyServer$RestHandler.channelRead0(HttpNettyServer.java:173)\n\tat com.linkedin.r2.transport.http.server.HttpNettyServer$RestHandler.channelRead0(HttpNettyServer.java:136)\n\tat io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)\n\tat io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:32)\n\tat io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:329)\n\tat io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:36)\n\tat io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)\n\tat io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: io.netty.channel.ChannelException: Failed to bind to: localhost:5555\n\tat com.linkedin.mitm.proxy.ProxyServer.start(ProxyServer.java:87)\n\tat com.linkedin.flashback.smartproxy.FlashbackRunner.start(FlashbackRunner.java:99)\n\tat com.linkedin.flashback.FlashbackAdminResource.startFlashback(FlashbackAdminRe* Curl_http_done: called premature == 0Connection #0 to host localhost left intact source.java:80tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.linkedin.restli.internal.server.RestLiMethodInvoker.doInvoke(RestLiMethodInvoker.java:243)\n\t... 34 more\nCaused by: java.net.BindException: Address already in use\n\tat sun.nio.ch.Net.bind0(Native Method)\n\tat sun.nio.ch.Net.bind(Net.java:433)\n\tat sun.nio.ch.Net.bind(Net.java:425)\n\tat sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)\n\tat sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)\n\tat io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:125)\n\tat io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:485)\n\tat io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1081)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:502)\n\tat io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:487)\n\tat io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:904)\n\tat io.netty.channel.AbstractChannel.bind(AbstractChannel.java:198)\n\tat io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:348)\n\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:357)\n\tat io.netty.channel.nio.NioEventLoop.run(NioEventLo```
Contributor guide
Research direction
Start at FlashbackAdminResource.startFlashback, then follow FlashbackRunner.start and ProxyServer.start in the stack trace. Reproduce the curl request with port 5555 occupied and determine the intended behavior for the reported bind failure; the issue is done only when that behavior is specified and verified.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100