<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-745</id>
	<title>Nabble - Metakit</title>
	<updated>2007-03-18T14:53:18Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/Metakit-f745.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Metakit-f745.html" />
	<subtitle type="html">&lt;a href=&quot;http://www.equi4.com/metakit.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit&lt;/a&gt;&amp;nbsp;is an efficient embedded database library with a small footprint.</subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-9542799</id>
	<title>This mailing list is being moved.</title>
	<published>2007-03-18T14:53:18Z</published>
	<updated>2007-03-18T14:53:18Z</updated>
	<author>
		<name>jcw</name>
	</author>
	<content type="html">For various reasons, not in the least the fact that the amount of &amp;nbsp;
&lt;br&gt;email spam sent to the www.equi4.com server has reached quite a &amp;nbsp;
&lt;br&gt;bizarre level (the mail server *logs* are 5 Mb per day!), I have &amp;nbsp;
&lt;br&gt;decided to relocate this mailing list to another spot.
&lt;br&gt;&lt;br&gt;The new mailing list address is: &amp;nbsp; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9542799&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;metakit@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;The corresponding home page is: &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://groups.google.com/group/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.google.com/group/&lt;/a&gt;&amp;nbsp;
&lt;br&gt;metakit
&lt;br&gt;&lt;br&gt;Instead of signing up all 230+ members of this list myself and making &amp;nbsp;
&lt;br&gt;mistakes w.r.t. duplicates, alternate addresses, and such, I'll defer &amp;nbsp;
&lt;br&gt;to everyone who wishes to continu tracking posts about metakit to &amp;nbsp;
&lt;br&gt;visit the above site and sign up yourself. &amp;nbsp;It should be very quick &amp;nbsp;
&lt;br&gt;and easy to do.
&lt;br&gt;&lt;br&gt;The archives of &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9542799&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;metakit@...&lt;/a&gt; have been frozen and will remain &amp;nbsp;
&lt;br&gt;permanently at:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.equi4.com/pipermail/metakit/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/pipermail/metakit/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Email to this list will cease to work soon.
&lt;br&gt;&lt;br&gt;-jcw
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9542799&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/This-mailing-list-is-being-moved.-tp9542799p9542799.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-9294765</id>
	<title>Error with python</title>
	<published>2007-03-04T02:56:09Z</published>
	<updated>2007-03-04T02:56:09Z</updated>
	<author>
		<name>Javier Marquez-2</name>
	</author>
	<content type="html">Hello, &amp;nbsp;first I sorry my bad english.
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;I have this problem: when I execute this program on windows xp, python 2.4.3
&lt;br&gt;break it and end
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;import metakit
&lt;br&gt;&lt;br&gt;print metakit.version
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;db = metakit.storage(&amp;quot;ejemplo2.db&amp;quot;,1)
&lt;br&gt;&lt;br&gt;#crear tablas y anadir filas
&lt;br&gt;&lt;br&gt;&amp;quot;&amp;quot;&amp;quot;
&lt;br&gt;&lt;br&gt;vw = db.getas(&amp;quot;dpto[departamento:I,descripcion:S]&amp;quot;) 
&lt;br&gt;&lt;br&gt;vw.append(departamento=1,descripcion=&amp;quot;RRHH&amp;quot;)
&lt;br&gt;&lt;br&gt;vw.append(departamento=2,descripcion=&amp;quot;Comercial&amp;quot;)
&lt;br&gt;&lt;br&gt;db.commit()
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;vw = db.getas(&amp;quot;personal[id:I,nombre:S,departamento:I]&amp;quot;) 
&lt;br&gt;&lt;br&gt;vw.append(id=1,nombre=&amp;quot;javier marquez&amp;quot;, departamento=2)
&lt;br&gt;&lt;br&gt;vw.append(id=2,nombre=&amp;quot;pepe lopez&amp;quot;, departamento=2)
&lt;br&gt;&lt;br&gt;vw.append(id=3,nombre=&amp;quot;ignacio garcia&amp;quot;, departamento=1)
&lt;br&gt;&lt;br&gt;db.commit()
&lt;br&gt;&lt;br&gt;&amp;quot;&amp;quot;&amp;quot;
&lt;br&gt;&lt;br&gt;vDpto = db.view('dpto')
&lt;br&gt;&lt;br&gt;vPersonal = db.view('personal')
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;for r in vPersonal: print r
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;out: 
&lt;br&gt;&lt;br&gt;window with: python.exe ha detectado un problema y debe cerrarse (send error
&lt;br&gt;etc)
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9294765&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Error-with-python-tp9294765p9294765.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8989211</id>
	<title>_sopen (was: Corrupted database)</title>
	<published>2007-02-15T08:53:10Z</published>
	<updated>2007-02-15T08:53:10Z</updated>
	<author>
		<name>Riccardo Cohen</name>
	</author>
	<content type="html">Matt Oberle wrote:
&lt;br&gt;&amp;nbsp;&amp;gt; If we had spent all this time and energy working together to implement
&lt;br&gt;&amp;nbsp;&amp;gt; Pat's solution this would be a moot point.
&lt;br&gt;&lt;br&gt;by the way, does someone knows about _sopen() ?
&lt;br&gt;&lt;br&gt;-------- Original Message --------
&lt;br&gt;Subject: Re: [Metakit] Corrupted database over network - WinNT
&lt;br&gt;Date: Wed, 14 Feb 2007 16:09:13 +0100
&lt;br&gt;From: Riccardo Cohen &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8989211&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rcohen@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Organization: articque
&lt;br&gt;To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8989211&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;metakit@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;Hi Jean-Claude,
&lt;br&gt;This is very clear, thank you. I really hope that vista corrected this windows bug. It is
&lt;br&gt;not the only bug with windows networking, but this one is a real pain.
&lt;br&gt;The problem now for us at least, is that we have many different way of using metakit.
&lt;br&gt;sometimes we encapsulated in one of our class, wich make it easy to redefine a file
&lt;br&gt;strategy, but sometimes we access directly for performance reason, and there are many
&lt;br&gt;places where we open a storage.
&lt;br&gt;&lt;br&gt;Maybe I'm wrong, but there might be a very easy and effortless solution (for developers
&lt;br&gt;that never have 2 C4_storage on the same file) :
&lt;br&gt;&lt;br&gt;in c4_FileStrategy::DataOpen(), I tried to replace :
&lt;br&gt;&lt;br&gt;fd = _wopen(wName, flags);
&lt;br&gt;&lt;br&gt;by :
&lt;br&gt;&lt;br&gt;fd=_wsopen(wName,flags,_SH_DENYRW);
&lt;br&gt;&lt;br&gt;Unfortunately it did not work, but really if someone know something about windows open()
&lt;br&gt;function, this could help many people.
&lt;br&gt;&lt;br&gt;Thanks for any clue :)
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Jean-Claude Wippler wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Thanks, Pat Thoyts for your detailed analysis and description of the 
&lt;br&gt;&amp;gt; workaround you found.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Let me summarize as follows:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Metakit maps the file as
&lt;br&gt;&amp;gt;&amp;gt; a read-only memory mapping and when it saves it re-serializes into the
&lt;br&gt;&amp;gt;&amp;gt; underlying file. It then drops the current mapping and re-maps the
&lt;br&gt;&amp;gt;&amp;gt; file. What I observed was that when it re-mapped it got the original
&lt;br&gt;&amp;gt;&amp;gt; data and did not in fact re-map the newly written data at all.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In other words, Windows does not guarantee a consistent view of the data 
&lt;br&gt;&amp;gt; it buffers for networked file systems: write something to a file, map it 
&lt;br&gt;&amp;gt; to memory *afterwards*, and apparently you can get stale data.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; If MK were to use r/w maps and push its data through there, then 
&lt;br&gt;&amp;gt; presumably it would work. &amp;nbsp;That will not work in the case when the file 
&lt;br&gt;&amp;gt; has to be extended, though. &amp;nbsp;Keep in mind that MK can write data to file 
&lt;br&gt;&amp;gt; for which partially comes from the r/o map. &amp;nbsp;Furthermore, MK maps r/o 
&lt;br&gt;&amp;gt; deliberately, because it prevents stray pointer writes from damaging a 
&lt;br&gt;&amp;gt; MK datafile.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So what we have today, is a design which works on Windows local disks, 
&lt;br&gt;&amp;gt; and on Unix/MacOSX both locally and on remote file systems (both NFS and 
&lt;br&gt;&amp;gt; SMB afaik).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; [From: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8989211&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt;]
&lt;br&gt;&amp;gt;&amp;gt; 1/ You confirm that metakit files have a serious design flaw that puts 
&lt;br&gt;&amp;gt;&amp;gt; at risk our data when accessed through a network.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; With all due respect, the &amp;quot;serious design flaw&amp;quot; is in Windows. &amp;nbsp;Getting 
&lt;br&gt;&amp;gt; that fixed is beyond our control. &amp;nbsp;We can only hope that XP or Vista get 
&lt;br&gt;&amp;gt; it right.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 2/ You give indications on the nature of the corruption, and how to 
&lt;br&gt;&amp;gt;&amp;gt; prevent it.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Yes, and for that I am very grateful. &amp;nbsp;In addition to Pat's most recent 
&lt;br&gt;&amp;gt; post, more information can be found at 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.equi4.com/pipermail/metakit/2005-August/002112.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/pipermail/metakit/2005-August/002112.html&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So the solution is to derive a c4_Strategy class which opens the file in 
&lt;br&gt;&amp;gt; exclusive mode. &amp;nbsp;Pat has most generously handed everyone the solution on 
&lt;br&gt;&amp;gt; a silver platter. &amp;nbsp;If you don't want to subclass c4_Strategy, then open 
&lt;br&gt;&amp;gt; the file yourself and pass it to MK. &amp;nbsp;If you never need concurrent 
&lt;br&gt;&amp;gt; readers, use CreateFile and always open with dwAccessMode set to 0, then 
&lt;br&gt;&amp;gt; turn it into a FILE* with freopen and pass it to MK.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I for one never use MK in r/w mode on remote file systems. &amp;nbsp;Not just due 
&lt;br&gt;&amp;gt; to the above risks, but because locking also leads to all sorts of 
&lt;br&gt;&amp;gt; &amp;quot;Heisenberg&amp;quot; trouble. &amp;nbsp;In my book, shared data use should use 
&lt;br&gt;&amp;gt; client/server solutions. &amp;nbsp;That need only take a few dozen lines of code, 
&lt;br&gt;&amp;gt; depending on your tool choices.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -jcw
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _____________________________________________
&lt;br&gt;&amp;gt; Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8989211&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;Très cordialement,
&lt;br&gt;&lt;br&gt;Riccardo Cohen
&lt;br&gt;ligne directe : 02-47-49-63-24
&lt;br&gt;-------------------------------------------
&lt;br&gt;Articque
&lt;br&gt;&lt;a href=&quot;http://www.articque.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.articque.com&lt;/a&gt;&lt;br&gt;Moulin des Roches
&lt;br&gt;37230 Fondettes - France
&lt;br&gt;tel : 02-47-49-90-49
&lt;br&gt;fax : 02-47-49-91-49
&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8989211&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Très cordialement,
&lt;br&gt;&lt;br&gt;Riccardo Cohen
&lt;br&gt;ligne directe : 02-47-49-63-24
&lt;br&gt;-------------------------------------------
&lt;br&gt;Articque
&lt;br&gt;&lt;a href=&quot;http://www.articque.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.articque.com&lt;/a&gt;&lt;br&gt;Moulin des Roches
&lt;br&gt;37230 Fondettes - France
&lt;br&gt;tel : 02-47-49-90-49
&lt;br&gt;fax : 02-47-49-91-49
&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8989211&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/_sopen-%28was%3A-Corrupted-database%29-tp8989211p8989211.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8988845</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-15T08:32:36Z</published>
	<updated>2007-02-15T08:32:36Z</updated>
	<author>
		<name>Matt Oberle</name>
	</author>
	<content type="html">If we had spent all this time and energy working together to implement
