Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 323418

Summary: Subversive with SVN Kit Connector unusable under Linux + Mac OS X: always fails with "Unable to locate a login configuration"
Product: [Technology] Subversive Reporter: Reynald Borer <reynald.borer>
Component: CoreAssignee: Igor Burilo <igor.burilo>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: fransonsr, louis
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:

Description Reynald Borer CLA 2010-08-23 13:48:13 EDT
Version:	0.7.9.I20100512-1900

SVN Client:	org.eclipse.team.svn.connector.svnkit16 2.2.2.I20100512-1900 SVN/1.6.6 SVNKit/1.3.2 (http://svnkit.com/) r6267

JVM Properties:
{java.runtime.name=Java(TM) SE Runtime Environment, java.runtime.version=1.6.0_20-b02, java.vendor=Sun Microsystems Inc., line.separator= , java.class.version=50.0, os.name=Linux, os.arch=i386, user.country=US, os.version=2.6.33.5-124.fc13.i686.PAE, eclipse.commands=-os linux -ws gtk -arch x86 -showsplash -launcher /home/rbr/apps/sts-2.3.3.M2/STS -name STS --launcher.library /home/rbr/apps/sts-2.3.3.M2//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.0.v20100503/eclipse_1307.so -startup /home/rbr/apps/sts-2.3.3.M2//plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar -product com.springsource.sts.ide -Duser.language=en -Duser.region=CH -consoleLog -vm /opt/jdk1.6.0_20/bin/../jre/lib/i386/client/libjvm.so , java.version=1.6.0_20, osgi.framework.version=3.6.0.v20100517, file.separator=/, java.vm.info=mixed mode, sharing, path.separator=:, user.timezone=Europe/Zurich, user.language=en, java.vm.name=Java HotSpot(TM) Client VM, file.encoding=UTF-8}

java.lang.SecurityException: Unable to locate a login configuration
java.lang.SecurityException: Unable to locate a login configuration
	at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:93)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at javax.security.auth.login.Configuration$3.run(Configuration.java:247)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.login.Configuration.getConfiguration(Configuration.java:242)
	at javax.security.auth.login.LoginContext$1.run(LoginContext.java:237)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.login.LoginContext.init(LoginContext.java:234)
	at javax.security.auth.login.LoginContext.<init>(LoginContext.java:403)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPNegotiateAuthentication.initializeSubject(HTTPNegotiateAuthentication.java:138)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPNegotiateAuthentication.needsLogin(HTTPNegotiateAuthentication.java:238)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:550)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:275)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:263)
	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:516)
	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:98)
	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:999)
	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getRepositoryUUID(DAVRepository.java:146)
	at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:342)
	at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:330)
	at org.tmatesoft.svn.core.wc.SVNUpdateClient.update(SVNUpdateClient.java:535)
	at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:401)
	at org.tmatesoft.svn.core.javahl.SVNClientImpl.update(SVNClientImpl.java:683)
	at org.polarion.team.svn.connector.svnkit.SVNKitConnector.update(SVNKitConnector.java:284)
	at org.eclipse.team.svn.core.extension.factory.ThreadNameModifier.update(ThreadNameModifier.java:638)
	at org.eclipse.team.svn.core.operation.local.UpdateOperation$2.run(UpdateOperation.java:114)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doSubTask(ProgressMonitorUtility.java:118)
	at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:154)
	at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:149)
	at org.eclipse.team.svn.core.operation.local.UpdateOperation.runImpl(UpdateOperation.java:111)
	at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
	at org.eclipse.team.svn.core.operation.CompositeOperation.runImpl(CompositeOperation.java:95)
	at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
	at org.eclipse.team.svn.core.operation.LoggedOperation.run(LoggedOperation.java:39)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:90)
	at org.eclipse.team.svn.ui.utility.WorkspaceModifyCancellableOperationWrapper.execute(WorkspaceModifyCancellableOperationWrapper.java:58)
	at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:106)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:118)
	at org.eclipse.team.svn.ui.utility.SVNTeamOperationWrapper.run(SVNTeamOperationWrapper.java:35)
	at org.eclipse.team.internal.ui.actions.JobRunnableContext.run(JobRunnableContext.java:144)
	at org.eclipse.team.internal.ui.actions.JobRunnableContext$ResourceJob.runInWorkspace(JobRunnableContext.java:72)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.io.IOException: Unable to locate a login configuration
	at com.sun.security.auth.login.ConfigFile.init(ConfigFile.java:250)
	at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:91)
	... 50 more
Comment 1 Scott Franson CLA 2010-09-01 15:37:54 EDT
This occurs on Windows as well:

Version:	0.7.9.I20100512-1900

