svn:keyords causes NullPointerException in SVNKit

Answered

Hi,

I would like to use the "built-in" svn client of phpStorm instead of the command line client, but this is currently not possible.

I am seeing [1. stacktrace] in the phpStorm log file when I try to commit new files (PhpStorm 2016.1.2 on Windows 7 64bit).

The [2. stacktrace] is written, when I try to delete or edit the “svn:keywords” property on any of the new files. I can change or delete this property on other files though. Changing other svn properties works fine on both “new” and “old” files.

When phpStorm uses the command line client, the commit works fine and I am able to set, delete or change the “svn:keywords” property on any files. The command line client is “svn, Version 1.7.22-SlikSvn-1.7.22-X64 (SlikSvn/1.7.22) X64”.

Please let me know if you need additional info. Thanks in advance for you help!

[1. stacktrace]

2016-07-12 12:57:24,473 [ 954315] WARN - ConfigurableExtensionPointUtil - ignore deprecated groupId: editor for id: editor.preferences.import
2016-07-12 12:57:52,880 [ 982722] ERROR - pi.vcs.changes.ui.CommitHelper - null

java.lang.NullPointerException
            at org.tmatesoft.svn.core.internal.wc17.SVNWCContext.expandKeywords(SVNWCContext.java:1084)
            at org.tmatesoft.svn.core.internal.wc17.SVNWCContext.getTranslateInfo(SVNWCContext.java:1046)
            at org.tmatesoft.svn.core.internal.wc17.SVNWCContext.getTranslateInfo(SVNWCContext.java:1027)
            at org.tmatesoft.svn.core.internal.wc17.SVNWCContext.getTranslatedStream(SVNWCContext.java:2988)
            at org.tmatesoft.svn.core.internal.wc17.SVNCommitter17.transmitTextDeltas(SVNCommitter17.java:391)
            at org.tmatesoft.svn.core.internal.wc17.SVNCommitter17.sendTextDeltas(SVNCommitter17.java:361)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCommit.doRun(SvnNgCommit.java:245)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCommit.run(SvnNgCommit.java:144)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCommit.run(SvnNgCommit.java:39)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgOperationRunner.run(SvnNgOperationRunner.java:20)
            at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21)
            at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235)
            at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            at org.tmatesoft.svn.core.wc2.SvnCommit.run(SvnCommit.java:198)
            at org.tmatesoft.svn.core.wc.SVNCommitClient.doCommit(SVNCommitClient.java:990)
            at org.tmatesoft.svn.core.wc.SVNCommitClient.doCommit(SVNCommitClient.java:894)
            at org.jetbrains.idea.svn.checkin.SvnKitCheckinClient.commit(SvnKitCheckinClient.java:57)
            at org.jetbrains.idea.svn.checkin.SvnCheckinEnvironment.doCommitOneRepo(SvnCheckinEnvironment.java:111)
            at org.jetbrains.idea.svn.checkin.SvnCheckinEnvironment.doCommit(SvnCheckinEnvironment.java:92)
            at org.jetbrains.idea.svn.checkin.SvnCheckinEnvironment.commit(SvnCheckinEnvironment.java:194)
            at com.intellij.openapi.vcs.changes.ui.CommitHelper$CommitProcessor.process(CommitHelper.java:428)
            at com.intellij.openapi.vcs.changes.ChangesUtil.processItemsByVcs(ChangesUtil.java:376)
            at com.intellij.openapi.vcs.changes.ChangesUtil.processChangesByVcs(ChangesUtil.java:381)
            at com.intellij.openapi.vcs.changes.ui.CommitHelper$CommitProcessor.callSelf(CommitHelper.java:417)
            at com.intellij.openapi.vcs.changes.ui.CommitHelper.e(CommitHelper.java:258)
            at com.intellij.openapi.vcs.changes.ui.CommitHelper.access$400(CommitHelper.java:60)
            at com.intellij.openapi.vcs.changes.ui.CommitHelper$2$1.run(CommitHelper.java:160)
            at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.java:142)
            at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:446)
            at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:443)
            at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:392)
            at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
            at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:127)
            at com.intellij.openapi.vcs.changes.ui.CommitHelper$2.run(CommitHelper.java:156)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
            at java.util.concurrent.FutureTask.run(FutureTask.java:266)
            at com.intellij.util.concurrency.BoundedTaskExecutor$2.run(BoundedTaskExecutor.java:187)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
            at java.lang.Thread.run(Thread.java:745)

