You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Branko Čibej <br...@wandisco.com> on 2014/04/06 22:33:51 UTC

Strange ACTUAL_NODE record

I have the immense privilege to be able to debug a wc.db that was
upgraded to the 1.8 format using our code from a 1.7 format created by
SVNKit. It's mostly plain sailing, but on this happy occasion I'm seeing
a rather strange record in the database, both before and after the upgrade:

$ sqlite3 wc.db
SQLite version 3.8.4.1 2014-03-11 15:27:36
Enter ".help" for usage hints.
sqlite> .nullvalue "(nul)"
sqlite> SELECT * FFROM NODES WHERE local_relpath = "dir/file";
1|dir/file|0|DisplayServer|1|trunk/dir/file|5796|normal|(nul)|(nul)|file|(svn:keywords 23 Author Date Id Revision svn:eol-style CRLF)|(nul)|$sha1$d4f0f7a37ff21bb3d1ce58ed5906b93351d7c87c|(nul)|4832|1338401677262718|theauthor|1032|1338550831496845|(nul)|(nul)|(nul)
sqlite> SELECT * FROM ACTUAL_NODE;
1|dir/file|dir|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)

The thing I don't understand is: how can we have an ACTUAL_NODE record
with all the flags nulled out, and an op_depth=0 record in NODES at the
same time?

Note that the record first appeared in the wc.db created by SVNKit, but
our WC upgrade left it untouched. Unfortunately I have only the wc.db
files, not the whole working copy.

-- Brane


-- 
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane@wandisco.com

Re: Strange ACTUAL_NODE record

Posted by Branko Čibej <br...@wandisco.com>.
On 06.04.2014 16:23, Bert Huijben wrote:
> We won’t ADD empty actual records, but we only remove them in a few
> places and upgrade is not one of these places.
>
> There are only very minor changes between the 1.7 and 1.8 formats and
> we don't perform a full state check on upgrade (we don’t even have a
> way to represent a full node state with all layers in ram)… And an
> actual node record with just NULL values is just inefficient, not
> really incorrect.

Thanks! That's all I really needed to know.

-- Brane

> *From:* Branko Čibej <ma...@wandisco.com>
> *Sent:* ‎Sunday‎, ‎April‎ ‎6‎, ‎2014 ‎10‎:‎33‎ ‎PM
> *To:* dev@subversion.apache.org <ma...@subversion.apache.org>
>
> I have the immense privilege to be able to debug a wc.db that was
> upgraded to the 1.8 format using our code from a 1.7 format created by
> SVNKit. It's mostly plain sailing, but on this happy occasion I'm
> seeing a rather strange record in the database, both before and after
> the upgrade:
> $ sqlite3 wc.db
> SQLite version 3.8.4.1 2014-03-11 15:27:36
> Enter ".help" for usage hints.
> sqlite> .nullvalue "(nul)"
> sqlite> SELECT * FFROM NODES WHERE local_relpath = "dir/file";
> 1|dir/file|0|DisplayServer|1|trunk/dir/file|5796|normal|(nul)|(nul)|file|(svn:keywords 23 Author Date Id Revision svn:eol-style CRLF)|(nul)|$sha1$d4f0f7a37ff21bb3d1ce58ed5906b93351d7c87c|(nul)|4832|1338401677262718|theauthor|1032|1338550831496845|(nul)|(nul)|(nul)
> sqlite> SELECT * FROM ACTUAL_NODE;
> 1|dir/file|dir|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)
> The thing I don't understand is: how can we have an ACTUAL_NODE record
> with all the flags nulled out, and an op_depth=0 record in NODES at
> the same time?
>
> Note that the record first appeared in the wc.db created by SVNKit,
> but our WC upgrade left it untouched. Unfortunately I have only the
> wc.db files, not the whole working copy.
>
> -- Brane
>
>
> -- 
> Branko Čibej | Director of Subversion
> WANdisco // Non-Stop Data
> e. brane@wandisco.com


-- 
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane@wandisco.com

Re: Strange ACTUAL_NODE record

Posted by Bert Huijben <be...@qqmail.nl>.
We won’t ADD empty actual records, but we only remove them in a few places and upgrade is not one of these places. 


There are only very minor changes between the 1.7 and 1.8 formats and we don't perform a full state check on upgrade (we don’t even have a way to represent a full node state with all layers in ram)… And an actual node record with just NULL values is just inefficient, not really incorrect.




Bert


Sent from Windows Mail





From: Branko Čibej
Sent: ‎Sunday‎, ‎April‎ ‎6‎, ‎2014 ‎10‎:‎33‎ ‎PM
To: dev@subversion.apache.org




I have the immense privilege to be able to debug a wc.db that was upgraded to the 1.8 format using our code from a 1.7 format created by SVNKit. It's mostly plain sailing, but on this happy occasion I'm seeing a rather strange record in the database, both before and after the upgrade:
$ sqlite3 wc.db
SQLite version 3.8.4.1 2014-03-11 15:27:36
Enter ".help" for usage hints.
sqlite> .nullvalue "(nul)"
sqlite> SELECT * FFROM NODES WHERE local_relpath = "dir/file";
1|dir/file|0|DisplayServer|1|trunk/dir/file|5796|normal|(nul)|(nul)|file|(svn:keywords 23 Author Date Id Revision svn:eol-style CRLF)|(nul)|$sha1$d4f0f7a37ff21bb3d1ce58ed5906b93351d7c87c|(nul)|4832|1338401677262718|theauthor|1032|1338550831496845|(nul)|(nul)|(nul)
sqlite> SELECT * FROM ACTUAL_NODE;
1|dir/file|dir|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)

The thing I don't understand is: how can we have an ACTUAL_NODE record with all the flags nulled out, and an op_depth=0 record in NODES at the same time?

Note that the record first appeared in the wc.db created by SVNKit, but our WC upgrade left it untouched. Unfortunately I have only the wc.db files, not the whole working copy.

-- Brane



-- 
Branko Čibej | Director of Subversion 
WANdisco // Non-Stop Data 
e. brane@wandisco.com