&lt;br&gt;Pat's solution this would be a moot point.
&lt;br&gt;&lt;br&gt;Matt
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8988845&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8983549p8988845.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8985594</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-15T05:46:04Z</published>
	<updated>2007-02-15T05:46:04Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt; I wouldn't write a single line of code for a person like you, even if you 
&lt;br&gt;&amp;gt; paid $100.000. You have been acting not educated (on open source), not 
&lt;br&gt;&amp;gt; tolerant and not professional (~polite).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think you should be responsible and apologize for your earlier posts 
&lt;br&gt;&amp;gt; before asking anything.
&lt;br&gt;&lt;br&gt;I regret the turmoil that I've caused, but I don't regret a single word that 
&lt;br&gt;I've said. Call me rude if you want, and maybe I am. 
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8985594&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8983549p8985594.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8985235</id>
	<title>Corrupted database over network - WinNT</title>
	<published>2007-02-15T05:21:01Z</published>
	<updated>2007-02-15T05:21:01Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt; You made the choice to use MK and you are responsible from your platform 
&lt;br&gt;&amp;gt; decisions.
&lt;br&gt;&lt;br&gt;When I chose Metakit, several year ago, it was an actively maintained 
&lt;br&gt;project. It's barely the case anymore. At that time, a corruption issue 
&lt;br&gt;wouldn't have been tolerated. 
&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8985235&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8983549p8985235.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8985110</id>
	<title>Corrupted database over network - WinNT</title>
	<published>2007-02-15T05:10:39Z</published>
	<updated>2007-02-15T05:10:39Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt; I wouldn't write a single line of code for a person like you, even if you 
&lt;br&gt;&amp;gt; paid $100.000. You have been acting not educated (on open source), not 
&lt;br&gt;&amp;gt; tolerant and not professional (~polite).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think you should be responsible and apologize for your earlier posts 
&lt;br&gt;&amp;gt; before asking anything. You made the choice to use MK and you are 
&lt;br&gt;&amp;gt; responsible from your platform decisions.
&lt;br&gt;&lt;br&gt;Seriously, I can't expecting someone to fix this bug for 100$. If this bug 
&lt;br&gt;is fixed by someone someday, I'll thank him with 100$, that's different. Let 
&lt;br&gt;say I put it in the pot. I already regret to have made that offer. Sounds 
&lt;br&gt;like I'm asking something...
&lt;br&gt;&lt;br&gt;Reading this list, I could trace people losing their data up to 2002, but 
&lt;br&gt;the origin of the corruption wasn't identified. I thought it was my 
&lt;br&gt;contribution to locate the source of the bug (and I lost many hair in the 
&lt;br&gt;battle). Now that the corruption source is well identified, why not warn 
&lt;br&gt;people ? Why ? 
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8985110&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8983549p8985110.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8983775</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-15T03:31:19Z</published>
	<updated>2007-02-15T03:31:19Z</updated>
	<author>
		<name>Steve Blinkhorn</name>
	</author>
	<content type="html">&amp;gt;&amp;gt;&amp;gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8983775&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt; said:
&lt;br&gt;&amp;nbsp;&amp;gt; 
&lt;br&gt;&amp;nbsp;&amp;gt; I chose Metakit because:
&lt;br&gt;&amp;nbsp;&amp;gt; 1/ it is an excellent library that perfectly suits my needs.
&lt;br&gt;&amp;nbsp;&amp;gt; 2/ it's open source and the author has very good reputation of seriousness 
&lt;br&gt;&amp;nbsp;&amp;gt; (hence my disappointment).
&lt;br&gt;&amp;nbsp;&amp;gt; 
&lt;br&gt;&lt;br&gt;What you have run up against is the real evil of the proprietary
&lt;br&gt;nature of the dominant desktop operating system. &amp;nbsp;The bug, if that's
&lt;br&gt;what it is, is in Windows: it does not cater for the generality of use
&lt;br&gt;to which it may be put, which involves a lot of us in chasing round
&lt;br&gt;finding fixes for our applications (and making damn sure we never
&lt;br&gt;never never *trust* Windows to behave as expected). &amp;nbsp; I just spent the
&lt;br&gt;best part of a week fixing some of our own code that broke, after
&lt;br&gt;several years of flawless use, because the customer started running
&lt;br&gt;software built for Win2000 on XP SP2. &amp;nbsp; Nothing to do with MetaKit,
&lt;br&gt;same code on various Unices and everything from MS-DOS 2.0 to Win2000
&lt;br&gt;has run with no such error for 18 years.
&lt;br&gt;&lt;br&gt;If I had had the source to Windows, that is what I would have patched.
&lt;br&gt;As it is, Micro$oft attempt to make the world revolve around them, to
&lt;br&gt;conform to their choices and pettifogging 'philosophy'. &amp;nbsp; So I had to
&lt;br&gt;write a workaround, which complicates my code unnecessarily.
&lt;br&gt;&lt;br&gt;My experience in general with Windows networking (and other aspects of
&lt;br&gt;it as an OS) is that you should never trust it not to cache what you
&lt;br&gt;would rather it did not cache, to cache what you expect it to cache,
&lt;br&gt;or not to have undisclosed limitation, flaws and &amp;quot;features&amp;quot;.
&lt;br&gt;&lt;br&gt;I tend to agree with jcw that data sharing over a network is best done
&lt;br&gt;using a client-server approach: there are too many lines of code you
&lt;br&gt;will never get to see in between otherwise, and trusting them without
&lt;br&gt;checking is perilous.
&lt;br&gt;&lt;br&gt;And please cut the histrionics. &amp;nbsp;This is a courteous mutual assistance
&lt;br&gt;forum. &amp;nbsp; Those of us who consume more than we are able to supply owe
&lt;br&gt;at least a certain politesse, not to say gratitude, for the generosity
&lt;br&gt;of others.
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Steve Blinkhorn &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8983775&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;steve@...&lt;/a&gt;&amp;gt;
&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8983775&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8977867p8983775.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8983549</id>
	<title>Corrupted database over network - WinNT</title>
	<published>2007-02-15T03:12:58Z</published>
	<updated>2007-02-15T03:12:58Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt; But in the real world, you have what you pay for.
&lt;br&gt;&lt;br&gt;I thought about it again, and I'll give 100$ to the person who'll fix this 
&lt;br&gt;bug.
&lt;br&gt;&lt;br&gt;I know this sum might seem ridiculous, but seriously it's the max I can 
&lt;br&gt;offer.
&lt;br&gt;&lt;br&gt;And if this bug is fixed, I'd like the patch to be integrated in Metakit 
&lt;br&gt;main source. 
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8983549&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8983549p8983549.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8982022</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-15T01:14:50Z</published>
	<updated>2007-02-15T01:14:50Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt; Open source is mainly a community, but it is also risk (re-read
&lt;br&gt;&amp;gt; the metakit license, in particular the line WITHOUT
&lt;br&gt;&amp;gt; WARRANTY OF ANY KIND).
&lt;br&gt;&lt;br&gt;I have no problem with that. I never said that I would sue Metakit for 
&lt;br&gt;having lost my data.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; You could have used ctree+ or mysql embedded
&lt;br&gt;&lt;br&gt;I chose Metakit because:
&lt;br&gt;1/ it is an excellent library that perfectly suits my needs.
&lt;br&gt;2/ it's open source and the author has very good reputation of seriousness 
&lt;br&gt;(hence my disappointment).
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; Even if I agree that it is a windows bug, I also agree that he should not 
&lt;br&gt;&amp;gt; have answered that.
&lt;br&gt;&lt;br&gt;Thank you.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; But in the real world, you have what you pay for.
&lt;br&gt;&lt;br&gt;I can't pay no dollar, so I don't ask anything to anyone. Except the warning 
&lt;br&gt;on the site, of course. It's not because you write &amp;quot;WITHOUT WARRANTY OF ANY 
&lt;br&gt;KIND&amp;quot; that you can play with people's data integrity.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; Now you are free to criticize J.C. but be aware that
&lt;br&gt;&amp;gt; this choice is probably not very fair, and also probably
&lt;br&gt;&amp;gt; not what will give you the solution.
&lt;br&gt;&lt;br&gt;As I already said, I know perfectly... but I indulged myself. 
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8982022&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8977867p8982022.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8977867</id>
	<title>Corrupted database over network - WinNT</title>
	<published>2007-02-14T16:26:33Z</published>
	<updated>2007-02-14T16:26:33Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">Suppose you choose yourself a car because it's advertized as powerful and
