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

Replicate failing scripted test on Windows #7088

Draft
wants to merge 1 commit into
base: 1.8.x
Choose a base branch
from

Conversation

mdedetrich
Copy link
Contributor

Create a replicated failing scripted test on Windows

@mdedetrich mdedetrich marked this pull request as draft December 8, 2022 18:09
@eed3si9n
Copy link
Member

eed3si9n commented Dec 8, 2022

Looks like we got some:

Caused by: java.net.SocketException: socket closed
	at java.net.DualStackPlainSocketImpl.accept0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketAccept(DualStackPlainSocketImpl.java:131)
	at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
	at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:199)
	at java.net.ServerSocket.implAccept(ServerSocket.java:560)
	at java.net.ServerSocket.accept(ServerSocket.java:528)
	at xsbt.IPC$Server.connection(IPC.scala:69)
	at sbt.scriptedtest.SbtHandler.receive(SbtHandler.scala:77)
	at sbt.scriptedtest.SbtHandler.$anonfun$apply$1(SbtHandler.scala:33)
	at sbt.scriptedtest.SbtHandler.$anonfun$apply$1$adapted(SbtHandler.scala:31)
	at sbt.scriptedtest.SbtHandler.onSbtInstance(SbtHandler.scala:39)
	at sbt.scriptedtest.SbtHandler.apply(SbtHandler.scala:31)
	at sbt.scriptedtest.SbtHandler.apply(SbtHandler.scala:23)
	at sbt.scriptedtest.BatchScriptRunner.$anonfun$processStatement$1(BatchScriptRunner.scala:51)

@mdedetrich
Copy link
Contributor Author

mdedetrich commented Dec 8, 2022

Unfortunately this is not the same error, we are looking for a client refusing to connect, i.e.

Error:  java.net.ConnectException: Connection refused: connect
Error:  	at java.base/java.net.PlainSocketImpl.connect0(Native Method)
Error:  	at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:101)
Error:  	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412)
Error:  	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255)
Error:  	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237)
Error:  	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
Error:  	at java.base/java.net.Socket.connect(Socket.java:609)
Error:  	at java.base/java.net.Socket.connect(Socket.java:558)
Error:  	at java.base/java.net.Socket.<init>(Socket.java:454)
Error:  	at java.base/java.net.Socket.<init>(Socket.java:264)
Error:  	at xsbt.IPC$.client(IPC.scala:21)
Error:  	at sbt.BasicCommands$.readMessage(BasicCommands.scala:472)
Error:  	at sbt.BasicCommands$.doRead(BasicCommands.scala:448)
Error:  	at sbt.BasicCommands$.$anonfun$read$2(BasicCommands.scala:435)
Error:  	at sbt.Command$.$anonfun$applyEffect$4(Command.scala:150)
Error:  	at sbt.Command$.$anonfun$applyEffect$2(Command.scala:145)
Error:  	at sbt.Command$.process(Command.scala:189)
Error:  	at sbt.MainLoop$.$anonfun$processCommand$5(MainLoop.scala:245)
Error:  	at scala.Option.getOrElse(Option.scala:189)
Error:  	at sbt.MainLoop$.process$1(MainLoop.scala:245)
Error:  	at sbt.MainLoop$.processCommand(MainLoop.scala:276)
Error:  	at sbt.MainLoop$.$anonfun$next$5(MainLoop.scala:163)
Error:  	at sbt.State$StateOpsImpl$.runCmd$1(State.scala:289)
Error:  	at sbt.State$StateOpsImpl$.process$extension(State.scala:325)
Error:  	at sbt.MainLoop$.$anonfun$next$4(MainLoop.scala:163)
Error:  	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
Error:  	at sbt.MainLoop$.next(MainLoop.scala:163)
Error:  	at sbt.MainLoop$.run(MainLoop.scala:144)
Error:  	at sbt.MainLoop$.$anonfun$runWithNewLog$1(MainLoop.scala:119)
Error:  	at sbt.io.Using.apply(Using.scala:27)
Error:  	at sbt.MainLoop$.runWithNewLog(MainLoop.scala:112)
Error:  	at sbt.MainLoop$.runAndClearLast(MainLoop.scala:66)
Error:  	at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:51)
Error:  	at sbt.MainLoop$.runLogged(MainLoop.scala:42)
Error:  	at sbt.StandardMain$.runManaged(Main.scala:218)
Error:  	at sbt.xMain$.$anonfun$run$11(Main.scala:133)
Error:  	at sbt.internal.util.Terminal$.withStreams(Terminal.scala:381)
Error:  	at sbt.xMain$.withStreams$1(Main.scala:87)
Error:  	at sbt.xMain$.run(Main.scala:121)
Error:  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Error:  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Error:  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Error:  	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
Error:  	at sbt.internal.XMainConfiguration.run(XMainConfiguration.java:56)
Error:  	at sbt.xMain.run(Main.scala:46)
Error:  	at xsbt.boot.Launch$.$anonfun$run$1(Launch.scala:149)
Error:  	at xsbt.boot.Launch$.withContextLoader(Launch.scala:176)
Error:  	at xsbt.boot.Launch$.run(Launch.scala:149)
Error:  	at xsbt.boot.Launch$.$anonfun$apply$1(Launch.scala:44)
Error:  	at xsbt.boot.Launch$.launch(Launch.scala:159)
Error:  	at xsbt.boot.Launch$.apply(Launch.scala:44)
Error:  	at xsbt.boot.Launch$.apply(Launch.scala:21)
Error:  	at xsbt.boot.Boot$.runImpl(Boot.scala:78)
Error:  	at xsbt.boot.Boot$.run(Boot.scala:73)
Error:  	at xsbt.boot.Boot$.main(Boot.scala:21)
Error:  	at xsbt.boot.Boot.main(Boot.scala)

The important part in the stacktrace is Error: at xsbt.IPC$.client(IPC.scala:21).

I think whats happening in the case you pointed out is that the sbt server unexpectedly quite (for some reason) which terminated the server earlier than expected. I get the impression that in general a lot of the scripted tests are failing because of Windows specific differences (i.e. crlf/no symbolic links by default) which might be causing

Caused by: java.net.SocketException: socket closed

as an unintended consequence.

@mdedetrich
Copy link
Contributor Author

So to confirm that the client method is being called I changed it to

def client[T](port: Int)(f: IPC => T): T = throw new Exception("This is fun")

And it is indeed getting thrown. I will now increase the backlog value of this PR to see if it is making an effect on the java.net.SocketException just to see if it is indeed related to the original java.net.ConnectException: Connection refused: connect exception.

@mdedetrich mdedetrich force-pushed the replicate-failing-windows-ci-open-port-2 branch from 4cfc41d to e9200d4 Compare December 9, 2022 10:14
@mdedetrich
Copy link
Contributor Author

@eed3si9n So out of curiosity, I changed the backlog value to 50 in this PR to see if it would have an effect on the java.net.SocketException: socket closed errors and it had no effect, so I think its unrelated, i.e.

Caused by: java.net.SocketException: socket closed
[info] [error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
	at java.net.DualStackPlainSocketImpl.accept0(Native Method)

from https://github.com/sbt/sbt/actions/runs/3656457856/jobs/6178927130#step:19:2695

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

Successfully merging this pull request may close these issues.

None yet

2 participants