History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: IDEA-9938
Type: Bug Bug
Status: Open Open
Assignee: Dmitry Jemerov
Reporter: Maxim Drobintsev
Votes: 1
Watchers: 4
Operations

If you were logged in you would be able to see more operations.
IDEA: Feedback

Native Perforce API does not work with P4CONFIG on Linux

Created: 12 Oct 06 20:24   Updated: 08 Sep 07 06:27
Component/s: Version Control Integration. Perforce

File Attachments: 1. Text File PerforcePWDFix.patch (1 kb)

Environment:
Linux x86
Sun JDK 1.5.0_06

Build: 6,041
Severity: Medium


 Description  « Hide
If I try to use native Perforce API with P4CONFIG on Linux IntelliJ Perforce plugin gives me the error "Perforce password (P4PASSWD) invalid or unset". This error happens when I execute commands such as Perforce:Show history.

Here is what I see in the idea console output when using P4CONFIG with the Native API:

com.intellij.openapi.vcs.VcsException: Perforce password (P4PASSWD) invalid or unset.

at org.jetbrains.idea.perforce.perforce.PerfCommands.checkError(PerfCommands.java:1630)
at org.jetbrains.idea.perforce.perforce.PerfCommands.p4getRevisions(PerfCommands.java:924)
at org.jetbrains.idea.perforce.application.PerforceVcsHistoryProvider.createSessionFor(PerforceVcsHistoryProvider.java:99)
at com.intellij.openapi.vcs.impl.AbstractVcsHelperImpl.showFileHistory(AbstractVcsHelperImpl.java:205)
at com.intellij.openapi.vcs.actions.TabbedShowHistoryAction.actionPerformed(TabbedShowHistoryAction.java:20)
at com.intellij.openapi.vcs.actions.AbstractVcsAction.actionPerformed(AbstractVcsAction.java:22)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:5)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:18)
at com.intellij.ui.plaf.beg.BegMenuItemUI.a(BegMenuItemUI.java:50)
at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:112)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:7)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:41)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:131)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:174)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
java.io.EOFException: input contained no data
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2982)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3025)
at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1410)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:363)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:45)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:67)
[ Show » ]
Maxim Drobintsev [11 Oct 06 22:07] Here is what I see in the idea console output when using P4CONFIG with the Native API: com.intellij.openapi.vcs.VcsException: Perforce password (P4PASSWD) invalid or unset. at org.jetbrains.idea.perforce.perforce.PerfCommands.checkError(PerfCommands.java:1630) at org.jetbrains.idea.perforce.perforce.PerfCommands.p4getRevisions(PerfCommands.java:924) at org.jetbrains.idea.perforce.application.PerforceVcsHistoryProvider.createSessionFor(PerforceVcsHistoryProvider.java:99) at com.intellij.openapi.vcs.impl.AbstractVcsHelperImpl.showFileHistory(AbstractVcsHelperImpl.java:205) at com.intellij.openapi.vcs.actions.TabbedShowHistoryAction.actionPerformed(TabbedShowHistoryAction.java:20) at com.intellij.openapi.vcs.actions.AbstractVcsAction.actionPerformed(AbstractVcsAction.java:22) at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:5) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:18) at com.intellij.ui.plaf.beg.BegMenuItemUI.a(BegMenuItemUI.java:50) at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:112) at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:7) at java.awt.Component.processMouseEvent(Component.java:5488) at javax.swing.JComponent.processMouseEvent(JComponent.java:3126) at java.awt.Component.processEvent(Component.java:5253) at java.awt.Container.processEvent(Container.java:1966) at java.awt.Component.dispatchEventImpl(Component.java:3955) at java.awt.Container.dispatchEventImpl(Container.java:2024) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822) at java.awt.Container.dispatchEventImpl(Container.java:2010) at java.awt.Window.dispatchEventImpl(Window.java:1774) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:41) at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:131) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:174) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) java.io.EOFException: input contained no data at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2982) at org.xmlpull.mxp1.MXParser.more(MXParser.java:3025) at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1410) at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395) at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093) at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:363) at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:45) at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:67)

