| Summary: | [dstore] CodePageConverter error during source look up | ||
|---|---|---|---|
| Product: | [Tools] Target Management | Reporter: | Samuel Wu <samuelwu> |
| Component: | RSE | Assignee: | David McKnight <dmcknigh> |
| Status: | RESOLVED NOT_ECLIPSE | QA Contact: | Martin Oberhuber <mober.at+eclipse> |
| Severity: | normal | ||
| Priority: | P3 | CC: | dmcknigh |
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Windows XP | ||
| Whiteboard: | |||
|
Description
Samuel Wu
Did a bit of investigation which may help. Somehow the debugger generated two source lookup request on different thread at the same time as shown in the following stack trace. Thread [Worker-10] (Suspended (breakpoint at line 51 in DefaultFileServiceCodePageConverter)) DefaultFileServiceCodePageConverter.convertFileFromRemoteEncoding(String, File, String, String, IFileService) line: 51 DStoreFileService.download(String, String, File, boolean, String, IProgressMonitor) line: 847 FileServiceSubSystem.download(IRemoteFile, String, String, IProgressMonitor) line: 807 SystemEditableRemoteFile.doDownload(SystemIFileProperties, IProgressMonitor) line: 659 SystemEditableRemoteFile.download(IProgressMonitor) line: 638 AbstractRemoteSourceContainer$SearchSourceRunnable.run(IProgressMonitor) line: 623 AbstractRemoteSourceContainer$SearchRunnable.run() line: 475 RemoteFolderSourceContainer(AbstractRemoteSourceContainer).search(Shell, String, Object[]) line: 419 RemoteFolderSourceContainer(AbstractRemoteSourceContainer).findSourceElements(String) line: 316 PDTSourceLookupParticipant(AbstractSourceLookupParticipant).findSourceElements(Object) line: 67 PDTSourceLookupParticipant.findSource(Object) line: 154 PDTSourceLookupParticipant.findSourceElements(Object) line: 122 AbstractSourceLookupDirector$SourceLookupQuery.run() line: 141 SafeRunner.run(ISafeRunnable) line: 42 PDTSourceLookupDirector(AbstractSourceLookupDirector).doSourceLookup(Object) line: 490 PDTSourceLookupDirector(AbstractSourceLookupDirector).getSourceElement(Object) line: 758 SourceLookupFacility.lookup(Object, ISourceLocator) line: 148 DebugUITools.lookupSource(Object, ISourceLocator) line: 777 StackFrameSourceDisplayAdapter$SourceLookupJob.run(IProgressMonitor) line: 109 Worker.run() line: 54 Thread [Thread-25] (Running) Thread [TPFTool Command-line Interface Server] (Running) Thread [TPF Job Status Server] (Running) Daemon Thread [Java indexing] (Running) Daemon Thread [SSH] (Running) Thread [Thread-45] (Running) Thread [DStore UpdateHandlerThread-46] (Running) Thread [DStore CommandHandlerThread-47] (Running) Thread [DStore ReceiverThread-48] (Running) Thread [Worker-11] (Running) Thread [Worker-14] (Suspended (breakpoint at line 51 in DefaultFileServiceCodePageConverter)) DefaultFileServiceCodePageConverter.convertFileFromRemoteEncoding(String, File, String, String, IFileService) line: 51 DStoreFileService.download(String, String, File, boolean, String, IProgressMonitor) line: 847 FileServiceSubSystem.download(IRemoteFile, String, String, IProgressMonitor) line: 807 SystemEditableRemoteFile.doDownload(SystemIFileProperties, IProgressMonitor) line: 659 SystemEditableRemoteFile.download(IProgressMonitor) line: 638 AbstractRemoteSourceContainer$SearchSourceRunnable.run(IProgressMonitor) line: 623 AbstractRemoteSourceContainer$SearchRunnable.run() line: 475 RemoteFolderSourceContainer(AbstractRemoteSourceContainer).search(Shell, String, Object[]) line: 419 RemoteFolderSourceContainer(AbstractRemoteSourceContainer).findSourceElements(String) line: 316 PDTSourceLookupParticipant(AbstractSourceLookupParticipant).findSourceElements(Object) line: 67 PDTSourceLookupParticipant.findSource(Object) line: 154 PDTSourceLookupParticipant.findSourceElements(Object) line: 122 AbstractSourceLookupDirector$SourceLookupQuery.run() line: 141 SafeRunner.run(ISafeRunnable) line: 42 PDTSourceLookupDirector(AbstractSourceLookupDirector).doSourceLookup(Object) line: 490 PDTSourceLookupDirector(AbstractSourceLookupDirector).getSourceElement(Object) line: 758 SourceLookupFacility.lookup(Object, ISourceLocator) line: 148 DebugUITools.lookupSource(Object, ISourceLocator) line: 777 StackFrameSourceDisplayAdapter$SourceLookupJob.run(IProgressMonitor) line: 109 Worker.run() line: 54 The file was only download from the host once. When the first call to the method DefaultFileServiceCodePageConverter.convertFileFromRemoteEncoding() was made, the file in the RSE cache was of the host encoding (IBM-1047 if the source was on zOS) and the file was converted to the cp1252 successfully. When the second call was made to the method DefaultFileServiceCodePageConverter.convertFileFromRemoteEncoding(), the file was already in the cp1252 encoding because of the first call. So it failed with exception. RSE needs to be able to avoid this kind of situation. Forgot to mention that this is a problem found in RSE 3.2.1. By any chance does the fix for bug 324669 help with this one? We are actually on RSE-runtime-M20101006-1301.zip which contains the fix for bug 324669 but the problem still exists. I checked my runtime and it contains the fix. The problem is not fixed. RemoteFolderSourceContainer is going to be updated to avoid the second file download. The original issue is addressed outside Eclipse. I'm closing the bug. |