2016-07-12 12:57:52,882 [ 982724] ERROR - pi.vcs.changes.ui.CommitHelper - PhpStorm 2016.1.2 Build #PS-145.1616.3
2016-07-12 12:57:52,882 [ 982724] ERROR - pi.vcs.changes.ui.CommitHelper - JDK: 1.8.0_92
2016-07-12 12:57:52,882 [ 982724] ERROR - pi.vcs.changes.ui.CommitHelper - VM: Java HotSpot(TM) 64-Bit Server VM
2016-07-12 12:57:52,882 [ 982724] ERROR - pi.vcs.changes.ui.CommitHelper - Vendor: Oracle Corporation
2016-07-12 12:57:52,882 [ 982724] ERROR - pi.vcs.changes.ui.CommitHelper - OS: Windows 7
2016-07-12 12:57:52,882 [ 982724] ERROR - pi.vcs.changes.ui.CommitHelper - Last Action: ChangesView.Commit

[2. stacktrace]

2016-07-12 12:59:21,817 [1071659] ERROR - llij.ide.plugins.PluginManager - null

java.lang.NullPointerException
            at org.tmatesoft.svn.core.internal.wc17.SVNWCContext.getKeyWords(SVNWCContext.java:1016)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgPropertiesManager.setProperty(SvnNgPropertiesManager.java:331)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgPropertiesManager.setProperty(SvnNgPropertiesManager.java:229)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgSetProperty.run(SvnNgSetProperty.java:41)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgSetProperty.run(SvnNgSetProperty.java:17)
            at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgOperationRunner.run(SvnNgOperationRunner.java:20)
            at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21)
            at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235)
            at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
            at org.tmatesoft.svn.core.wc.SVNWCClient.doSetProperty(SVNWCClient.java:500)
            at org.jetbrains.idea.svn.properties.SvnKitPropertyClient.setProperty(SvnKitPropertyClient.java:89)
            at org.jetbrains.idea.svn.dialogs.PropertiesComponent$BasePropertyAction.setProperty(PropertiesComponent.java:278)
            at org.jetbrains.idea.svn.dialogs.PropertiesComponent$DeletePropertyAction.actionPerformed(PropertiesComponent.java:331)
            at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:191)
            at com.intellij.openapi.actionSystem.impl.ActionButton.a(ActionButton.java:162)
            at com.intellij.openapi.actionSystem.impl.ActionButton.a(ActionButton.java:126)
            at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:300)
            at java.awt.Component.processEvent(Component.java:6298)
            at java.awt.Container.processEvent(Container.java:2236)
            at java.awt.Component.dispatchEventImpl(Component.java:4889)
            at java.awt.Container.dispatchEventImpl(Container.java:2294)
            at java.awt.Component.dispatchEvent(Component.java:4711)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
            at java.awt.Container.dispatchEventImpl(Container.java:2280)
            at java.awt.Window.dispatchEventImpl(Window.java:2746)
            at java.awt.Component.dispatchEvent(Component.java:4711)
            at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
            at java.awt.EventQueue.access$500(EventQueue.java:97)
            at java.awt.EventQueue$3.run(EventQueue.java:709)
            at java.awt.EventQueue$3.run(EventQueue.java:703)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
            at java.awt.EventQueue$4.run(EventQueue.java:731)
            at java.awt.EventQueue$4.run(EventQueue.java:729)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
            at com.intellij.ide.IdeEventQueue.g(IdeEventQueue.java:857)
            at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:654)
            at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:386)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

2016-07-12 12:59:21,818 [1071660] ERROR - llij.ide.plugins.PluginManager - PhpStorm 2016.1.2 Build #PS-145.1616.3
2016-07-12 12:59:21,818 [1071660] ERROR - llij.ide.plugins.PluginManager - JDK: 1.8.0_92
2016-07-12 12:59:21,818 [1071660] ERROR - llij.ide.plugins.PluginManager - VM: Java HotSpot(TM) 64-Bit Server VM
2016-07-12 12:59:21,818 [1071660] ERROR - llij.ide.plugins.PluginManager - Vendor: Oracle Corporation
2016-07-12 12:59:21,818 [1071660] ERROR - llij.ide.plugins.PluginManager - OS: Windows 7

 

4 comments
Comment actions Permalink

This is just a guess, but it sounds somehow reasonable.

I spoke with our root-person and we came up with this explanation.

The client sends a prop-get to the server before committing the file. Since the file is new, the server responds with a 404 (not found).

Our guess is now, that earlier clients (such as the one in PhpStorm 9.0.2) would catch the exception and push the new file, and the newer cliens (>= phpStorm 10) would not.

Best regards.

0
Comment actions Permalink

Hi,

 

Both bugs are SNVKit issues: https://issues.tmatesoft.com/issue/SVNKIT-580https://issues.tmatesoft.com/issue/SVNKIT-583

We've fixed them in the upcoming IDE update (PhpStorm 2016.2)

 

1
Comment actions Permalink

Hi Dmitry,

thanks for the quick response!

0
Comment actions Permalink

You're welcome =)

0

Please sign in to leave a comment.