Observed suvbersion repo checkout issue

Recently I setup our phabricator. It imported one existed subversion repo as one observed repo. Our sshd setup for phabricator works to run “ssh -p 2222 -T scmauto@phabricator.filemaker.com” and get phabricator welcome message. However we failed to run svn checkout cmd for this observed subversion repo.

Does anyone have similar experience for observed subversion repo checkout?

Thanks,

Jianhui

@jianhui_he can you provide the full error message that you are seeing? That will help to figure out what the issue is.

1 Like

I have below setup in my .ssh/config
Host phabricator.corporation.com
Port 2222
IdentityFile ~/.ssh/id_rsa

In our phabricator’s diffusion observed subversion, it showed below checkout command.
svn checkout svn+ssh://scmauto@phabricator.filemaker.com:2222/source/Current Current

So I run below command in my local host.
svn checkout svn+ssh://scmauto@phabricator.filemaker.com/source/Current Current
scmauto@phabricator.filemaker.com’s password:
Killed by signal 15.
svn: E170013: Unable to connect to a repository at URL 'svn+ssh://scmauto@phabricator.filemaker.com/source/Current’
svn: E210005: No repository found in ‘svn+ssh://scmauto@phabricator.filemaker.com/source/Current’

Our phabricator is installed in one CentOS-7 linux host. I setup “scmauto” as vcs-user. No matter if I setup this “scmauto” account with “NP” or set one password for it, this svn command always asked for password for scmauto. If I run “ssh -p 2222 -T scmauto@phabricator.filemaker.com”, it won’t ask for any password.

If I ran below svn cmd, it got different message.
svn checkout svn+ssh://scmauto@phabricator.filemaker.com/source/Current Current --config-option="config:tunnels:ssh=ssh -p 2222"
The authenticity of host ‘[phabricator.filemaker.com]:2222 ([17.184.84.85]:2222)’ can’t be established.
ECDSA key fingerprint is SHA256:jwAgcN0TCr3qGNy6Wn0eZXc94w3SZVko62q/0FLQ8oo.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[phabricator.filemaker.com]:2222,[17.184.84.85]:2222’ (ECDSA) to the list of known hosts.
Checked out revision 0.
Killed by signal 15.

The checkout folder Current is empty.

It seems svn cmd couldn’t use my sshkey to connect phabricator 2222 ports.

If I browse this observed subversion repo’s subfolder in diffusion, it ran into below message.
Unhandled Exception (“RuntimeException”)
Undefined variable: compare

I’m not sure if those two issues are related to one common configuration issue or not?

In our phabricator error log fie, it recored below message for this browse issue.

[Thu Jul 13 15:57:02.951697 2017] [:error] [pid 31022] [client 17.184.103.239:51488] [2017-07-13 15:57:02] EXCEPTION: (RuntimeException) Undefined variable: compare at [/src/error/PhutilErrorHandler.php:210]
[Thu Jul 13 15:57:02.952459 2017] [:error] [pid 31022] [client 17.184.103.239:51488] arcanist(head=master, ref.master=c04f141ab023), phabricator(head=master, ref.master=e516358d54d2), phutil(head=master, ref.master=0a4487d37cd7)
[Thu Jul 13 15:57:02.952477 2017] [:error] [pid 31022] [client 17.184.103.239:51488] #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer, array) called at [/src/applications/diffusion/controller/DiffusionBrowseController.php:1703]
[Thu Jul 13 15:57:02.952482 2017] [:error] [pid 31022] [client 17.184.103.239:51488] #1 <#2> DiffusionBrowseController::getActions(DiffusionSvnRequest) called at [/src/applications/diffusion/controller/DiffusionBrowseController.php:326]
[Thu Jul 13 15:57:02.952487 2017] [:error] [pid 31022] [client 17.184.103.239:51488] #2 <#2> DiffusionBrowseController::browseDirectory(DiffusionBrowseResultSet, PHUIPagerView) called at [/src/applications/diffusion/controller/DiffusionBrowseController.php:53]
[Thu Jul 13 15:57:02.952492 2017] [:error] [pid 31022] [client 17.184.103.239:51488] #3 <#2> DiffusionBrowseController::handleRequest(AphrontRequest) called at [/src/aphront/configuration/AphrontApplicationConfiguration.php:268]
[Thu Jul 13 15:57:02.952497 2017] [:error] [pid 31022] [client 17.184.103.239:51488] #4 phlog(RuntimeException) called at [/src/aphront/handler/PhabricatorDefaultRequestExceptionHandler.php:41]
[Thu Jul 13 15:57:02.952501 2017] [:error] [pid 31022] [client 17.184.103.239:51488] #5 PhabricatorDefaultRequestExceptionHandler::handleRequestThrowable(AphrontRequest, RuntimeException) called at [/src/aphront/configuration/AphrontApplicationConfiguration.php:680]
[Thu Jul 13 15:57:02.952520 2017] [:error] [pid 31022] [client 17.184.103.239:51488] #6 AphrontApplicationConfiguration::handleThrowable(RuntimeException) called at [/src/aphront/configuration/AphrontApplicationConfiguration.php:273]
[Thu Jul 13 15:57:02.952525 2017] [:error] [pid 31022] [client 17.184.103.239:51488] #7 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [/src/aphront/configuration/AphrontApplicationConfiguration.php:181]
[Thu Jul 13 15:57:02.952530 2017] [:error] [pid 31022] [client 17.184.103.239:51488] #8 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [/webroot/index.php:17]

