Displaying #maven-dev/2017-03-06.log:

Mon Mar 6 00:32:19 2017  tibor_:Joined the channel
Mon Mar 6 09:34:05 2017  tibor_:Joined the channel
Mon Mar 6 09:35:20 2017  tibor_:@stephenc: I think this is bug in Maven. Right? I always have BUILD SUCCESS if tests fail and I use --fail-at-end
Mon Mar 6 09:35:42 2017  stephenc:smells like a bug
Mon Mar 6 09:35:45 2017  tibor_:Jenkins gives me success instead of error
Mon Mar 6 09:35:56 2017  stephenc:we should add some integration tests to verify
Mon Mar 6 09:36:04 2017  tibor_:no
Mon Mar 6 09:36:16 2017  stephenc:keep in mind that some jenkins builds will turn off failing on test failures
Mon Mar 6 09:36:26 2017  tibor_:I am talking about Jenkins in my company. Jankins 2.19.2
Mon Mar 6 09:36:40 2017  stephenc:if you use the "evil" job type, that does it auto-magically
Mon Mar 6 09:37:01 2017  stephenc:also in https://github.com/apache/maven/blob/master/Jenkinsfile#L36
Mon Mar 6 09:37:16 2017  tibor_:What job, you mean, I have regular Maven 2/3
Mon Mar 6 09:37:36 2017  stephenc:the reason for that is so that you get all the test results and then rely on the Jenkins JUnit plugin to mark the build as a failure
Mon Mar 6 09:37:46 2017  stephenc:tibor_ what job type are you using?
Mon Mar 6 09:38:03 2017  stephenc:Freestyle / pipeline / evil
Mon Mar 6 09:38:16 2017  tibor_:not Freestyle
Mon Mar 6 09:38:24 2017  stephenc:https://javaadventure.blogspot.ie/2013/11/jenkins-maven-job-type-considered-evil.html
Mon Mar 6 09:38:29 2017  tibor_:"Maven project"
Mon Mar 6 09:38:34 2017  stephenc:evil job type
Mon Mar 6 09:38:45 2017  tibor_:http://10.197.230.231:8082/view/All/newJob => Maven project
Mon Mar 6 09:38:54 2017  stephenc:yep you are using the evil job type
Mon Mar 6 09:39:00 2017  tibor_::)
Mon Mar 6 09:39:08 2017  tibor_:and what should I use instead
Mon Mar 6 09:39:14 2017  stephenc:this job type in Jenkins will inject hooks and modify the configuration at runtime
Mon Mar 6 09:39:36 2017  stephenc:it changes the surefire config to have maven.test.failure.ignore=true *no matter what you configure*
Mon Mar 6 09:39:58 2017  stephenc:pipeline
Mon Mar 6 09:40:07 2017  tibor_:Should I use "Pipeline" or what would you recommend, what job is not evil?
Mon Mar 6 09:40:08 2017  stephenc:specifically pipeline with model definition
Mon Mar 6 09:40:16 2017  tibor_:ok, thx
Mon Mar 6 09:40:20 2017  stephenc:https://github.com/jenkinsci/pipeline-model-definition-plugin
Mon Mar 6 09:40:23 2017  tibor_:I will try.
Mon Mar 6 09:40:36 2017  stephenc:and then use the https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Maven+Plugin
Mon Mar 6 09:41:06 2017  stephenc:sadly the examples on https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Maven+Plugin are in groovy-based pipeline not pmd
Mon Mar 6 09:41:19 2017  stephenc:pipeline model definition is much better format
Mon Mar 6 09:43:14 2017  stephenc:tibor_: https://jenkins.io/blog/2017/02/07/declarative-maven-project/
Mon Mar 6 09:45:10 2017  tibor_:you mean that this command is evil too? https://github.com/apache/maven/blob/master/Jenkinsfile#L36
Mon Mar 6 09:53:08 2017  tibor_:@stephenc: Is Jenkinsfile the best option? We use it in Maven.
Mon Mar 6 09:53:21 2017  stephenc:Jenkinsfile is the way of the future
Mon Mar 6 09:53:41 2017  stephenc:but in Maven core, I needed to drop to origininal syntax due to some technical issues
Mon Mar 6 09:53:52 2017  stephenc:I recommend declarative version of Jenkinsfile
Mon Mar 6 09:53:54 2017  tibor_:The development team can configure the job without having rights in Jenkisn. That's good for the team.
Mon Mar 6 09:54:19 2017  stephenc:marry with organization folders and you will wonder how you ever worked before
Mon Mar 6 10:17:07 2017  Michael-O:Joined the channel
Mon Mar 6 10:19:18 2017  Michael-O:tibor_, read your mail. Will test shortly
Mon Mar 6 11:03:22 2017  Michael-O:Joined the channel
Mon Mar 6 11:04:26 2017  olamy:Joined the channel
Mon Mar 6 11:04:34 2017  Michael-O:tibor_, new tarball uploaded
Mon Mar 6 11:04:43 2017  Michael-O:# Created on 2017-03-06T11:34:41.067
Mon Mar 6 11:04:43 2017  Michael-O:Unexpected IOException with stream: 1488796481067 ForkedBooter PING timer: plugin did not send me NOOP signal > exit
Mon Mar 6 13:10:05 2017  Michael-O:Joined the channel
Mon Mar 6 16:44:09 2017  tibor_:Michael-O: this is my change without environment variables?
Mon Mar 6 16:46:30 2017  tibor_:Michael-O: and this is also real box? The was which was always failing.
Mon Mar 6 16:56:18 2017  tibor_:Michael-O: The environment variables are empty. Therefore no difference so far. Question. Should the third elementbe surrounded with quotation marks? [/bin/sh, -c, 3rd element]
Mon Mar 6 17:00:48 2017  Michael-O:Yes, this is off your latast changes after you wrote me at 03:00
Mon Mar 6 17:00:56 2017  Michael-O:Everything run on the problematic real box
Mon Mar 6 17:01:16 2017  Michael-O:You cann three args to ProcessBuilder
Mon Mar 6 17:01:38 2017  Michael-O:all you need is the Java quotes, unless some of the subargs have spaces, you'll need single quotes
Mon Mar 6 17:30:59 2017  tibor_:Michael-O: I am asking about the quotes only because the ProcessBuilder.start() still runs 25 seconds on real box.
Mon Mar 6 17:31:41 2017  tibor_:This is from Utils: [/bin/sh, -c, cd .. && java -jar ..] I see in logs.
Mon Mar 6 17:32:01 2017  Michael-O:Arrays.toSTring() does not print the quotes from a String
Mon Mar 6 17:32:15 2017  Michael-O:it invokes #toString() on the objects
Mon Mar 6 17:32:26 2017  Michael-O:Is 25 s too much for that case?
Mon Mar 6 17:32:35 2017  tibor_:Do you think that [/bin/sh, -c, 'cd .. && java -jar ..'] is correct or ""
Mon Mar 6 17:33:15 2017  Michael-O:Outout to stdout or in Java Code?
Mon Mar 6 17:33:29 2017  tibor_:start() method in our test code runs 30 milliseconds
Mon Mar 6 17:34:42 2017  Michael-O:Which test did you read?
Mon Mar 6 17:34:48 2017  Michael-O:I'll check the log file
Mon Mar 6 17:35:40 2017  tibor_:line 8993
Mon Mar 6 17:35:42 2017  tibor_:in log
Mon Mar 6 17:36:39 2017  tibor_:The qoutes ["] are printed from this code Arrays.toString(new String[] {"\""})
Mon Mar 6 17:37:24 2017  Michael-O:I see 1488796495709 and 1488796505673 ForkStarter NOOP before a loop
Mon Mar 6 17:37:27 2017  Michael-O:10 seconds diff
Mon Mar 6 17:37:41 2017  tibor_:which lines?
Mon Mar 6 17:38:25 2017  Michael-O:8993 and 8997
Mon Mar 6 17:38:36 2017  Michael-O:or should it be 9002?
Mon Mar 6 17:39:05 2017  Michael-O:23,6 s then
Mon Mar 6 17:39:20 2017  tibor_:but the NOOP is not sent physically
Mon Mar 6 17:39:28 2017  tibor_:These events go to cache
Mon Mar 6 17:39:41 2017  tibor_:and when the streams are ready
Mon Mar 6 17:39:59 2017  tibor_:the events to physically out from cache to the physical stream
Mon Mar 6 17:40:04 2017  Michael-O:so which is the first list after the forked VM is running
Mon Mar 6 17:40:05 2017  Michael-O:?
Mon Mar 6 17:40:18 2017  tibor_:let me see
Mon Mar 6 17:40:26 2017  Michael-O:9004, right?
Mon Mar 6 17:40:34 2017  Michael-O:and 9007
Mon Mar 6 17:42:25 2017  tibor_:line 9037
Mon Mar 6 17:42:43 2017  tibor_:there is waitFor
Mon Mar 6 17:43:26 2017  tibor_:before|after waitFor() the process should run
Mon Mar 6 17:43:31 2017  Michael-O:Ok, stays with 23,6 s
Mon Mar 6 17:43:36 2017  Michael-O:is this too much?
Mon Mar 6 17:43:42 2017  Michael-O:the VM is running the tests
Mon Mar 6 17:44:25 2017  tibor_:the particular IT does not run any tests [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
Mon Mar 6 17:45:05 2017  Michael-O:I ran rerun of course and we see new times
Mon Mar 6 17:45:25 2017  Michael-O:but even if it takes 23 s, this should matter as long as the communication is fine
Mon Mar 6 17:45:26 2017  tibor_:the whole problem is that start() method waits 25 seconds. Expected is cca 30 milliseconds and expected is that waitFor() should take longer time than start()
Mon Mar 6 17:45:49 2017  Michael-O:This is the edge case why it considers the VM to be dead?
Mon Mar 6 17:47:38 2017  tibor_:The communication is not ready between lines 8991 - 9006 because the start(): Process method hangs and does not return Process object. Notice that Process object has getOutputStream().
Mon Mar 6 17:48:10 2017  tibor_:Unless the start(0 method return immediatelly no communication and no command can be sent "run this tect class"
Mon Mar 6 17:49:15 2017  tibor_:NOOp which you see is only logger that ForkStarter pushed NOOP event to ArrayList from which JVM must take events and process it
Mon Mar 6 17:49:31 2017  tibor_:It is easy.
Mon Mar 6 17:49:39 2017  tibor_:or?
Mon Mar 6 17:49:56 2017  tibor_:What is difficult here to understand?
Mon Mar 6 17:50:55 2017  Michael-O:I am not familiar with the code, let me re-read the log file.
Mon Mar 6 17:54:46 2017  Michael-O:Now I see it
Mon Mar 6 17:54:47 2017  Michael-O:right
Mon Mar 6 17:54:56 2017  Michael-O:It takes too much time to start the VM
Mon Mar 6 17:56:54 2017  Michael-O:Can we investigate here somehow?
Mon Mar 6 17:58:54 2017  tibor_:yes Michael, I am back now.
Mon Mar 6 17:59:09 2017  Michael-O:ok
Mon Mar 6 17:59:18 2017  tibor_:what should I do?
Mon Mar 6 18:01:38 2017  Michael-O:The first question is, does it really matter? I mean, what if the VM really needs 25 s for several tests. Our code waits?
Mon Mar 6 18:01:52 2017  Michael-O:Where is the limit? I can push up and see if this solves the issue.
Mon Mar 6 18:03:56 2017  Michael-O:I get the same startup time for ForkModeIT_testForkCountTwoReuse
Mon Mar 6 18:05:50 2017  tibor_:But the forked JVM does not know anything about tests ti run unless the plugin tells. The point is that two or more JVM steal the tests from the queue. As fast as the individual JVMs are they ask for next test and plugin directively tells "this is your test class". This is parallelism. The faster JVM takes acquires more next classes to test.
Mon Mar 6 18:06:53 2017  Michael-O:I know, but my question was rather is there a timeout for the plugin waiting for the forked VM to ask for the first test?
Mon Mar 6 18:09:31 2017  tibor_:2 x 10 sec, where 10 sec is PING period. Simply the streams are not available, therefore PING is not received, test is not received, and no events are received, and after two waiting periods or PING the JVM kills itself. There is no timeout you think of but the PING takes care of killing JVM which is the same like you killed Maven process.
Mon Mar 6 18:11:05 2017  tibor_:The other tests pass because they have test set specified in properties file.
Mon Mar 6 18:11:34 2017  tibor_:So not all tests (reuseForks=false) need this mechanism of test class delivery.
Mon Mar 6 18:12:17 2017  tibor_:That's the reason why start() method takes long in other ITs but no issue is visible.
Mon Mar 6 18:13:27 2017  tibor_:As long as you put 30 sec delay to a test where reuseForks=false, you will see same problem.
Mon Mar 6 18:13:50 2017  tibor_:exit 0 no good bye sent. The same problem will happen.
Mon Mar 6 18:14:20 2017  Michael-O:I understand. We probably won't find out why stdout is blocked?
Mon Mar 6 18:15:01 2017  tibor_:Is the command and quotes ok coming from Utils?
Mon Mar 6 18:15:52 2017  tibor_:If there is no such issue, then we should grab target/surefire/* and examine apart.
Mon Mar 6 18:16:32 2017  tibor_:there is all the jar files, properties files, and after the tests are done everything is deleted, so we have to be fast to copy content.
Mon Mar 6 18:17:05 2017  tibor_:If CLI is alright then the jar or something is bad.
Mon Mar 6 18:17:25 2017  tibor_:we can execute the jar file from our test code.
Mon Mar 6 18:18:02 2017  tibor_:Maybe some path to local repo in manifest is wrong.
Mon Mar 6 18:18:34 2017  Michael-O:Stackoverflow, is full of this: http://stackoverflow.com/q/3285408/696632 http://stackoverflow.com/a/16983613/696632 http://stackoverflow.com/q/16838039/696632
Mon Mar 6 18:18:40 2017  Michael-O:Can't we disable deletion?
Mon Mar 6 18:19:26 2017  tibor_:I dont remember where it is deleted.
Mon Mar 6 18:19:54 2017  tibor_:I think in AbstractSurefireMojo
Mon Mar 6 18:20:23 2017  tibor_:yes, it is deleted after Mojo's execute() has returned
Mon Mar 6 18:21:29 2017  Michael-O:Answer from SO: Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, or even deadlock.
Mon Mar 6 18:21:49 2017  Michael-O:There is maybe a flush missing from the forked VM
Mon Mar 6 18:21:56 2017  tibor_:Regarding http://stackoverflow.com/questions/3285408/java-processbuilder-resultant-process-hangs, we commented out main() and used delay, and the start() still took 3 seconds to complete.
Mon Mar 6 18:22:39 2017  tibor_:We can check it out again with the most trivial case.
Mon Mar 6 18:23:17 2017  tibor_:yes, but you know why it hangs if I do not use streams.
Mon Mar 6 18:23:59 2017  Michael-O:Sounds good to me.
Mon Mar 6 18:24:01 2017  tibor_:and why it does not hang on the same machine
Mon Mar 6 18:24:07 2017  tibor_:with test code
Mon Mar 6 18:24:22 2017  Michael-O:Maybe the buffers overspill and get flushed?
Mon Mar 6 18:25:45 2017  tibor_:Let's see what the real surefire.jar does with empty main(). The difference between real jar and our test is the classpath
Mon Mar 6 18:26:49 2017  tibor_:If we grab the surefire.jar we can test it in CLI and remove classpath and untill start() wont hang.
Mon Mar 6 18:27:10 2017  tibor_:step by step simplify jar until it works and we will have it
Mon Mar 6 18:29:29 2017  tibor_:I have to go.
Mon Mar 6 18:29:33 2017  Michael-O:Good approach, I am sure it is with the streams
Mon Mar 6 18:29:35 2017  Michael-O:no problem
Mon Mar 6 18:29:37 2017  Michael-O:I am dinner now
Mon Mar 6 18:29:41 2017  tibor_:i am still in the office
Mon Mar 6 18:29:44 2017  Michael-O:will be back in an hour
Mon Mar 6 18:36:35 2017  rfscholte:Joined the channel
Mon Mar 6 20:00:36 2017  jieryn:Joined the channel
Mon Mar 6 20:13:41 2017  tibor_:Joined the channel
Mon Mar 6 20:26:09 2017  Michael-O:tibor_, I am ready when you are.
Mon Mar 6 20:27:09 2017  tibor_:I am just watching my ebaning. Why there is not much money :)
Mon Mar 6 20:27:16 2017  tibor_:ebanking
Mon Mar 6 20:29:19 2017  tibor_:Michael-O: Do you have any questions to the logs or something you would like to clarify?
Mon Mar 6 20:30:59 2017  Michael-O:Let me sum up, we have noticed that the startup takes way too long. VMs are started, obtain test cases, properly terminate, but the plugin does not notice that and reports an error.
Mon Mar 6 20:31:02 2017  Michael-O:Is that correct?
Mon Mar 6 20:31:46 2017  tibor_:Almost.
Mon Mar 6 20:32:06 2017  Michael-O:What's wrong?
Mon Mar 6 20:32:08 2017  tibor_:VMs do not obtain the event about which test to run.
Mon Mar 6 20:32:18 2017  Michael-O:They get it pushed?
Mon Mar 6 20:32:57 2017  tibor_:now i do not understand this sentence.
Mon Mar 6 20:33:07 2017  tibor_:who is they
Mon Mar 6 20:33:26 2017  Michael-O:The tests get pushed from plugin to the forked VM
Mon Mar 6 20:33:31 2017  Michael-O:tests = they
Mon Mar 6 20:36:06 2017  tibor_:In reality all tests are in classpath of VM, but the VM is waining on mutex lock until the reader thread sends event with class name to test. After this surefire-junit47 provider calls new JUnitCore().run(MyTestClass.class). This has never happened and the main thread is still waiting to be waken up.
Mon Mar 6 20:36:34 2017  tibor_:surefire-provider47 is in classpath of vm too
Mon Mar 6 20:37:41 2017  tibor_:the reader thread receives stream from System.in in the VM. Sorry because I wrote "sends"
Mon Mar 6 20:38:01 2017  tibor_:reader thread receives events
Mon Mar 6 20:38:28 2017  Michael-O:After the forked VM sent its properties, the forker starts to send test cases, right?
Mon Mar 6 20:38:56 2017  tibor_:you mean ForkStarter
Mon Mar 6 20:39:31 2017  Michael-O:Yes
Mon Mar 6 20:39:52 2017  tibor_:That's the purpose of ForkStarter and other like creating jar file and launching it
Mon Mar 6 20:40:36 2017  Michael-O:ok
Mon Mar 6 20:40:47 2017  tibor_:but in hese three buggy tests the ForkStarter could no handle the stream from Process, so could not send test case name to run on the other side
Mon Mar 6 20:41:46 2017  Michael-O:Yes, that is what I understood from your analysis. The forked process is blocked due to a stream issue
Mon Mar 6 20:42:16 2017  tibor_:yes
Mon Mar 6 20:43:01 2017  tibor_:I hope I remember the situation correctly
Mon Mar 6 20:43:09 2017  tibor_:when main () was empty
Mon Mar 6 20:43:11 2017  Michael-O:We can't consume them earlier than after start()
Mon Mar 6 20:43:23 2017  tibor_:the streams?
Mon Mar 6 20:43:48 2017  Michael-O:yes
Mon Mar 6 20:43:49 2017  tibor_:no because the java api does not have such possiility
Mon Mar 6 20:45:24 2017  Michael-O:but the process builder gives you ways to manipulate IO from the forked process, did you check Javadoc=
Mon Mar 6 20:45:26 2017  Michael-O:?
Mon Mar 6 20:45:48 2017  tibor_:you mean to redirect?
Mon Mar 6 20:46:01 2017  Michael-O:Yes
Mon Mar 6 20:46:09 2017  tibor_:i have never doen this
Mon Mar 6 20:46:42 2017  tibor_:it can be redirected to file of host stdout
Mon Mar 6 20:48:19 2017  Michael-O:I am looking at this: https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.Redirect.html
Mon Mar 6 20:48:33 2017  Michael-O:Are we currently using the PIPE approach?
Mon Mar 6 20:54:17 2017  tibor_:We do not use it like that.
Mon Mar 6 20:54:30 2017  Michael-O:First of all, let's try to disable delete, this should be cheap
Mon Mar 6 20:55:55 2017  tibor_:if we redirected to a file, then how you handle the new data in the file. Mostly it will be EOF. So a timer comes to my mind which would periodically read the end of the file but the periods will slow down the communication.
Mon Mar 6 20:56:49 2017  Michael-O:We should stick to PIPE
Mon Mar 6 20:58:10 2017  tibor_:is it possible to redirect to java heap of host?
Mon Mar 6 20:59:13 2017  Michael-O:You can say INHERIT, but I do not if this is what you want
Mon Mar 6 21:00:23 2017  tibor_:i am just reading the javadoc
Mon Mar 6 21:00:58 2017  tibor_:no no
Mon Mar 6 21:01:30 2017  tibor_:forks must e isolated, and even mvn -T2C install may messup streams if inherited
Mon Mar 6 21:01:52 2017  Michael-O:ok, makes sense
Mon Mar 6 21:02:16 2017  tibor_:I will disable deletion
Mon Mar 6 21:15:08 2017  tibor_:deletion is disabled now
Mon Mar 6 21:17:35 2017  Michael-O:pulled and running
Mon Mar 6 21:28:34 2017  Michael-O:JARs are still deleted
Mon Mar 6 21:33:40 2017  tibor_:file.deleteOnExit();
Mon Mar 6 21:35:04 2017  tibor_:try now pls
Mon Mar 6 21:35:25 2017  Michael-O:got it, runnning
Mon Mar 6 21:45:38 2017  Michael-O:tests finished
Mon Mar 6 21:46:12 2017  Michael-O:I have checked testForkCountTwoReuse
Mon Mar 6 21:49:01 2017  Michael-O:the pure VM requires 5 seconds to start
Mon Mar 6 21:49:05 2017  Michael-O:measured with time(1)
Mon Mar 6 21:50:41 2017  tibor_:not sure what VM and what you are doing
Mon Mar 6 21:51:09 2017  Michael-O:I took the echoed /bin/sh -c command with multiple args passed to the VM
Mon Mar 6 21:51:17 2017  Michael-O:Saw the dumped proeprties and waiting for a command
Mon Mar 6 21:51:19 2017  tibor_:aha, ok
Mon Mar 6 21:51:37 2017  Michael-O:typed an invalid commit, shortly after the VM exited with Stream is corrupted
Mon Mar 6 21:51:46 2017  Michael-O:but startup takes time
Mon Mar 6 21:52:07 2017  tibor_:exception?
Mon Mar 6 21:52:16 2017  tibor_:Stream is corrupted?
Mon Mar 6 21:52:22 2017  tibor_:In reader thread?
Mon Mar 6 21:52:39 2017  Michael-O:MasterProcessCommand
Mon Mar 6 21:52:45 2017  tibor_:yes
Mon Mar 6 21:52:47 2017  Michael-O:I do not know the proper values for a command
Mon Mar 6 21:53:00 2017  Michael-O:What would be valid command to simulate this?
Mon Mar 6 21:53:19 2017  tibor_:I will lookup
Mon Mar 6 21:55:57 2017  tibor_:MasterProcessCommandTest
Mon Mar 6 21:56:07 2017  tibor_:public void testEncodedDecodedIsSameForRunClass()
Mon Mar 6 21:56:13 2017  tibor_:it is binary stream
Mon Mar 6 21:56:49 2017  tibor_:ended with \n
Mon Mar 6 21:58:21 2017  tibor_:assertThat( encoded[7], is( (byte) 8 ) ); means that the fully qualified class name length is 8
Mon Mar 6 22:06:19 2017  Michael-O:I might have found a possible issue
Mon Mar 6 22:06:36 2017  Michael-O:Please open ForkingRunListener.java
Mon Mar 6 22:06:40 2017  Michael-O:Line 219
Mon Mar 6 22:07:03 2017  tibor_:dumping exception?
Mon Mar 6 22:07:16 2017  Michael-O:yes
Mon Mar 6 22:07:29 2017  Michael-O:Exceptions from stdout
Mon Mar 6 22:08:01 2017  tibor_:out.getFD().sync(); was our hack which is not in master
Mon Mar 6 22:08:18 2017  tibor_:one month ago:)
Mon Mar 6 22:08:34 2017  Michael-O:I will disable this line and check
Mon Mar 6 22:08:47 2017  tibor_:does it come from this line or the line above?
Mon Mar 6 22:09:01 2017  tibor_:L211 or 212?
Mon Mar 6 22:09:15 2017  Michael-O:I do not know, I do not have the strace, will print
Mon Mar 6 22:09:38 2017  tibor_:This is not in master either: FileOutputStream out = new FileOutputStream( FileDescriptor.out );
Mon Mar 6 22:12:06 2017  tibor_:instead of .dumpStreamText( "Unexpected IOException with stream: " + new String( buf, off, len ) );, we can use .dumpStreamException( e, "Unexpected IOException with stream: " + new String( buf, off, len ) );
Mon Mar 6 22:14:19 2017  Michael-O:OK, just a second
Mon Mar 6 22:14:22 2017  Michael-O:changed code
Mon Mar 6 22:25:58 2017  Michael-O:Are you certain that dumpStreamException dumps the stracktrace?
Mon Mar 6 22:29:15 2017  tibor_:DumpFileUtils.java
Mon Mar 6 22:29:22 2017  tibor_:L60
Mon Mar 6 22:29:26 2017  Michael-O:I'll try here another test
Mon Mar 6 22:29:26 2017  tibor_:why?
Mon Mar 6 22:29:35 2017  Michael-O:There is no stracktrace printed
Mon Mar 6 22:29:58 2017  Michael-O:Don't worry, running another test now
Mon Mar 6 22:32:14 2017  tibor_:maybe we should revert the FileDescriptor
Mon Mar 6 22:32:28 2017  tibor_:and use System.out as in master
Mon Mar 6 22:33:05 2017  Michael-O:Let me verify one thing
Mon Mar 6 22:33:09 2017  Michael-O:I think this will be the output
Mon Mar 6 22:33:17 2017  Michael-O:the fd out gives us no benefit
Mon Mar 6 22:37:33 2017  Michael-O:OK, please go ahead and revert
Mon Mar 6 22:37:45 2017  Michael-O:it didn't improve anything
Mon Mar 6 22:50:24 2017  tibor_:something wrong happened with access to git-wip-us
Mon Mar 6 22:50:38 2017  tibor_:push failed
Mon Mar 6 22:52:29 2017  tibor_:now it is ok
Mon Mar 6 22:52:48 2017  tibor_:4f9536010473051fa38080cc323e69cb8a2fdc2d
Mon Mar 6 22:54:24 2017  tibor_:Did you cd to the place where IT resides and triggered the jvm, or you copied the jar and all the staff somewhere else?
Mon Mar 6 22:54:35 2017  Michael-O:I did a full cd
Mon Mar 6 22:54:53 2017  tibor_:try to git pull
Mon Mar 6 22:55:39 2017  tibor_:maybe install -DskipTests
Mon Mar 6 22:55:59 2017  Michael-O:did already
Mon Mar 6 22:56:00 2017  Michael-O:running
Mon Mar 6 22:56:03 2017  tibor_:mvn -o
Mon Mar 6 23:10:11 2017  Michael-O:running for a second time now
Mon Mar 6 23:14:39 2017  Michael-O:tests completed
Mon Mar 6 23:14:44 2017  Michael-O:No IOExceptions anymore
Mon Mar 6 23:15:40 2017  tibor_:cool
Mon Mar 6 23:15:53 2017  Michael-O:I will check startup time
Mon Mar 6 23:15:54 2017  tibor_:so yuo used shell cli
Mon Mar 6 23:18:19 2017  Michael-O:Via Surefire, it is still 23 s
Mon Mar 6 23:18:25 2017  Michael-O:let me try shell directly
Mon Mar 6 23:19:33 2017  Michael-O:again 5 s
Mon Mar 6 23:19:52 2017  Michael-O:So I assume that we do not correctly handle stdio
Mon Mar 6 23:21:07 2017  tibor_:aha
Mon Mar 6 23:21:32 2017  tibor_:you think the run_class command was not received in stdin?
Mon Mar 6 23:21:53 2017  Michael-O:All I see here is N,0,want more!
Mon Mar 6 23:21:57 2017  Michael-O:VM is wainting for commands
Mon Mar 6 23:22:12 2017  Michael-O:Yes, I think that stdin is not filled correctly
Mon Mar 6 23:22:16 2017  Michael-O:something is blocking
Mon Mar 6 23:22:24 2017  Michael-O:maybe stdout is not fully consumed
Mon Mar 6 23:22:43 2017  tibor_:and you made something like java -jar ... < instream
Mon Mar 6 23:22:59 2017  Michael-O:cd .. && java -jar
Mon Mar 6 23:23:05 2017  Michael-O:I copied the whole command
Mon Mar 6 23:23:07 2017  Michael-O:1:1
Mon Mar 6 23:23:10 2017  Michael-O:no changes to in
Mon Mar 6 23:23:29 2017  Michael-O:stdin was populated via tty (keyboard) here
Mon Mar 6 23:23:52 2017  tibor_:tty is command?
Mon Mar 6 23:24:04 2017  Michael-O:tty is terminal
Mon Mar 6 23:24:05 2017  Michael-O:physical
Mon Mar 6 23:24:17 2017  Michael-O:like my SSH session with a keyboard
Mon Mar 6 23:24:22 2017  tibor_:so it means the jvm received the in stream
Mon Mar 6 23:24:31 2017  Michael-O:yes
Mon Mar 6 23:24:31 2017  Michael-O:https://linux.die.net/man/3/isatty
Mon Mar 6 23:24:48 2017  tibor_:but it was not recognized
Mon Mar 6 23:25:11 2017  tibor_:we should diagnose the reader
Mon Mar 6 23:25:15 2017  tibor_:log4j
Mon Mar 6 23:25:21 2017  tibor_:or logger
Mon Mar 6 23:25:25 2017  Michael-O:No no, I sent rubbish to the stdin
Mon Mar 6 23:25:33 2017  Michael-O:just wanted to make sure that it is read at all
Mon Mar 6 23:25:36 2017  Michael-O:and it is read
Mon Mar 6 23:26:21 2017  tibor_:but we do not have benefit from rubbish
Mon Mar 6 23:26:39 2017  tibor_:we should send the correct binary form
Mon Mar 6 23:26:49 2017  Michael-O:We do here because our question was startup time first
Mon Mar 6 23:26:56 2017  Michael-O:can you send me a proper binary file via email?
Mon Mar 6 23:27:16 2017  tibor_:i will
Mon Mar 6 23:30:12 2017  tibor_:pls let me know the class name including package you need to run
Mon Mar 6 23:30:13 2017  Michael-O:could we have some race conditions between output reader and stdin feeder?
Mon Mar 6 23:30:32 2017  Michael-O:testForkCountTwoReuse
Mon Mar 6 23:37:18 2017  tibor_:email went out
Mon Mar 6 23:41:48 2017  tibor_:race condition you mean in Utils?
Mon Mar 6 23:42:26 2017  Michael-O:Yes, in utils.
Mon Mar 6 23:42:29 2017  Michael-O:No mail yet
Mon Mar 6 23:42:32 2017  Michael-O:maybe in spam
Mon Mar 6 23:44:06 2017  Michael-O:Do you actually consume stderr?
Mon Mar 6 23:44:30 2017  tibor_:michaelo@apache.org
Mon Mar 6 23:45:28 2017  Michael-O:there it is
Mon Mar 6 23:46:23 2017  tibor_:sent again a zip file
Mon Mar 6 23:48:32 2017  Michael-O:test run
Mon Mar 6 23:48:42 2017  Michael-O:stdin properly fed
Mon Mar 6 23:48:46 2017  Michael-O:4,5 s
Mon Mar 6 23:48:58 2017  tibor_:wow
Mon Mar 6 23:49:47 2017  tibor_:dod you see many stdout
Mon Mar 6 23:50:45 2017  Michael-O:RUN_CLASS
Mon Mar 6 23:50:47 2017  tibor_:system property in stdout: I,1,java.vm.vendor,Oracle Corporation
Mon Mar 6 23:50:48 2017  Michael-O:NOOP timer
Mon Mar 6 23:50:52 2017  Michael-O:alls properties
Mon Mar 6 23:50:58 2017  Michael-O:stdin blocks for input
Mon Mar 6 23:51:07 2017  Michael-O:input fed, Z,0,BYE!
Mon Mar 6 23:51:44 2017  Michael-O:yes, vm.vendor is also there
Mon Mar 6 23:53:22 2017  tibor_:do you see these lines?
Mon Mar 6 23:53:24 2017  tibor_:1,
Mon Mar 6 23:53:27 2017  tibor_:5,
Mon Mar 6 23:53:34 2017  tibor_:test set started
Mon Mar 6 23:53:38 2017  tibor_:test started
Mon Mar 6 23:54:04 2017  Michael-O:No
Mon Mar 6 23:54:14 2017  Michael-O:BYE comes directy after the props
Mon Mar 6 23:54:31 2017  tibor_:after 4,5s ?
Mon Mar 6 23:55:03 2017  Michael-O:Yes
Mon Mar 6 23:55:09 2017  tibor_:it was fast
Mon Mar 6 23:55:10 2017  tibor_:so
Mon Mar 6 23:55:23 2017  tibor_:something wrong with reade?
Mon Mar 6 23:55:28 2017  tibor_:reader
Mon Mar 6 23:56:37 2017  Michael-O:you are seding \0\0\0\0\0\0\0.forkMode.Test1
Mon Mar 6 23:57:06 2017  tibor_:the first dot should be 14
Mon Mar 6 23:57:12 2017  tibor_:binary 14
Mon Mar 6 23:57:30 2017  tibor_:size of (forkMode.Test1) = 14
Mon Mar 6 23:57:45 2017  tibor_:first 7 bytes are zeros
Mon Mar 6 23:57:51 2017  Michael-O:correct
Mon Mar 6 23:58:25 2017  tibor_:I used MasterProcessCommandTest, and called Files.write()
Mon Mar 6 23:58:39 2017  tibor_:it is junit test
Mon Mar 6 23:59:23 2017  tibor_:let me see ForkedBooter
Mon Mar 6 23:59:53 2017  tibor_:there is sleep(3000)

Comments