&lt;br&gt;secure. You're driving your new car when suddenly the wheel is jammed and
&lt;br&gt;you crash into a wall. The car manufacturer is informed of that issue, and
&lt;br&gt;quietly answers that you must fix the problem yourself, it's not his fault
&lt;br&gt;if the roads have turns and bends...
&lt;br&gt;&lt;br&gt;1) the car manufacturer is blatantly insulting you.
&lt;br&gt;2) other uninformed persons will also crash themselves.
&lt;br&gt;3) it's illogical that each driver should fix the problem for themselves,
&lt;br&gt;because most drivers know nothing about mechanics, and before all because
&lt;br&gt;the problem should be fixed at the car factory.
&lt;br&gt;&lt;br&gt;&lt;br&gt;As I've said, I have no way to correct this Metakit bug. But I do care about
&lt;br&gt;my user's data. I was thus forced to place big warnings on my site, and live
&lt;br&gt;with it. All I ask is that Jean-Claude places big warnings on his site too,
&lt;br&gt;and live with it.
&lt;br&gt;&lt;br&gt;Now I've said all I had to say. I won't reply anymore. Or this discussion
&lt;br&gt;will never calm down.
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8977867&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8977867p8977867.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8975841</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-14T14:20:18Z</published>
	<updated>2007-02-14T14:20:18Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&amp;gt; I'm very upset by your attitude. Jean-Claude Wippler, Pat Thoyts and many 
&lt;br&gt;&amp;gt; others
&lt;br&gt;&amp;gt; put a great deal of their own time and effort into providing software 
&lt;br&gt;&amp;gt; products
&lt;br&gt;&amp;gt; that the likes of you and I benefit from. They are also prompt, helpful 
&lt;br&gt;&amp;gt; and
&lt;br&gt;&amp;gt; courteous in responding to design and usage issues.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Be grateful for what you are given. If you don't like it, ask politely for
&lt;br&gt;&amp;gt; assistance to modify it or decline it. Don't bite the hand that feeds you.
&lt;/div&gt;&lt;br&gt;If you re-read my posts chronologically, you'll realize that I took the 
&lt;br&gt;angry tone only after Jean-Claude said it was a Windows bug, and he hoped 
&lt;br&gt;Microsoft would fix it. What a ridiculous statement is that ? If your 
&lt;br&gt;application has problems with Vista, you don't say it is Vista-ready. If 
&lt;br&gt;your program has problems with Windows, either you say so, either you fix 
&lt;br&gt;your program.
&lt;br&gt;&lt;br&gt;Before that, all I had asked was whether Jean-Claude thought he would fix 
&lt;br&gt;this bug in the future. No more.
&lt;br&gt;&lt;br&gt;Data corruption isn't something that can be taken lightly, is it ? 
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8975841&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8969122p8975841.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8974094</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-14T13:37:11Z</published>
	<updated>2007-02-14T13:37:11Z</updated>
	<author>
		<name>phil bennett</name>
	</author>
	<content type="html">Quoting &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8974094&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;:
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt;From Metakit website:
&lt;br&gt;&amp;gt; &amp;quot;This library is in active use in various commercial projects and products 
&lt;br&gt;&amp;gt; on millions of desktops.&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Why don't you add that people happen to LOOSE their precious data ?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Angry ? Yes I am !
&lt;br&gt;&amp;gt; _____________________________________________
&lt;br&gt;&lt;br&gt;Hector,
&lt;br&gt;&lt;br&gt;I'm very upset by your attitude. Jean-Claude Wippler, Pat Thoyts and many others
&lt;br&gt;put a great deal of their own time and effort into providing software products
&lt;br&gt;that the likes of you and I benefit from. They are also prompt, helpful and
&lt;br&gt;courteous in responding to design and usage issues. 
&lt;br&gt;&lt;br&gt;Be grateful for what you are given. If you don't like it, ask politely for
&lt;br&gt;assistance to modify it or decline it. Don't bite the hand that feeds you.
&lt;br&gt;&lt;br&gt;Phil Bennett
&lt;br&gt;&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8974094&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8969122p8974094.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8969122</id>
	<title>Corrupted database over network - WinNT</title>
	<published>2007-02-14T09:02:42Z</published>
	<updated>2007-02-14T09:02:42Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt;From Metakit website:
&lt;br&gt;&amp;quot;This library is in active use in various commercial projects and products 
&lt;br&gt;on millions of desktops.&amp;quot;
&lt;br&gt;&lt;br&gt;Why don't you add that people happen to LOOSE their precious data ?
&lt;br&gt;&lt;br&gt;Angry ? Yes I am !
&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8969122&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8969122p8969122.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8969082</id>
	<title>Corrupted database over network - WinNT</title>
	<published>2007-02-14T09:01:38Z</published>
	<updated>2007-02-14T09:01:38Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt;From Metakit website:
&lt;br&gt;&amp;quot;This library is in active use in various commercial projects and products 
&lt;br&gt;on millions of desktops.&amp;quot;
&lt;br&gt;&lt;br&gt;Why don't you add that people happen to use their precious data ?
&lt;br&gt;&lt;br&gt;Angry ? Yes I am ! 
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8969082&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8969082p8969082.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8968740</id>
	<title>Corrupted database over network - WinNT</title>
	<published>2007-02-14T08:44:55Z</published>
	<updated>2007-02-14T08:44:55Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt; In my book, shared data use
&lt;br&gt;&amp;gt; should use client/server solutions.
&lt;br&gt;&lt;br&gt;It's the first time I hear you've written a book... That's interesting.
&lt;br&gt;&lt;br&gt;It's not shared data, only 1 program opens the file. It just happens that 
&lt;br&gt;the file that is located on a NAS (Network Attached Storage)... There can't 
&lt;br&gt;be a server running on the NAS, or I'm missing something...
&lt;br&gt;&lt;br&gt;I ask for only 1 thing. Now that this issue has been clearly identified, you 
&lt;br&gt;MUST place a big warning on your site ! Because loosing one's data is not 
&lt;br&gt;acceptable. The 2 horrid weeks I've spent on that issue, I give you for free 
&lt;br&gt;! 
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8968740&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8968740p8968740.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8968352</id>
	<title>Corrupted database over network - WinNT</title>
	<published>2007-02-14T08:27:40Z</published>
	<updated>2007-02-14T08:27:40Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt; With all due respect, the &amp;quot;serious design flaw&amp;quot; is