In our existed subversion repo, there are some files whose size is over 8M bites. I’m not sure if it caused those two issues or not?

That error specifically (Undefined variable: compare) is already fixed at HEAD.

Verified this observed subversion repo browse issue had been fixed. Thanks!

But checkout issue is still there.

I just find that the first svn checkout cmd didn’t work because it didn’t using 2222 as ssh port.

The second svn checkout cmd is correctly connecting phabricator’s 2222 ssh port but it still failed to do svn checkout.

Our observed subversion repo uses “Import Only” setup. Today I created another observed subversion repo from the same svnroot and import only another folder. When I run below svn cmd, it ran into below message.
svn checkout svn+ssh://scmauto@phabricator.filemaker.com/source/FMV16 --config-option=“config:tunnels:ssh=ssh -p 2222” FMV16
Killed by signal 15.
svn: E170013: Unable to connect to a repository at URL 'svn+ssh://scmauto@phabricator.filemaker.com/source/FMV16’
svn: E210005: No repository found in ‘svn+ssh://scmauto@phabricator.filemaker.com/source/FMV16’

It means it can’t find that observed subversion repo ‘svn+ssh://scmauto@phabricator.filemaker.com/source/FMV16’.

However for the first our observed subversion repo checkout, it gave the different message. I think the reason might be that I tried to set that repo as one mirror repo before. But its svn checkout cmd only checkout one empty folder. It looks like we can’t run svn checkout cmd for one observed subversion repo.

Hope my information can help you to debug this issue.

Thanks a lot!

1 Like

I added “-vvv” into svn checkout cmd’s "–config-option=“config:tunnels:ssh=ssh -p 2222 -vvv”, it gave more ssh debug information below.
debug1: Authentication succeeded (publickey).
Authenticated to phabricator.filemaker.com ([17.184.84.85]:2222).
debug2: fd 6 setting O_NONBLOCK
debug2: fd 7 setting O_NONBLOCK
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Requesting no-more-sessions@openssh.com
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: network
debug3: receive packet: type 4
debug1: Remote: Forced command.
debug3: receive packet: type 4
debug1: Remote: Port forwarding disabled.
debug3: receive packet: type 4
debug1: Remote: X11 forwarding disabled.
debug3: receive packet: type 4
debug1: Remote: Agent forwarding disabled.
debug3: receive packet: type 4
debug1: Remote: Pty allocation disabled.
debug3: receive packet: type 4
debug1: Remote: Forced command.
debug3: receive packet: type 4
debug1: Remote: Port forwarding disabled.
debug3: receive packet: type 4
debug1: Remote: X11 forwarding disabled.
debug3: receive packet: type 4
debug1: Remote: Agent forwarding disabled.
debug3: receive packet: type 4
debug1: Remote: Pty allocation disabled.
debug3: receive packet: type 91
debug2: callback start
debug2: fd 5 setting TCP_NODELAY
debug3: ssh_packet_set_tos: set IP_TOS 0x08
debug2: client_session2_setup: id 0
debug1: Sending command: svnserve -t
debug2: channel 0: request exec confirm 1
debug3: send packet: type 98
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: exec request accepted on channel 0
debug2: channel 0: read<=0 rfd 6 len 0
debug2: channel 0: read failed
debug2: channel 0: close_read
debug2: channel 0: input open -> drain
debug3: send packet: type 1
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
#0 client-session (t4 r0 i1/0 o0/0 fd -1/7 cc -1)

debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Killed by signal 15.
svn: E170013: Unable to connect to a repository at URL 'svn+ssh://scmauto@phabricator.filemaker.com/source/FMV16’
svn: E210005: No repository found in ‘svn+ssh://scmauto@phabricator.filemaker.com/source/FMV16’

From my last reply, my svn command did send “svnserve -t” but read failed. Now that I can browse my observed subversion source files, why I can’t check them out?

To check out observed subversion repo, should I run “svnserve” daemon in phabricator host?

It seems my svn command already setup one ssh tunnel and run “svnserve -t” to try to connect to my svn repo but its read failed. The issue should be in phabricator server side.

where is phabricator subversion path? /var/repo? I set storage.local-disk.path /var/repo

In my understanding, all subversion source files and their histories are stored in /var/lib/mysql/ibdata1. How can “svnserve -t” command to connect them as svn checkout?

Also I tried to delete my subversion repo and redo importing them. It seems my disk space usage in phabricator has been doubled. It means after deleting one phabricator repo, it didn’t free disk space from phabricator host.

From https://secure.phabricator.com/Q265, I don’t think I can checkout out one observed subversion repo. After stopping observing, I still need import svn commits into /var/repo/* folder.

Now that phabricator has been imports everything into mysql database, why it can’t auto import all commits into its svn repo?

SVN doesn’t work like that. To migrate a subversion repository to Phabricator, you’ll need to create a new repository and use svnsync. See https://secure.phabricator.com/book/phabricator/article/diffusion_existing/

1 Like

Thanks avivey.

Yes. I just ready your answer in Q265 and find that we have to manually run svnsync for subversion repo.

Today I tested to run arc diff and found that it worked on my local svn checkout folder from our existed svn repo. Last week I tried to test it but it failed. So I guess it only worked on svn checkout folder from phabricator repo. Now I needn’t do svn checkout from our observed subversion repo.