SVN Client:	org.eclipse.team.svn.connector.svnkit16 2.2.2.I20100512-1900 SVN/1.6.6 SVNKit/1.3.2 (http://svnkit.com/) r6267

JVM Properties:
{java.runtime.name=Java(TM) SE Runtime Environment, java.runtime.version=1.6.0_13-b03, java.vendor=Sun Microsystems Inc., line.separator=
 , java.class.version=50.0, os.name=Windows XP, os.arch=x86, user.country=US, os.version=5.1, eclipse.commands=-os win32 -ws win32 -arch x86 -showsplash -launcher C:\Program Files\Pulse\Profiles\MyEclipse 8.6\myeclipse.exe -name Myeclipse --launcher.library C:\Program Files\Pulse\Profiles\MyEclipse 8.6\../../Common/plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519\eclipse_1206.dll -startup C:\Program Files\Pulse\Profiles\MyEclipse 8.6\../../Common/plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar -install C:/Program Files/Pulse/Profiles/MyEclipse 8.6 -configuration configuration -clean -vm C:/Program Files/Pulse/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/bin/client/jvm.dll , java.version=1.6.0_13, osgi.framework.version=3.5.2.R35x_v20100126, file.separator=\, java.vm.info=mixed mode, path.separator=;, user.timezone=America/Denver, user.language=en, java.vm.name=Java HotSpot(TM) Client VM, file.encoding=Cp1252}

java.lang.SecurityException: Unable to locate a login configuration
java.lang.SecurityException: Unable to locate a login configuration
	at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:93)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at javax.security.auth.login.Configuration$3.run(Configuration.java:246)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.login.Configuration.getConfiguration(Configuration.java:241)
	at javax.security.auth.login.LoginContext$1.run(LoginContext.java:237)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.login.LoginContext.init(LoginContext.java:234)
	at javax.security.auth.login.LoginContext.<init>(LoginContext.java:403)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPNegotiateAuthentication.initializeSubject(HTTPNegotiateAuthentication.java:138)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPNegotiateAuthentication.needsLogin(HTTPNegotiateAuthentication.java:238)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:550)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:275)
	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:263)
	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doMakeActivity(DAVConnection.java:307)
	at org.tmatesoft.svn.core.internal.io.dav.DAVCommitEditor.createActivity(DAVCommitEditor.java:427)
	at org.tmatesoft.svn.core.internal.io.dav.DAVCommitEditor.openRoot(DAVCommitEditor.java:96)
	at org.tmatesoft.svn.core.internal.wc.SVNCommitUtil.driveCommitEditor(SVNCommitUtil.java:96)
	at org.tmatesoft.svn.core.internal.wc.SVNCommitter.commit(SVNCommitter.java:364)
	at org.tmatesoft.svn.core.wc.SVNCommitClient.doCommit(SVNCommitClient.java:1009)
	at org.tmatesoft.svn.core.javahl.SVNClientImpl.commit(SVNClientImpl.java:767)
	at org.polarion.team.svn.connector.svnkit.SVNKitConnector.commit(SVNKitConnector.java:266)
	at org.eclipse.team.svn.core.extension.factory.ThreadNameModifier.commit(ThreadNameModifier.java:98)
	at org.eclipse.team.svn.core.operation.local.CommitOperation$2.run(CommitOperation.java:124)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doSubTask(ProgressMonitorUtility.java:118)
	at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:154)
	at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:149)
	at org.eclipse.team.svn.core.operation.local.CommitOperation.performCommit(CommitOperation.java:122)
	at org.eclipse.team.svn.core.operation.local.CommitOperation.runImpl(CommitOperation.java:93)
	at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
	at org.eclipse.team.svn.core.operation.CompositeOperation.runImpl(CompositeOperation.java:95)
	at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
	at org.eclipse.team.svn.core.operation.LoggedOperation.run(LoggedOperation.java:39)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:90)
	at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:81)
	at org.eclipse.team.svn.ui.synchronize.action.AbstractSynchronizeLogicalModelAction$2$1.run(AbstractSynchronizeLogicalModelAction.java:345)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: java.io.IOException: Unable to locate a login configuration
	at com.sun.security.auth.login.ConfigFile.init(ConfigFile.java:250)
	at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:91)
	... 43 more
Comment 2 Louis Rose CLA 2010-12-10 04:27:11 EST
This is broken on Mac OS X too. I'm using Helios with:

  Subversive SVN Connectors	2.2.2.I20100512-1900 org.polarion.eclipse.team.svn.connector.feature.group

  SVNKit 1.3.2 Implementation (Optional)	2.2.2.I20100512-1900	org.polarion.eclipse.team.svn.connector.svnkit16.feature.group

And receive the same error message and stack trace in the error log.

I think the issue is to do with a change in the authentication method of SVNKit. The details are here (http://youtrack.jetbrains.net/issue/TW-10784), but briefly, the solution is to add the following to the Java VM args:

-Dsvnkit.http.methods=Basic

I did this by adding the line above to my eclipse.ini. This fixes the error, and Subversive works fine.
Comment 3 Reynald Borer CLA 2010-12-13 02:46:45 EST
Thanks for the parameter
-Dsvnkit.http.methods=Basic

It works perfectly (at least under Linux). 

Now in http://youtrack.jetbrains.net/issue/TW-10784 they suggest to change the order of authentication methods to fix this issue. Maybe the same fix could be applied to Eclipse.



(In reply to comment #2)
> This is broken on Mac OS X too. I'm using Helios with:
> 
>   Subversive SVN Connectors    2.2.2.I20100512-1900
> org.polarion.eclipse.team.svn.connector.feature.group
> 
>   SVNKit 1.3.2 Implementation (Optional)    2.2.2.I20100512-1900   
> org.polarion.eclipse.team.svn.connector.svnkit16.feature.group
> 
> And receive the same error message and stack trace in the error log.
> 
> I think the issue is to do with a change in the authentication method of
> SVNKit. The details are here (http://youtrack.jetbrains.net/issue/TW-10784),
> but briefly, the solution is to add the following to the Java VM args:
> 
> -Dsvnkit.http.methods=Basic
> 
> I did this by adding the line above to my eclipse.ini. This fixes the error,
> and Subversive works fine.
Comment 4 Alexander Gurov CLA 2012-09-07 04:22:11 EDT
"svnkit.http.methods=Basic" will be set by default now when SVN Kit plug-in is loaded, if the "svnkit.http.methods" property is not defined yet.