&lt;br&gt;&amp;gt; in Windows. Getting that fixed is beyond our control.
&lt;br&gt;&amp;gt; We can only hope that XP or Vista get it right.
&lt;br&gt;&lt;br&gt;With all due respect too, and I didn't mean to offend you, if a Metakit file 
&lt;br&gt;gets corrupted on XP, which is by far the most used OS, I tend to think that 
&lt;br&gt;we can call it a bug... Why play on words ? Until now, that network 
&lt;br&gt;corruption was just a myth (from what I've read on this list), and nowhere 
&lt;br&gt;it is specified that Metakit doesn't work on XP networks, and that people 
&lt;br&gt;can lose their data. This issue has driven me crazy for nearly 2 weeks 
&lt;br&gt;before I could locate when and how the corruption happened. Unfortunately, I 
&lt;br&gt;wasn't smart enough to fix the bug. Of course, if I had fixed the bug, I 
&lt;br&gt;would have contributed the patch, because this kind of patch obviously must 
&lt;br&gt;be included inside Metakit's main code.
&lt;br&gt;&lt;br&gt;About Pat's boss: how honest is this to use an open source library, to 
&lt;br&gt;discover a bug, and to fix it for himself without telling everyone ?
&lt;br&gt;&lt;br&gt;About engaging Jean-Claude( or another developer) to produce the workaround: 
&lt;br&gt;if you know my finances, you'd know it is science-fiction.
&lt;br&gt;&lt;br&gt;All I could do is place a big warning on my site:
&lt;br&gt;DON'T USE THROUGH A NETWORK !!!
&lt;br&gt;DON'T USE THROUGH A NETWORK !!!
&lt;br&gt;DON'T USE THROUGH A NETWORK !!!
&lt;br&gt;DON'T USE THROUGH A NETWORK !!! 
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8968352&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8968352p8968352.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8966696</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-14T07:09:13Z</published>
	<updated>2007-02-14T07:09:13Z</updated>
	<author>
		<name>Riccardo Cohen</name>
	</author>
	<content type="html">Hi Jean-Claude,
&lt;br&gt;This is very clear, thank you. I really hope that vista corrected this windows bug. It is 
&lt;br&gt;not the only bug with windows networking, but this one is a real pain.
&lt;br&gt;The problem now for us at least, is that we have many different way of using metakit. 
&lt;br&gt;sometimes we encapsulated in one of our class, wich make it easy to redefine a file 
&lt;br&gt;strategy, but sometimes we access directly for performance reason, and there are many 
&lt;br&gt;places where we open a storage.
&lt;br&gt;&lt;br&gt;Maybe I'm wrong, but there might be a very easy and effortless solution (for developers 
&lt;br&gt;that never have 2 C4_storage on the same file) :
&lt;br&gt;&lt;br&gt;in c4_FileStrategy::DataOpen(), I tried to replace :
&lt;br&gt;&lt;br&gt;fd = _wopen(wName, flags);
&lt;br&gt;&lt;br&gt;by :
&lt;br&gt;&lt;br&gt;fd=_wsopen(wName,flags,_SH_DENYRW);
&lt;br&gt;&lt;br&gt;Unfortunately it did not work, but really if someone know something about windows open() 
&lt;br&gt;function, this could help many people.
&lt;br&gt;&lt;br&gt;Thanks for any clue :)
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Jean-Claude Wippler wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Thanks, Pat Thoyts for your detailed analysis and description of the 
&lt;br&gt;&amp;gt; workaround you found.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Let me summarize as follows:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Metakit maps the file as
&lt;br&gt;&amp;gt;&amp;gt; a read-only memory mapping and when it saves it re-serializes into the
&lt;br&gt;&amp;gt;&amp;gt; underlying file. It then drops the current mapping and re-maps the
&lt;br&gt;&amp;gt;&amp;gt; file. What I observed was that when it re-mapped it got the original
&lt;br&gt;&amp;gt;&amp;gt; data and did not in fact re-map the newly written data at all.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In other words, Windows does not guarantee a consistent view of the data 
&lt;br&gt;&amp;gt; it buffers for networked file systems: write something to a file, map it 
&lt;br&gt;&amp;gt; to memory *afterwards*, and apparently you can get stale data.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; If MK were to use r/w maps and push its data through there, then 
&lt;br&gt;&amp;gt; presumably it would work. &amp;nbsp;That will not work in the case when the file 
&lt;br&gt;&amp;gt; has to be extended, though. &amp;nbsp;Keep in mind that MK can write data to file 
&lt;br&gt;&amp;gt; for which partially comes from the r/o map. &amp;nbsp;Furthermore, MK maps r/o 
&lt;br&gt;&amp;gt; deliberately, because it prevents stray pointer writes from damaging a 
&lt;br&gt;&amp;gt; MK datafile.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So what we have today, is a design which works on Windows local disks, 
&lt;br&gt;&amp;gt; and on Unix/MacOSX both locally and on remote file systems (both NFS and 
&lt;br&gt;&amp;gt; SMB afaik).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; [From: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8966696&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt;]
&lt;br&gt;&amp;gt;&amp;gt; 1/ You confirm that metakit files have a serious design flaw that puts 
&lt;br&gt;&amp;gt;&amp;gt; at risk our data when accessed through a network.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; With all due respect, the &amp;quot;serious design flaw&amp;quot; is in Windows. &amp;nbsp;Getting 
&lt;br&gt;&amp;gt; that fixed is beyond our control. &amp;nbsp;We can only hope that XP or Vista get 
&lt;br&gt;&amp;gt; it right.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; 2/ You give indications on the nature of the corruption, and how to 
&lt;br&gt;&amp;gt;&amp;gt; prevent it.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Yes, and for that I am very grateful. &amp;nbsp;In addition to Pat's most recent 
&lt;br&gt;&amp;gt; post, more information can be found at 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.equi4.com/pipermail/metakit/2005-August/002112.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/pipermail/metakit/2005-August/002112.html&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So the solution is to derive a c4_Strategy class which opens the file in 
&lt;br&gt;&amp;gt; exclusive mode. &amp;nbsp;Pat has most generously handed everyone the solution on 
&lt;br&gt;&amp;gt; a silver platter. &amp;nbsp;If you don't want to subclass c4_Strategy, then open 
&lt;br&gt;&amp;gt; the file yourself and pass it to MK. &amp;nbsp;If you never need concurrent 
&lt;br&gt;&amp;gt; readers, use CreateFile and always open with dwAccessMode set to 0, then 
&lt;br&gt;&amp;gt; turn it into a FILE* with freopen and pass it to MK.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I for one never use MK in r/w mode on remote file systems. &amp;nbsp;Not just due 
&lt;br&gt;&amp;gt; to the above risks, but because locking also leads to all sorts of 
&lt;br&gt;&amp;gt; &amp;quot;Heisenberg&amp;quot; trouble. &amp;nbsp;In my book, shared data use should use 
&lt;br&gt;&amp;gt; client/server solutions. &amp;nbsp;That need only take a few dozen lines of code, 
&lt;br&gt;&amp;gt; depending on your tool choices.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -jcw
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _____________________________________________
&lt;br&gt;&amp;gt; Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8966696&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;Très cordialement,
&lt;br&gt;&lt;br&gt;Riccardo Cohen
&lt;br&gt;ligne directe : 02-47-49-63-24
&lt;br&gt;-------------------------------------------
&lt;br&gt;Articque
&lt;br&gt;&lt;a href=&quot;http://www.articque.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.articque.com&lt;/a&gt;&lt;br&gt;Moulin des Roches
&lt;br&gt;37230 Fondettes - France
&lt;br&gt;tel : 02-47-49-90-49
&lt;br&gt;fax : 02-47-49-91-49
&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8966696&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8915516p8966696.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8965208</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-14T05:50:00Z</published>
	<updated>2007-02-14T05:50:00Z</updated>
	<author>
		<name>jcw</name>
	</author>
	<content type="html">Thanks, Pat Thoyts for your detailed analysis and description of the &amp;nbsp;
&lt;br&gt;workaround you found.
&lt;br&gt;&lt;br&gt;Let me summarize as follows:
&lt;br&gt;&lt;br&gt;&amp;gt; Metakit maps the file as
&lt;br&gt;&amp;gt; a read-only memory mapping and when it saves it re-serializes into the
&lt;br&gt;&amp;gt; underlying file. It then drops the current mapping and re-maps the
&lt;br&gt;&amp;gt; file. What I observed was that when it re-mapped it got the original
&lt;br&gt;&amp;gt; data and did not in fact re-map the newly written data at all.
&lt;br&gt;&lt;br&gt;In other words, Windows does not guarantee a consistent view of the &amp;nbsp;
&lt;br&gt;data it buffers for networked file systems: write something to a &amp;nbsp;
&lt;br&gt;file, map it to memory *afterwards*, and apparently you can get stale &amp;nbsp;
&lt;br&gt;data.
&lt;br&gt;&lt;br&gt;If MK were to use r/w maps and push its data through there, then &amp;nbsp;
&lt;br&gt;presumably it would work. &amp;nbsp;That will not work in the case when the &amp;nbsp;
&lt;br&gt;file has to be extended, though. &amp;nbsp;Keep in mind that MK can write data &amp;nbsp;
&lt;br&gt;to file for which partially comes from the r/o map. &amp;nbsp;Furthermore, MK &amp;nbsp;
&lt;br&gt;maps r/o deliberately, because it prevents stray pointer writes from &amp;nbsp;
&lt;br&gt;damaging a MK datafile.
&lt;br&gt;&lt;br&gt;So what we have today, is a design which works on Windows local &amp;nbsp;
&lt;br&gt;disks, and on Unix/MacOSX both locally and on remote file systems &amp;nbsp;
&lt;br&gt;(both NFS and SMB afaik).
&lt;br&gt;&lt;br&gt;[From: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8965208&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt;]
&lt;br&gt;&amp;gt; 1/ You confirm that metakit files have a serious design flaw that &amp;nbsp;
&lt;br&gt;&amp;gt; puts at risk our data when accessed through a network.
&lt;br&gt;&lt;br&gt;With all due respect, the &amp;quot;serious design flaw&amp;quot; is in Windows. &amp;nbsp; 
&lt;br&gt;Getting that fixed is beyond our control. &amp;nbsp;We can only hope that XP &amp;nbsp;
&lt;br&gt;or Vista get it right.
&lt;br&gt;&lt;br&gt;&amp;gt; 2/ You give indications on the nature of the corruption, and how to &amp;nbsp;
&lt;br&gt;&amp;gt; prevent it.
&lt;br&gt;&lt;br&gt;Yes, and for that I am very grateful. &amp;nbsp;In addition to Pat's most &amp;nbsp;
&lt;br&gt;recent post, more information can be found at &lt;a href=&quot;http://www.equi4.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/&lt;/a&gt;&amp;nbsp;
&lt;br&gt;pipermail/metakit/2005-August/002112.html
&lt;br&gt;&lt;br&gt;So the solution is to derive a c4_Strategy class which opens the file &amp;nbsp;
&lt;br&gt;in exclusive mode. &amp;nbsp;Pat has most generously handed everyone the &amp;nbsp;
&lt;br&gt;solution on a silver platter. &amp;nbsp;If you don't want to subclass &amp;nbsp;
&lt;br&gt;c4_Strategy, then open the file yourself and pass it to MK. &amp;nbsp;If you &amp;nbsp;
&lt;br&gt;never need concurrent readers, use CreateFile and always open with &amp;nbsp;
&lt;br&gt;dwAccessMode set to 0, then turn it into a FILE* with freopen and &amp;nbsp;
&lt;br&gt;pass it to MK.
&lt;br&gt;&lt;br&gt;I for one never use MK in r/w mode on remote file systems. &amp;nbsp;Not just &amp;nbsp;
&lt;br&gt;due to the above risks, but because locking also leads to all sorts &amp;nbsp;
&lt;br&gt;of &amp;quot;Heisenberg&amp;quot; trouble. &amp;nbsp;In my book, shared data use should use &amp;nbsp;
&lt;br&gt;client/server solutions. &amp;nbsp;That need only take a few dozen lines of &amp;nbsp;
&lt;br&gt;code, depending on your tool choices.
&lt;br&gt;&lt;br&gt;-jcw
&lt;br&gt;&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8965208&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8915516p8965208.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8964267</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-14T04:45:47Z</published>
	<updated>2007-02-14T04:45:47Z</updated>
	<author>
		<name>Steve Landers</name>
	</author>
	<content type="html">&lt;br&gt;On 14/02/2007, at 9:22 PM, &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8964267&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8964267&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; Hector, Matt,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I won't be working on the problem for a while. So, if either of you
