-
Notifications
You must be signed in to change notification settings - Fork 762
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
CVS history fails for very large projects #943
Comments
What does it mean: e.g. you have a checkout of single branch in every subdir like: I also suggest to move away from CVS, it's 2015 already ;) |
-T - and make it as low as possible, e.g. 1 or 2 |
Is the CVS Root remote or local ? |
Thanks for the quick responses. @tarzanek you are right, inside src_root/ there are multiple branches of same CVS parent. They contact the same CVS repo. As I mentioned above reducing the number of threads -T 1 doesn't work at all. I am editing bin/Opengrok and adding -T 1 to the command line arguments section there as passing ./Opengrok index <src_root> -T 1 is not working at all. I know CVS is a pain in the ***, but my local build team is heavily dependent on it and moving to something like git may take easily an year. @vladak our CVS Root is a remote server. The baffling part is how it could fail silently ? I searched few forums where there was a similar problem with Mercurial. The solution suggested was to reduce timeout for non-response timeout timer (possibly in Opengrok), though, it was not mentioned where to change it in Opengrok |
It's definitely weird that logs do not give any hints whatsoever. I'd try simulating this on command line - start with one repo and keep adding. One hypothesis would be that CVS server gives up silently and truncates the log output. Also, how long does each of these |
Also, for the cases where CVS HistoryException with exitcode 1 is thrown could you share the log context ? |
I did a small experiment. My laptop has 4 virtual CPUs; according to
which correspond to the
so it was possible to see every command executed (okay, I could get that with However, there is one noticeable thing. Since cset 3ad4470 (also see the changes for #516) the history for CVS repository with branches is determined using
the output of which will contain zero history entries - as opposed to the command without |
I understand the prob is with scalability ... the other option is to index history one by one anyways worst case rename the CVS dir under every branch, then rename back just for one branch, reindex, then rename CVS again, and enable some other dir, reindex ... |
Hi, I tried the same thing as @tarzanek . It works perfectly fine for smaller folder checkout as proof of concept but spectacularly fails for the original case. However, these have come in tomcat logs 22-May-2015 10:29:44.997 SEVERE [Thread-7] org.opensolaris.opengrok.util.Executor$1.run Error during process pipe listening
java.io.IOException: Stream closed
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:170)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:291)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.opensolaris.opengrok.util.Executor$SpoolHandler.processStream(Executor.java:323)
at org.opensolaris.opengrok.util.Executor$1.run(Executor.java:151)
at java.lang.Thread.run(Thread.java:745)
22-May-2015 10:29:45.001 SEVERE [http-nio-8080-exec-3] org.opensolaris.opengrok.util.Executor.exec Failed to read from process: /usr/bin/cvs
java.io.IOException: Stream closed
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:170)
at java.io.BufferedInputStream.read(BufferedInputStream.java:336)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.readLine(BufferedReader.java:324)
at java.io.BufferedReader.readLine(BufferedReader.java:389)
at org.opensolaris.opengrok.history.CVSHistoryParser.processStream(CVSHistoryParser.java:142)
at org.opensolaris.opengrok.util.Executor.exec(Executor.java:178)
at org.opensolaris.opengrok.history.CVSHistoryParser.parse(CVSHistoryParser.java:163)
at org.opensolaris.opengrok.history.CVSRepository.getHistory(CVSRepository.java:262)
at org.opensolaris.opengrok.history.FileHistoryCache.get(FileHistoryCache.java:490)
at org.opensolaris.opengrok.history.HistoryGuru.getHistory(HistoryGuru.java:229)
at org.opensolaris.opengrok.history.HistoryGuru.getHistoryUI(HistoryGuru.java:200)
at org.apache.jsp.history_jsp._jspService(history_jsp.java:413)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:403)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:347)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:78)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1033)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
22-May-2015 10:29:45.002 WARNING [http-nio-8080-exec-3] org.opensolaris.opengrok.util.Executor.exec Non-zero exit status 1 from command [/usr/bin/cvs, log, -rHEAD] in directory /home/srpg/Source/HEAD/panos
|
well I don't have any big cvs project anymore ... (on java debugging try here: http://stackoverflow.com/questions/138511/what-are-java-command-line-options-to-set-to-allow-jvm-to-be-remotely-debugged ) once you've observer what happens inside code we will be smarter (and I can try to dig up that old repo, but I doubt I will find it and that its server will still work) |
Hi, I found the error of the issue and resolved it. Thanks for pointing out to see the command getting sent in logs of indexing data. If one does How to fix the issue ?do a cvs checkout as Hence, the cvs server is not working properly. There is no problem with Opengrok. |
It depends on what is correct for CVS or what do the users expect. Certainly we can modify the history executor for CVS to treat |
@vladak well yes, we have to see what is correct for CVS. However, I did not get what is meant by treating HEAD in a special way ? For Opengrok, it was just another tag through which it fetched. It was the CVS server, which did not provide correct info on running the command with tag. Also, I couldn't find a way to close the issue so please close it yourself. |
I mean if the branch of the repo is |
http://versioncontrol.wikia.com/wiki/List_history_on_branch following the above link i tried 'cvs log -r::HEAD', it fetches complete history as we expect it to be. PS: i tried everything manual on my cvs code. introducing scope resolution operator might solve the problem with opengrok (not tested). |
We are trying to deploy Opengrok in our office environment. Opengrok is programmed to index our project and multiple branches, all under the same project folder. Everything works fine except for History. We are using CVS for version control.
What is happening ?
From extensive test trials of checking out branches one by one and indexing sequentially to changing memory footprint and number of running threads of Opengrok, nothing has worked. Some posts on StackOverflow hint that CVS might be getting overwhelmed by parallel requests by HistoryExecutioner and reducing number of threads may solve this. But it also has not solved this .
What could be the issue here ?
The text was updated successfully, but these errors were encountered: