Commit f9dccac4 authored by Andrey Filippov's avatar Andrey Filippov
Browse files

Restored broken playback of log files

parent bf9e34c8
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -240,7 +240,7 @@ public class LaunchCore {
            		logBuildStamp);
            		logBuildStamp);
            if (VDTLaunchUtil.getRunner().getRunningBuilds().isAlreadyOpen(tool.getName())){
            if (VDTLaunchUtil.getRunner().getRunningBuilds().isAlreadyOpen(tool.getName())){
//           	System.out.println("LaunchCore:launch() tool="+tool.getName()+" was already open! Ignoring... ");
//           	System.out.println("LaunchCore:launch() tool="+tool.getName()+" was already open! Ignoring... ");
//            	return;
            	return;
            }
            }
//        	System.out.println("DebugUITools.launch() tool="+tool.getName()+" project="+project.getName()+" resource="+resource.toString()+" logBuildStamp="+logBuildStamp);
//        	System.out.println("DebugUITools.launch() tool="+tool.getName()+" project="+project.getName()+" resource="+resource.toString()+" logBuildStamp="+logBuildStamp);
            DebugUITools.launch(launchConfig, ILaunchManager.RUN_MODE);
            DebugUITools.launch(launchConfig, ILaunchManager.RUN_MODE);
+27 −5
Original line number Original line Diff line number Diff line
@@ -99,9 +99,14 @@ public class RunningBuilds {
	}
	}
	
	
	public void addMonListener(IConsole parserConsole, IStreamMonitor monitor, IStreamListener listener){
	public void addMonListener(IConsole parserConsole, IStreamMonitor monitor, IStreamListener listener){
		synchronized (parserListeners){
		if (parserListeners==null){
			parserListeners.put(parserConsole, new MonListener(monitor, listener));
			MessageUI.error("BUG in addMonListener(): parserListeners=null - enable breakpoints");
			System.out.println("BUG in addMonListener(): parserListeners=null");
			return;
		}
		}
//		synchronized (parserListeners){
			parserListeners.put(parserConsole, new MonListener(monitor, listener)); // java.lang.NullPointerException
//		}
	}
	}
	private void removeMonListener(IConsole parserConsole){
	private void removeMonListener(IConsole parserConsole){
		MonListener monListener;
		MonListener monListener;
@@ -209,7 +214,7 @@ public class RunningBuilds {
		while (iter.hasNext()) {
		while (iter.hasNext()) {
			String consoleName=iter.next();
			String consoleName=iter.next();
			if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_LAUNCHING)) {
			if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_LAUNCHING)) {
				System.out.print(i+": "+consoleName);
				System.out.println((i++)+": "+consoleName);
			}
			}
		
		
		}		
		}		
@@ -295,13 +300,30 @@ public class RunningBuilds {
			if (toolName.equals(runConfig.getToolName())){
			if (toolName.equals(runConfig.getToolName())){
				Tool tool=ToolsCore.getTool(runConfig.getToolName());
				Tool tool=ToolsCore.getTool(runConfig.getToolName());
//				tool.setRunning(false);
//				tool.setRunning(false);
	    		System.out.println("RunningBuilds#isAlreadyOpen("+toolName+"), state="+tool.getState()+" threadID="+Thread.currentThread().getId());
				if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_LAUNCHING)) { 
					System.out.println("RunningBuilds#isAlreadyOpen("+toolName+"), state="+tool.getState()+" consoleName="+
							consoleName+" threadID="+Thread.currentThread().getId()); // Reused old VDTRunner()
					for (String key:unfinishedBuilds.keySet()){
						System.out.println("Unfinished build: "+key);
					}
				}
	    		tool.setMode(TOOL_MODE.STOP);
	    		tool.setMode(TOOL_MODE.STOP);
				tool.toolFinished();
				tool.toolFinished();
				if (tool.getState()==TOOL_STATE.KEPT_OPEN) {
				if (tool.getState()==TOOL_STATE.KEPT_OPEN) {
					MessageUI.error("Termninal that starts by this tool ("+toolName+") is already open in console \""+consoleName+"\"");
					MessageUI.error("Termninal that starts by this tool ("+toolName+") is already open in console \""+consoleName+"\". You may close it manually.");
					tool.toolFinished();
					return true;
					return true;
				}
				}
	    		MessageUI.error("Something is wrong in RunningBuilds#isAlreadyOpen as the console for the specified tool "+tool.getName()+" is already open");
	    		tool.setState(TOOL_STATE.FAILURE);
				tool.toolFinished();
	    		return true;
			}
		}
		if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_LAUNCHING)) {
			System.out.println("RunningBuilds#isAlreadyOpen("+toolName+"), no match threadID="+Thread.currentThread().getId()); 
			for (String key:unfinishedBuilds.keySet()){
				System.out.println("Unfinished build: "+key+" tool "+unfinishedBuilds.get(key).getToolName());
			}
			}
		}
		}
		return false;
		return false;
+3 −2
Original line number Original line Diff line number Diff line
@@ -125,6 +125,7 @@ public class ToolLogFile {
	 * @param buildStamp if null - write log mode, "" - read link (latest) file, else - read that build stamp file 
	 * @param buildStamp if null - write log mode, "" - read link (latest) file, else - read that build stamp file 
	 */
	 */
	public ToolLogFile(
	public ToolLogFile(
			boolean writeMode,
			String logDir,
			String logDir,
			String logTool,
			String logTool,
			String logName,
			String logName,
@@ -141,7 +142,7 @@ public class ToolLogFile {
		targetOutIFile=null;
		targetOutIFile=null;
		targetErrIFile=null;
		targetErrIFile=null;
        debugPrint=VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_LAUNCHING);
        debugPrint=VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_LAUNCHING);
		boolean writeMode=(buildStamp==null);
//		boolean writeMode=(buildStamp==null);
		if (!hasOut && !hasErr){
		if (!hasOut && !hasErr){
			return; // nothing to do
			return; // nothing to do
		}
		}
@@ -181,7 +182,7 @@ public class ToolLogFile {
		targetErrIFile = singleFile? targetOutIFile : iLogFolder.getFile(baseNameErr+buildStampWithSep+ext);
		targetErrIFile = singleFile? targetOutIFile : iLogFolder.getFile(baseNameErr+buildStampWithSep+ext);
		
		
		if (writeMode) {
		if (writeMode) {
			outBytes=0; // jsut for debugging
			outBytes=0; // just for debugging
			errBytes=0;
			errBytes=0;
			byte [] emptyBA={};
			byte [] emptyBA={};


+1 −0
Original line number Original line Diff line number Diff line
@@ -95,6 +95,7 @@ public class VDTConsolePlayback{
        // Open logfiles for reading (if available)        
        // Open logfiles for reading (if available)        
        boolean twoFiles=(stdoutParser!=null) && (stderrParser!=null); 
        boolean twoFiles=(stdoutParser!=null) && (stderrParser!=null); 
        ToolLogFile toolLogFile=new ToolLogFile (
        ToolLogFile toolLogFile=new ToolLogFile (
        		        false,
        				runConfig.getLogDir(),
        				runConfig.getLogDir(),
        				runConfig.getToolName(),
        				runConfig.getToolName(),
        				buildParamsItem.getLogName(),
        				buildParamsItem.getLogName(),
+5 −2
Original line number Original line Diff line number Diff line
@@ -202,6 +202,7 @@ public class VDTConsoleRunner{
        String timeStamp=ToolsCore.getTool(runConfig.getToolName()).getTimeStamp();
        String timeStamp=ToolsCore.getTool(runConfig.getToolName()).getTimeStamp();
        toolLogFile=(((fSendOutputToStreamProxy!=null) || (fSendErrorsToStreamProxy!=null)))?
        toolLogFile=(((fSendOutputToStreamProxy!=null) || (fSendErrorsToStreamProxy!=null)))?
        		(new ToolLogFile (
        		(new ToolLogFile (
        				true,
        				runConfig.getLogDir(),
        				runConfig.getLogDir(),
        				runConfig.getToolName(),
        				runConfig.getToolName(),
        				buildParamsItem.getLogName(),
        				buildParamsItem.getLogName(),
@@ -259,11 +260,12 @@ public class VDTConsoleRunner{
        		}
        		}
        	}
        	}
        };
        };
        if (processOut!=null) VDTLaunchUtil.getRunner().getRunningBuilds().addMonListener( // to remove listener when parser is terminated
        if (processOut!=null) VDTLaunchUtil.getRunner().getRunningBuilds().addMonListener( // to remove listener when parser is terminated null pointer
        		DebugUITools.getConsole(processOut), //IConsole parserConsole,
        		DebugUITools.getConsole(processOut), //IConsole parserConsole,
        		consoleOutStreamMonitor,
        		consoleOutStreamMonitor,
        		outputListener);
        		outputListener);
        consoleOutStreamMonitor.addListener(outputListener );
        
        consoleOutStreamMonitor.addListener(outputListener ); // got frozen here
        //       }
        //       }
        // Problems occurred when invoking code from plug-in: "org.eclipse.ui.console".
        // Problems occurred when invoking code from plug-in: "org.eclipse.ui.console".
        // Exception occurred during console property change notification.
        // Exception occurred during console property change notification.
@@ -375,6 +377,7 @@ public class VDTConsoleRunner{
            	try {
            	try {
					Thread.sleep(VDTLaunchUtil.CLOSE_INPUT_STREAM_DELAY);
					Thread.sleep(VDTLaunchUtil.CLOSE_INPUT_STREAM_DELAY);
				} catch (InterruptedException e) {
				} catch (InterruptedException e) {
					System.out.println("Failed Thread.sleep  for "+ VDTLaunchUtil.CLOSE_INPUT_STREAM_DELAY);
				}
				}
    			stdoutStreamProxy.closeInputStream();
    			stdoutStreamProxy.closeInputStream();
			} catch (IOException e) {
			} catch (IOException e) {
Loading