&lt;br&gt;&amp;gt;&amp;gt; implement a suitable c4_strategy perhaps you would be kind enough &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; to share
&lt;br&gt;&amp;gt;&amp;gt; your work and spare me some effort. I'll do likewise if I get &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; ahead of you.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Well, though I'm a Metakit user, I'm far from being familiar with &amp;nbsp;
&lt;br&gt;&amp;gt; its internals. I had a look at it, and it looks beyond my skills.
&lt;br&gt;&amp;gt; I wait for JCW to make a statement on the subject. I would be very &amp;nbsp;
&lt;br&gt;&amp;gt; surprised/disappointed if he was aware of a serious corruption bug &amp;nbsp;
&lt;br&gt;&amp;gt; and did nothing about it...
&lt;/div&gt;&lt;br&gt;There is no serious corruption bug in Metakit - rather there is a bug &amp;nbsp;
&lt;br&gt;(or limitation) in Windows networking that is triggered by &amp;nbsp;Metakit.
&lt;br&gt;&lt;br&gt;Now, the distinction might appear to be tenuous, but I put it to you &amp;nbsp;
&lt;br&gt;that you have at least three alternatives
&lt;br&gt;- diagnose and produce a workaround (as Pat did)
&lt;br&gt;- wait for someone to contribute a workaround
&lt;br&gt;- engage Jean-Claude( or another developer) to produce the workaround
&lt;br&gt;&lt;br&gt;The bottom line is that you're using an open source product on a &amp;nbsp;
&lt;br&gt;proprietary platform and (unlike many many many people using Metakit &amp;nbsp;
&lt;br&gt;on other platforms) you're encountering problems due to the broken &amp;nbsp;
&lt;br&gt;nature of that platform. Whilst that is unfortunate, to tar Metakit &amp;nbsp;
&lt;br&gt;with that brush or imply that Jean-Claude is in any way obliged to &amp;nbsp;
&lt;br&gt;provide you with a workaround is (IMNSHO) neither appropriate nor &amp;nbsp;
&lt;br&gt;helpful.
&lt;br&gt;&lt;br&gt;Now that I've got that off my chest, let me say that I'm sure people &amp;nbsp;
&lt;br&gt;will help if they can (evidence Pat's detailed mailing on the &amp;nbsp;
&lt;br&gt;topic). &amp;nbsp;I share your frustration in that there is much about Windows &amp;nbsp;
&lt;br&gt;networking that drives me crazy. &amp;nbsp; But your alternatives are clear - &amp;nbsp;
&lt;br&gt;you either need patience or be willing to invest time and/or money to &amp;nbsp;
&lt;br&gt;provide a workaround in the timescale you need. &amp;nbsp;That's life, I'm &amp;nbsp;
&lt;br&gt;afraid.
&lt;br&gt;&lt;br&gt;Regards
&lt;br&gt;&lt;br&gt;Steve
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8964267&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8955376p8964267.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8963949</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-14T04:22:01Z</published>
	<updated>2007-02-14T04:22:01Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt; Hector, Matt,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I won't be working on the problem for a while. So, if either of you
&lt;br&gt;&amp;gt; implement a suitable c4_strategy perhaps you would be kind enough to share
&lt;br&gt;&amp;gt; your work and spare me some effort. I'll do likewise if I get ahead of 
&lt;br&gt;&amp;gt; you.
&lt;br&gt;&lt;br&gt;Well, though I'm a Metakit user, I'm far from being familiar with its 
&lt;br&gt;internals. I had a look at it, and it looks beyond my skills.
&lt;br&gt;I wait for JCW to make a statement on the subject. I would be very 
&lt;br&gt;surprised/disappointed if he was aware of a serious corruption bug and did 
&lt;br&gt;nothing about it... 
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8963949&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8955376p8963949.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8955376</id>
	<title>Corrupted database over network - WinNT</title>
	<published>2007-02-13T14:57:26Z</published>
	<updated>2007-02-13T14:57:26Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&lt;br&gt;----- Original Message ----- 
&lt;br&gt;From: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8955376&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt;
&lt;br&gt;To: &amp;quot;Pat Thoyts&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8955376&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;patthoyts@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Sent: Tuesday, February 13, 2007 11:56 PM
&lt;br&gt;Subject: Re: [Metakit] Corrupted database over network - WinNT
&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt;... discovered that when accessed over network shares
&lt;br&gt;&amp;gt;&amp;gt; we sometimes obtained corrupt matakit databases.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Wow, what a precious testimony !
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 1/ You confirm that metakit files have a serious design flaw that puts at 
&lt;br&gt;&amp;gt; risk our data when accessed through a network.
&lt;br&gt;&amp;gt; 2/ You give indications on the nature of the corruption, and how to 
&lt;br&gt;&amp;gt; prevent it.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; To JCW:
&lt;br&gt;&amp;gt; Man, I understand you're very busy, but you've always taken corruption 
&lt;br&gt;&amp;gt; bugs seriously. With all the details that Pat gave, is there a chance that 
&lt;br&gt;&amp;gt; you'll fix this issue in the future, for the benefit of all of us who are 
&lt;br&gt;&amp;gt; not familiar enough with Metakit's guts ?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks. 
&lt;/div&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8955376&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8955376p8955376.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8953711</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-13T13:29:42Z</published>
	<updated>2007-02-13T13:29:42Z</updated>
	<author>
		<name>Pat Thoyts-2</name>
	</author>
	<content type="html">&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8953711&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt;Thank you very much for your help, Pat.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Does it mean you made the simple test I described and nothing happened ?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;What did you change to c4_FileStrategy ?