Here is what I see in p4.output when using P4CONFIG with the Native API:

infoErrCode=0
StdOut:------------
User name: maximd
Client name: miami
Client host: miami.corp.google.com
Client unknown.
Current directory: /usr/local/google/home/maximd/src-adsense3
Client address: 172.22.104.118:52412
Server address: xxx
Server root: /p4/root
Server date: 2006/10/11 11:12:08 -0700 PDT
Server version: P4D/LINUX24X86/2005.2.PATCH/100601 (2006/05/26)
Server license: XXX

StdErr:------------

End----------------
fstat /usr/local/google/home/maximd/XXX.javaErrCode=0
StdOut:------------

StdErr:------------
Perforce password (P4PASSWD) invalid or unset.

End----------------



 All   Comments   Work Log   Change History      Sort Order:
Maxim Drobintsev - 25 Oct 06 21:06
I have tried build #6068, native API still does not work with P4CONFIG on Linux. There is no exception in the idea console, though

fstst shows this error:

StdErr:------------
Perforce password (P4PASSWD) invalid or unset.

End----------------

Thanks,
Maxim.


Vladislav Kaznacheev - 20 Dec 06 13:26
Maxim, is this still an issue?

Maxim Drobintsev - 20 Dec 06 20:05
Hi Vladislav,

Yes, it is still an issue (I just checked with build 6140).

It is interesting to note that if I enable p4.output logging and do "Test connection" with native API then I see TWO p4 info commands in the log file, the first saying "Client unknown." and the second showing correct client name. If I do not use native API then there is only one p4 info in the log file that shows corect client name.

NB: I use p4 wrapper script to make P4CONFIG work on Linux without native API:

#!/bin/sh
exec p4 $*

I also get this exception in the IDEA console if I do Perforce:Show history with Native API:

com.intellij.openapi.vcs.VcsException: Perforce password (P4PASSWD) invalid or unset.

at org.jetbrains.idea.perforce.perforce.PerfCommands.checkError(PerfCommands.java:1639)
at org.jetbrains.idea.perforce.perforce.PerfCommands.p4getRevisions(PerfCommands.java:933)
at org.jetbrains.idea.perforce.application.PerforceVcsHistoryProvider.createSessionFor(PerforceVcsHistoryProvider.java:99)
at com.intellij.openapi.vcs.impl.AbstractVcsHelperImpl.showFileHistory(AbstractVcsHelperImpl.java:202)
at com.intellij.openapi.vcs.actions.TabbedShowHistoryAction.actionPerformed(TabbedShowHistoryAction.java:24)
at com.intellij.openapi.vcs.actions.AbstractVcsAction.actionPerformed(AbstractVcsAction.java:12)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:9)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:18)
at com.intellij.ui.plaf.beg.BegMenuItemUI.a(BegMenuItemUI.java:159)
at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:145)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:1)
at java.awt.Component.processMouseEvent(Component.java:5501)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
at java.awt.Component.processEvent(Component.java:5266)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3968)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1778)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:173)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:130)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:174)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Don't you see the same things yourself on Linux?

Regards,
Maxim


Brian Slesinsky - 07 Sep 07 07:52
This fix sets the PWD environment variable, which allows Perforce to find the right .p4config file. This patch only fixes the command-line client, but the native API should be similar. It should apply cleanly to head in subversion.

Dmitry Jemerov - 07 Sep 07 17:01
Brian,

I've applied your patch, thanks a lot!


Brian Slesinsky - 08 Sep 07 06:27
Great. Should I make a patch for the Perforce native client as well, or is JetBrains doing that?

BTW, when forking a process on Linux in other situations (such as to run external tools), it is probably a good idea to make PWD match the current directory as well, so perhaps this could be done centrally.