&lt;br&gt;&lt;br&gt;I asked and it turns out I am not being given permission to post the
&lt;br&gt;code for my c4_Win32FileStrategy implementation. Quite frankly I'm
&lt;br&gt;rather disgusted with my bosses about this decision. If we are to
&lt;br&gt;build upon an open source foundation the very least we could do is
&lt;br&gt;share information freely. At least I can describe what was done
&lt;br&gt;without explicit reference to the code. Maybe later I can clue them up
&lt;br&gt;a bit.
&lt;br&gt;&lt;br&gt;We implemented a file format based upon metakit for storing
&lt;br&gt;application specific data and discovered that when accessed over
&lt;br&gt;network shares we sometimes obtained corrupt matakit databases. The
&lt;br&gt;symptoms were generally swapped columns (the size data would appear in
&lt;br&gt;the timestamp column and vice versa for instance). After a lot of
&lt;br&gt;searching I was able to show the problem is to do with the handling of
&lt;br&gt;memory mapped files over the network share.
&lt;br&gt;&lt;br&gt;I then examined carefully the way the data looked in the
&lt;br&gt;ResetFileMapping function when saving. Metakit doesn't use memory
&lt;br&gt;mapping the way that most applications do and I think this confuses
&lt;br&gt;the windows network layer that handles this. Metakit maps the file as
&lt;br&gt;a read-only memory mapping and when it saves it re-serializes into the
&lt;br&gt;underlying file. It then drops the current mapping and re-maps the
&lt;br&gt;file. What I observed was that when it re-mapped it got the original
&lt;br&gt;data and did not in fact re-map the newly written data at all. I found
&lt;br&gt;it useful to dump the mapped memory image to a sequence of temporary
&lt;br&gt;files to compare the various products when testing this.
&lt;br&gt;&lt;br&gt;Now metakit by default doesn't provide much control over how a file
&lt;br&gt;gets accessed. You pass in a filename and a mode (readonly or
&lt;br&gt;readwrite) and it gets opened for you. If you look in src/fileio.c you
&lt;br&gt;can find the DataOpen function and see it is using the C library to
&lt;br&gt;open the file and uses fseek/fprintf/fread to manipulate the file. I
&lt;br&gt;wrote a new implementation that eliminates the use of the C library
&lt;br&gt;functions and instead allows us to use CreateFile,ReadFile, WriteFile
&lt;br&gt;and SetFilePosition instead. The primary advantage of this is that
&lt;br&gt;instead of having metakit open a filename we use CreateFile to open
&lt;br&gt;the file and then have metakit attach to the file handle. In use it
&lt;br&gt;goes something like:
&lt;br&gt;&lt;br&gt;&amp;nbsp; HFILE hFile = CreateFile(....);
&lt;br&gt;&amp;nbsp; c4_Strategy *pStrategy = new c4_Win32FileStrategy();
&lt;br&gt;&amp;nbsp; if (!pStrategy-&amp;gt;DataOpen(hFile, true)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return STG_E_ACCESSDENIED;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&amp;nbsp; c4_Storage *pStorage = new c4_Storage(*m_pStrategy, false, 1);
&lt;br&gt;&lt;br&gt;This permits us to specify much more completely the Win32 flags and
&lt;br&gt;permissions used to open the file. It also lets us provide our own
&lt;br&gt;file prefix before the metakit data section which is another reason we
&lt;br&gt;use this method.
&lt;br&gt;&lt;br&gt;Using the above we can open the file with the dwAccessMode set to 0
&lt;br&gt;for network files or FILE_SHARE_READ for local files. We can also add
&lt;br&gt;some flags - 
&lt;br&gt;FILE_ATTRIBUTE_NORMAL|FILE_FLAG_RANDOM_ACCESS |FILE_FLAG_WRITE_THROUGH
&lt;br&gt;seems about right. We also use FILE_FLAG_OVERLAPPED but I don't think
&lt;br&gt;that has anything to do with the corruption issues.
&lt;br&gt;&lt;br&gt;The key point for me was taking absolute control of how the file was
&lt;br&gt;opened. If you have exclusive access to the file then you don't need
&lt;br&gt;to worry about anyone else - virus checker or not - until you close
&lt;br&gt;the file handle. Some of the other flags (overlapped or random access)
&lt;br&gt;may or may not contribute to solving the problem, but I think I tested
&lt;br&gt;a number of combinations before settling with exclusive access.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Pat Thoyts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.patthoyts.tk/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.patthoyts.tk/&lt;/a&gt;&lt;br&gt;PGP fingerprint 2C 6E 98 07 2C 59 C8 97 &amp;nbsp;10 CE 11 E6 04 E0 B9 DD
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8953711&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8915516p8953711.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8952839</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-13T12:47:03Z</published>
	<updated>2007-02-13T12:47:03Z</updated>
	<author>
		<name>Matt Oberle</name>
	</author>
	<content type="html">Pat,
&lt;br&gt;I would also be grateful if you could send me a copy of your
&lt;br&gt;c4_FileStrategy.
&lt;br&gt;Regards,
&lt;br&gt;Matt Oberle
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Pat,
&lt;br&gt;&lt;br&gt;I'm running a far less ambitious but similarly configured ( Windows network
&lt;br&gt;) shared database and, despite arbitrating access, have experienced some of
&lt;br&gt;the trouble you and Hector are talking about. I would be very grateful if
&lt;br&gt;you would send me a copy of the c4_FileStrategy scheme that you have
&lt;br&gt;implemented - it certainly sounds like you've cracked the problem.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Phil Bennett
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8952839&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;metakit-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8952839&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;metakit-bounces@...&lt;/a&gt;] On
&lt;br&gt;Behalf
&lt;br&gt;Of Pat Thoyts
&lt;br&gt;Sent: 13 February 2007 15:28
&lt;br&gt;To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8952839&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;
&lt;br&gt;Cc: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8952839&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;metakit@...&lt;/a&gt;
&lt;br&gt;Subject: Re: [Metakit] Corrupted database over network - WinNT
&lt;br&gt;&lt;br&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8952839&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; As I mentioned in an earlier post -- the solution is to ensure that
&lt;br&gt;&amp;gt;&amp;gt; metakit files on network shares are opened for exclusive access. You
&lt;br&gt;&amp;gt;&amp;gt; can write your own c4_FileStrategy implementation to handle this and
&lt;br&gt;&amp;gt;&amp;gt; use it in the c4_Storage constructor. The PathIsNetworkPath Win32 API
&lt;br&gt;&amp;gt;&amp;gt; is also a useful function here.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;No, you can't prevent an antivirus from scanning your file. Just
&lt;br&gt;&amp;gt;looking at the file attributes is enough to corrupt it (if it's
&lt;br&gt;&amp;gt;followed by another commit). At least, it is what I observe with my
&lt;br&gt;&amp;gt;program. If you too have an application that can commit to a metakit
&lt;br&gt;&amp;gt;file through a network, please make the test and tell me if you
&lt;br&gt;&amp;gt;observe the same corruption. Maybe it's my program's fault, but
&lt;br&gt;&amp;gt;sincerely I doubt it.
&lt;/div&gt;&lt;br&gt;I can't post you the whole lot but I can give you the re-implementation
&lt;br&gt;of c4_FileStrategy that we use. We have some 32GB of data in over
&lt;br&gt;18000 files on a Windows network shared storage and none of them are
&lt;br&gt;corrupt and people do use them over the network share.
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Pat Thoyts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.patthoyts.tk/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.patthoyts.tk/&lt;/a&gt;&lt;br&gt;PGP fingerprint 2C 6E 98 07 2C 59 C8 97 &amp;nbsp;10 CE 11 E6 04 E0 B9 DD
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8952839&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;No virus found in this incoming message.
&lt;br&gt;Checked by AVG Free Edition.
&lt;br&gt;Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/02/2007
&lt;br&gt;13:23
&lt;br&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;No virus found in this outgoing message.
&lt;br&gt;Checked by AVG Free Edition.
&lt;br&gt;Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/02/2007
&lt;br&gt;13:23
&lt;br&gt;&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8952839&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8952839&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8915516p8952839.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8947016</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-13T08:03:59Z</published>
	<updated>2007-02-13T08:03:59Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">Thank you very much for your help, Pat.
&lt;br&gt;&lt;br&gt;Does it mean you made the simple test I described and nothing happened ?
&lt;br&gt;&lt;br&gt;What did you change to c4_FileStrategy ?
&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8947016&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8915516p8947016.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8946709</id>
	<title>RE: Corrupted database over network - WinNT</title>
	<published>2007-02-13T07:50:16Z</published>
	<updated>2007-02-13T07:50:16Z</updated>
	<author>
		<name>phil bennett</name>
	</author>
	<content type="html">Pat,
&lt;br&gt;&lt;br&gt;I'm running a far less ambitious but similarly configured ( Windows network
&lt;br&gt;) shared database and, despite arbitrating access, have experienced some of
&lt;br&gt;the trouble you and Hector are talking about. I would be very grateful if
&lt;br&gt;you would send me a copy of the c4_FileStrategy scheme that you have
&lt;br&gt;implemented - it certainly sounds like you've cracked the problem.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Phil Bennett
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8946709&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;metakit-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8946709&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;metakit-bounces@...&lt;/a&gt;] On Behalf
&lt;br&gt;Of Pat Thoyts
&lt;br&gt;Sent: 13 February 2007 15:28
&lt;br&gt;To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8946709&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;
&lt;br&gt;Cc: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8946709&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;metakit@...&lt;/a&gt;
&lt;br&gt;Subject: Re: [Metakit] Corrupted database over network - WinNT
&lt;br&gt;&lt;br&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8946709&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; As I mentioned in an earlier post -- the solution is to ensure that
&lt;br&gt;&amp;gt;&amp;gt; metakit files on network shares are opened for exclusive access. You
&lt;br&gt;&amp;gt;&amp;gt; can write your own c4_FileStrategy implementation to handle this and
&lt;br&gt;&amp;gt;&amp;gt; use it in the c4_Storage constructor. The PathIsNetworkPath Win32 API
&lt;br&gt;&amp;gt;&amp;gt; is also a useful function here.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;No, you can't prevent an antivirus from scanning your file. Just
&lt;br&gt;&amp;gt;looking at the file attributes is enough to corrupt it (if it's
&lt;br&gt;&amp;gt;followed by another commit). At least, it is what I observe with my
&lt;br&gt;&amp;gt;program. If you too have an application that can commit to a metakit
&lt;br&gt;&amp;gt;file through a network, please make the test and tell me if you
&lt;br&gt;&amp;gt;observe the same corruption. Maybe it's my program's fault, but
&lt;br&gt;&amp;gt;sincerely I doubt it.
&lt;/div&gt;&lt;br&gt;I can't post you the whole lot but I can give you the re-implementation
&lt;br&gt;of c4_FileStrategy that we use. We have some 32GB of data in over
&lt;br&gt;18000 files on a Windows network shared storage and none of them are
&lt;br&gt;corrupt and people do use them over the network share.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Pat Thoyts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.patthoyts.tk/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.patthoyts.tk/&lt;/a&gt;&lt;br&gt;PGP fingerprint 2C 6E 98 07 2C 59 C8 97 &amp;nbsp;10 CE 11 E6 04 E0 B9 DD
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8946709&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;No virus found in this incoming message.
&lt;br&gt;Checked by AVG Free Edition.
&lt;br&gt;Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/02/2007
&lt;br&gt;13:23
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;No virus found in this outgoing message.
&lt;br&gt;Checked by AVG Free Edition.
&lt;br&gt;Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/02/2007
&lt;br&gt;13:23
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8946709&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8915516p8946709.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8946345</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-13T07:28:16Z</published>
	<updated>2007-02-13T07:28:16Z</updated>
	<author>
		<name>Pat Thoyts-2</name>
	</author>
	<content type="html">&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8946345&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; As I mentioned in an earlier post -- the solution is to ensure that
&lt;br&gt;&amp;gt;&amp;gt; metakit files on network shares are opened for exclusive access. You
&lt;br&gt;&amp;gt;&amp;gt; can write your own c4_FileStrategy implementation to handle this and
&lt;br&gt;&amp;gt;&amp;gt; use it in the c4_Storage constructor. The PathIsNetworkPath Win32 API
&lt;br&gt;&amp;gt;&amp;gt; is also a useful function here.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;No, you can't prevent an antivirus from scanning your file. Just
&lt;br&gt;&amp;gt;looking at the file attributes is enough to corrupt it (if it's
&lt;br&gt;&amp;gt;followed by another commit). At least, it is what I observe with my
&lt;br&gt;&amp;gt;program. If you too have an application that can commit to a metakit
&lt;br&gt;&amp;gt;file through a network, please make the test and tell me if you
&lt;br&gt;&amp;gt;observe the same corruption. Maybe it's my program's fault, but
&lt;br&gt;&amp;gt;sincerely I doubt it.
&lt;/div&gt;&lt;br&gt;I can't post you the whole lot but I can give you the re-implementation
&lt;br&gt;of c4_FileStrategy that we use. We have some 32GB of data in over
&lt;br&gt;18000 files on a Windows network shared storage and none of them are
&lt;br&gt;corrupt and people do use them over the network share.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Pat Thoyts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.patthoyts.tk/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.patthoyts.tk/&lt;/a&gt;&lt;br&gt;PGP fingerprint 2C 6E 98 07 2C 59 C8 97 &amp;nbsp;10 CE 11 E6 04 E0 B9 DD
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8946345&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8915516p8946345.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8935682</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-12T15:40:58Z</published>
	<updated>2007-02-12T15:40:58Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">&amp;gt; As I mentioned in an earlier post -- the solution is to ensure that
&lt;br&gt;&amp;gt; metakit files on network shares are opened for exclusive access. You
&lt;br&gt;&amp;gt; can write your own c4_FileStrategy implementation to handle this and
&lt;br&gt;&amp;gt; use it in the c4_Storage constructor. The PathIsNetworkPath Win32 API
&lt;br&gt;&amp;gt; is also a useful function here.
&lt;br&gt;&lt;br&gt;No, you can't prevent an antivirus from scanning your file. Just looking at 
&lt;br&gt;the file attributes is enough to corrupt it (if it's followed by another 
&lt;br&gt;commit). At least, it is what I observe with my program. If you too have an 
&lt;br&gt;application that can commit to a metakit file through a network, please make 
&lt;br&gt;the test and tell me if you observe the same corruption. Maybe it's my 
&lt;br&gt;program's fault, but sincerely I doubt it. 
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8935682&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8915516p8935682.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8935103</id>
	<title>Re: Corrupted database over network - WinNT</title>
	<published>2007-02-12T15:09:06Z</published>
	<updated>2007-02-12T15:09:06Z</updated>
	<author>
		<name>Pat Thoyts-2</name>
	</author>
	<content type="html">&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8935103&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Hector@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;I think I have located the origin of this long-lasting corruption problem.
&lt;br&gt;&amp;gt;Here is what I have observed with my application on an XP network:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;1/ the program commits to a metakit file located on the network. It's OK.
&lt;br&gt;&amp;gt;2/ a process slightly touches the file. It can be as slight as an anti-virus
&lt;br&gt;&amp;gt;who scans the file, or a person who checks the properties of the file
&lt;br&gt;&amp;gt;(e.g last modification time), etc...
&lt;br&gt;&amp;gt;3/ if the program commits once again, then the file is corrupted !!!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;This only happens whith files on a network. I can't explain any more
&lt;br&gt;&amp;gt;than this, but it gives me the shivers to think how fragile my metakit
&lt;br&gt;&amp;gt;files are :(
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;As I mentioned in an earlier post -- the solution is to ensure that
&lt;br&gt;metakit files on network shares are opened for exclusive access. You
&lt;br&gt;can write your own c4_FileStrategy implementation to handle this and
&lt;br&gt;use it in the c4_Storage constructor. The PathIsNetworkPath Win32 API
&lt;br&gt;is also a useful function here.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Pat Thoyts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.patthoyts.tk/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.patthoyts.tk/&lt;/a&gt;&lt;br&gt;PGP fingerprint 2C 6E 98 07 2C 59 C8 97 &amp;nbsp;10 CE 11 E6 04 E0 B9 DD
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8935103&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8915516p8935103.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8915516</id>
	<title>Corrupted database over network - WinNT</title>
	<published>2007-02-11T13:58:17Z</published>
	<updated>2007-02-11T13:58:17Z</updated>
	<author>
		<name>Hector-8</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I think I have located the origin of this long-lasting corruption problem.
&lt;br&gt;Here is what I have observed with my application on an XP network:
&lt;br&gt;&lt;br&gt;1/ the program commits to a metakit file located on the network. It's OK.
&lt;br&gt;2/ a process slightly touches the file. It can be as slight as an anti-virus
&lt;br&gt;who scans the file, or a person who checks the properties of the file (e.g 
&lt;br&gt;last modification time), etc...
&lt;br&gt;3/ if the program commits once again, then the file is corrupted !!!
&lt;br&gt;&lt;br&gt;This only happens whith files on a network. I can't explain any more than 
&lt;br&gt;this, but it gives me the shivers to think how fragile my metakit files are 
&lt;br&gt;:(
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8915516&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Corrupted-database-over-network---WinNT-tp8915516p8915516.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8907374</id>
	<title>Re: multiple readers and multiple writers</title>
	<published>2007-02-10T19:35:06Z</published>
	<updated>2007-02-10T19:35:06Z</updated>
	<author>
		<name>Brian Kelley</name>
	</author>
	<content type="html">metakit supports one writer and multiple readers with the caveat if
&lt;br&gt;the writers writes to the same table a reader is &amp;quot;reading&amp;quot; the reader
&lt;br&gt;becomes invalid. &amp;nbsp;I.e. the data is not what you would expect.
&lt;br&gt;&lt;br&gt;Brian
&lt;br&gt;&lt;br&gt;On 2/10/07, Eric S. Johansson &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8907374&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;esj@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I forget if I've asked this before and I apologize if I did. Does
&lt;br&gt;&amp;gt; metakit use a shared memory model of operation and support multiple
&lt;br&gt;&amp;gt; readers and multiple writers? &amp;nbsp;My application is drowning in little dbm
&lt;br&gt;&amp;gt; files and I'd like to unify things and take advantage of keeping data in
&lt;br&gt;&amp;gt; memory whenever possible. &amp;nbsp;as I told a friend of mine:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; each user has &amp;nbsp;a fast white list, a cache for green, yellow, red traps.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; for site wide, I have a verify cache as well as reputation and rate of
&lt;br&gt;&amp;gt; arrival. &amp;nbsp;rate of arrival and reputation will need to be accessible from
&lt;br&gt;&amp;gt; multiple systems.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; when processing messages and done, I open fast white list (user
&lt;br&gt;&amp;gt; specific), verify cache, reputation, and and one of the green, yellow,
&lt;br&gt;&amp;gt; red traps. &amp;nbsp;Right now with DBMS, most of the transactions are
&lt;br&gt;&amp;gt; open/lock/rw/close.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I know I keep circling around the drain on this topic but I think that's
&lt;br&gt;&amp;gt; because back of my brain is telling me that my current solution is
&lt;br&gt;&amp;gt; wrong. &amp;nbsp;I'm just hoping when my friend pops over to talk about databases
&lt;br&gt;&amp;gt; that I can stop circling. &amp;nbsp;:-)
&lt;br&gt;&amp;gt; ---eric
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Speech-recognition in use. &amp;nbsp;It makes mistakes, I correct some.
&lt;br&gt;&amp;gt; _____________________________________________
&lt;br&gt;&amp;gt; Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8907374&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8907374&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/multiple-readers-and-multiple-writers-tp8903855p8907374.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8903855</id>
	<title>multiple readers and multiple writers</title>
	<published>2007-02-10T11:14:20Z</published>
	<updated>2007-02-10T11:14:20Z</updated>
	<author>
		<name>Eric S. Johansson</name>
	</author>
	<content type="html">I forget if I've asked this before and I apologize if I did. Does 
&lt;br&gt;metakit use a shared memory model of operation and support multiple 
&lt;br&gt;readers and multiple writers? &amp;nbsp;My application is drowning in little dbm 
&lt;br&gt;files and I'd like to unify things and take advantage of keeping data in 
&lt;br&gt;memory whenever possible. &amp;nbsp;as I told a friend of mine:
&lt;br&gt;&lt;br&gt;each user has &amp;nbsp;a fast white list, a cache for green, yellow, red traps.
&lt;br&gt;&lt;br&gt;for site wide, I have a verify cache as well as reputation and rate of 
&lt;br&gt;arrival. &amp;nbsp;rate of arrival and reputation will need to be accessible from 
&lt;br&gt;multiple systems.
&lt;br&gt;&lt;br&gt;when processing messages and done, I open fast white list (user 
&lt;br&gt;specific), verify cache, reputation, and and one of the green, yellow, 
&lt;br&gt;red traps. &amp;nbsp;Right now with DBMS, most of the transactions are 
&lt;br&gt;open/lock/rw/close.
&lt;br&gt;&lt;br&gt;I know I keep circling around the drain on this topic but I think that's 
&lt;br&gt;because back of my brain is telling me that my current solution is 
&lt;br&gt;wrong. &amp;nbsp;I'm just hoping when my friend pops over to talk about databases 
&lt;br&gt;that I can stop circling. &amp;nbsp;:-)
&lt;br&gt;---eric
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Speech-recognition in use. &amp;nbsp;It makes mistakes, I correct some.
&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8903855&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/multiple-readers-and-multiple-writers-tp8903855p8903855.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8898781</id>
	<title>NEWBIE: How do I retrieve the row index?</title>
	<published>2007-02-10T00:24:11Z</published>
	<updated>2007-02-10T00:24:11Z</updated>
	<author>
		<name>David Capps</name>
	</author>
	<content type="html">Consider this code:
&lt;br&gt;&lt;br&gt;#Create a database:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; import metakit
&lt;br&gt;&amp;gt; db = metakit.storage(&amp;quot;passwordfile.mk&amp;quot;,1)
&lt;br&gt;&amp;gt; #Create a view (this is the Metakit term for &amp;quot;table&amp;quot;):
&lt;br&gt;&amp;gt; vw = db.getas(&amp;quot;users[username:S,password:S]&amp;quot;)
&lt;br&gt;&amp;gt; #get user name to add
&lt;br&gt;&amp;gt; user = raw_input('User Name to Add: ')
&lt;br&gt;&amp;gt; # check and see if it exists in datafile already
&lt;br&gt;&amp;gt; c_vw = vw.select(username=user)
&lt;br&gt;&amp;gt; if c_vw:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; for r in c_vw:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ix = vw.find(username=user, start=2) #=================&amp;gt;&amp;gt;&amp;gt;&amp;gt;wanted
&lt;br&gt;&amp;gt; to get row index here, is broken
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print r.username + ' already exists in database at: ', ix
&lt;br&gt;&amp;gt; else:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; # get a password for the new user
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; passw = raw_input('Password for that user: ')
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; #Add a row (this is the Metakit term for &amp;quot;record&amp;quot;):
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; idx = vw.append(username=user,password=passw)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; print 'Base0 index position where record was inserted: ' + str(idx)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; #Commit the changes to file:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; db.commit()
&lt;br&gt;&amp;gt; #Show a list of all users
&lt;br&gt;&amp;gt; for r in vw: print r.username, r.password
&lt;/div&gt;&lt;br&gt;#==============&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;END SCRIPT
&lt;br&gt;&lt;br&gt;I have been through all the documentation that I could find, and was unable
&lt;br&gt;&amp;gt; to find out how to get the row index.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Could someone give a push in the right direction??
&lt;br&gt;&lt;br&gt;TIA :-)
&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8898781&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/NEWBIE%3A-How-do-I-retrieve-the-row-index--tp8898781p8898781.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8884491</id>
	<title>Re: error while database is on windows file server</title>
	<published>2007-02-09T04:01:02Z</published>
	<updated>2007-02-09T04:01:02Z</updated>
	<author>
		<name>Pat Thoyts-2</name>
	</author>
	<content type="html">&amp;quot;Florent Lejeune&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8884491&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;flejeune@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;Hi
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;We use Metakit to store miscellaneous information for our programe. It works on windows, 
&lt;br&gt;&amp;gt;macosx and linux.
&lt;br&gt;&amp;gt;It happens that when the database is created on the windows network, we have some problem 
&lt;br&gt;&amp;gt;with the windows application (we use metakit-2.4.9.6).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Below you will find a program that creates a file, adds rows, and retrieves information.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;The Find function doesn't return anything and a manuel search also gives no result. In our 
&lt;br&gt;&amp;gt;main program, the Find() function remains in an infinite loop.
&lt;br&gt;&amp;gt;It works fine with other plateform combinations : from windows client to simple windows 
&lt;br&gt;&amp;gt;sharing, from macosx client to windows file server and from macosx client to macosx apple share 
&lt;br&gt;&amp;gt;file server.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Thanks for any suggestion about this.
&lt;/div&gt;&lt;br&gt;You don't say what kind of problem you have with the network files but
&lt;br&gt;I will make a guess that it sometimes produces corrupt metakit
&lt;br&gt;databases. Metakit works by mapping the file into memory as a
&lt;br&gt;read-only memory mapped file and when it saves any changes it
&lt;br&gt;serializes the in-memory version to the file, unmaps and re-maps the
&lt;br&gt;database. We found that when the file is on a network share the re-map
&lt;br&gt;step doesn't re-map the new file, but instead maps the old image and
&lt;br&gt;breaks everything.
&lt;br&gt;&lt;br&gt;The simplest solution I found was to ensure that if the file is mapped
&lt;br&gt;to a network share that we open the windows file for exclusive
&lt;br&gt;access. There are likely some longer posts about my bug hunt in the
&lt;br&gt;archive for this list if this is relevant.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Pat Thoyts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.patthoyts.tk/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.patthoyts.tk/&lt;/a&gt;&lt;br&gt;PGP fingerprint 2C 6E 98 07 2C 59 C8 97 &amp;nbsp;10 CE 11 E6 04 E0 B9 DD
&lt;br&gt;&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8884491&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/error-while-database-is-on-windows-file-server-tp8882893p8884491.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8882893</id>
	<title>error while database is on windows file server</title>
	<published>2007-02-09T01:51:58Z</published>
	<updated>2007-02-09T01:51:58Z</updated>
	<author>
		<name>Florent Lejeune</name>
	</author>
	<content type="html">Hi
&lt;br&gt;&lt;br&gt;We use Metakit to store miscellaneous information for our programe. It works on windows, 
&lt;br&gt;macosx and linux.
&lt;br&gt;It happens that when the database is created on the windows network, we have some problem 
&lt;br&gt;with the windows application (we use metakit-2.4.9.6).
&lt;br&gt;&lt;br&gt;Below you will find a program that creates a file, adds rows, and retrieves information.
&lt;br&gt;&lt;br&gt;The Find function doesn't return anything and a manuel search also gives no result. In our 
&lt;br&gt;main program, the Find() function remains in an infinite loop.
&lt;br&gt;It works fine with other plateform combinations : from windows client to simple windows 
&lt;br&gt;sharing, from macosx client to windows file server and from macosx client to macosx apple share 
&lt;br&gt;file server.
&lt;br&gt;&lt;br&gt;Thanks for any suggestion about this.
&lt;br&gt;&lt;br&gt;PS: our windows file server is a macosx with Samba. we compile with visual studio 2005
&lt;br&gt;&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;
&lt;br&gt;#include &amp;lt;stdlib.h&amp;gt;
&lt;br&gt;#include &amp;lt;conio.h&amp;gt;
&lt;br&gt;#include &amp;lt;string.h&amp;gt;
&lt;br&gt;#include &amp;lt;mk4.h&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;void main(int argc, char **argv)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp;char dbpath[100]=&amp;quot;&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp;printf(&amp;quot;Choose a db destination :\n\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp;printf(&amp;quot;1 - &amp;nbsp;Local\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp;printf(&amp;quot;2 - &amp;nbsp;Network : Windows file server\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp;printf(&amp;quot;3 - &amp;nbsp;Network : Windows sharing\n\n&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;switch (getche())
&lt;br&gt;&amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case '1':
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strcpy(dbpath,&amp;quot;c:\\zdrop\\metakit_tutorial.db&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case '2':
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strcpy(dbpath,&amp;quot;\\\\Noe\\Developpement\\metakit_tutorial.db&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case '3':
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strcpy(dbpath,&amp;quot;\\\\Ordiludovic\\partageArticque\\metakit_tutorial.db&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp;printf(&amp;quot;\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp;if (strlen(dbpath)&amp;gt;0)
&lt;br&gt;&amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;fflush(stdin);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;FILE *fp=NULL;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// remove if present
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if ((fp=fopen(dbpath,&amp;quot;r&amp;quot;))!=NULL)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fclose(fp);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unlink(dbpath);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// create db
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;c4_Storage database(dbpath, true);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// add datas
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;c4_View maps=database.GetAs(&amp;quot;maps[mid:S,mwidth:I,mheight:I,mpath:S]&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;c4_StringProp mid(&amp;quot;mid&amp;quot;),mpath(&amp;quot;mpath&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;c4_IntProp mwidth(&amp;quot;mwidth&amp;quot;),mheight(&amp;quot;mheight&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;c4_Row maprow;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mid(maprow)=&amp;quot;A&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mwidth(maprow)=10;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mheight(maprow)=10;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mpath(maprow)=&amp;quot;/home/MapA.vxf&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;maps.Add(maprow);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mid(maprow)=&amp;quot;B&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mwidth(maprow)=20;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mheight(maprow)=20;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mpath(maprow)=&amp;quot;/home/MapB.vxf&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;maps.Add(maprow);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mid(maprow)=&amp;quot;C&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mwidth(maprow)=30;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mheight(maprow)=30;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mpath(maprow)=&amp;quot;/home/MapC.vxf&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;maps.Add(maprow);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// save
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;database.Commit();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// add more datas
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;c4_View datas=database.GetAs(&amp;quot;datas[did:S,dmapid:S,dpath:S]&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// add data
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;c4_StringProp did(&amp;quot;did&amp;quot;),dmapid(&amp;quot;dmapid&amp;quot;),dpath(&amp;quot;dpath&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;c4_Row &amp;nbsp;datarow;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;did(datarow)=&amp;quot;1&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dmapid(datarow)=&amp;quot;A&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dpath(datarow)=&amp;quot;/home/A1.txt&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;datas.Add(datarow);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;did(datarow)=&amp;quot;2&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dmapid(datarow)=&amp;quot;A&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dpath(datarow)=&amp;quot;/home/A2.txt&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;datas.Add(datarow);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;did(datarow)=&amp;quot;3&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dmapid(datarow)=&amp;quot;B&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dpath(datarow)=&amp;quot;/home/B1.txt&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;datas.Add(datarow);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;did(datarow)=&amp;quot;4&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dmapid(datarow)=&amp;quot;B&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dpath(datarow)=&amp;quot;/home/B2.txt&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;datas.Add(datarow);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;did(datarow)=&amp;quot;5&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dmapid(datarow)=&amp;quot;C&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dpath(datarow)=&amp;quot;/home/C1.txt&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;datas.Add(datarow);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// save
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;database.Commit();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// Find data
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;long idxsearch=-1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;c4_Row findrow;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dmapid(findrow)=&amp;quot;B&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;while(1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;idxsearch=datas.Find(findrow,idxsearch+1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (idxsearch&amp;gt;=0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf(&amp;quot;DATA %s has dmapid=%s\n&amp;quot;,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(const char*)dpath(datas[idxsearch]),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(const char*)dmapid(datas[idxsearch]));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// manuel search
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;c4_Row strrow;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;const char*strdata;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;const char*expr=&amp;quot;ome/B&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;for (int idx=0;idx&amp;lt;datas.GetSize();idx++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strdata=(const char*)dpath(datas[idx]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (strstr(strdata,expr)!=NULL)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf(&amp;quot;map %s has the string '%s' in the path\n&amp;quot;,strdata,expr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp;printf(&amp;quot;Test over\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp;getch();
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Florent Lejeune
&lt;br&gt;Développeur
&lt;br&gt;&amp;nbsp;
&lt;br&gt;Articque
&lt;br&gt;Moulin des Roches
&lt;br&gt;37230 Fondettes
&lt;br&gt;France
&lt;br&gt;web = &lt;a href=&quot;http://www.articque.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.articque.com&lt;/a&gt;&lt;br&gt;tel: +33 02 47 49 90 49
&lt;br&gt;fax: +33 02 47 49 91 49 
&lt;br&gt;_____________________________________________
&lt;br&gt;Metakit mailing list &amp;nbsp;- &amp;nbsp;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8882893&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Metakit@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://www.equi4.com/mailman/listinfo/metakit&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.equi4.com/mailman/listinfo/metakit&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/error-while-database-is-on-windows-file-server-tp8882893p8882893.html" />
</entry>

</feed>
