[Verse-dev] issues with verse

Thorsten Jordan Thorsten_Jordan at gmx.de
Tue Oct 26 20:56:33 CEST 2004


Emil Brink schrieb:
> On Tue, 26 Oct 2004 11:03:19 +0200
> Thorsten Jordan <Thorsten_Jordan at gmx.de> wrote:
> 
>>1)
>>When i push data onto a server that already has some nodes, i sent a 
>>node_list with mask for all types i use. I then received all nodes with 
>>owner == mine set! so the pusher "reuses" some already used nodes, 
>>breaking links and many more...
> 
> 
> Yes, this really sounds like a problem with the current semantics. :/
> I haven't discussed it with Eskil, but I can't see an obvious way out
> of it right now... Perhaps if the host always sent node_create commands
> even *without* a node_list when you create nodes, it would work? That
> is something I have considered, since it made more sense to me that a
> client should get feedback when it creates something, even if it hasn't
> registered (as node_list does) a wish to learn about nodes.
yes, if the client receives automatically what he has created, this 
would be a good thing. Because if there are MANY nodes on the server, 
but the client just want to change its own nodes, he wouldn't have to 
download all.

with the release-r4-branch tag i've checked out the current verse code. 
And the bug is fixed! Thanks Brecht and Emil!

>>When i send a call (create layer, link, fragment, whatever) and receive 
>>it later, can i assume that the content is identical (left aside the 
>>possibility that other clients could alter the data in between)?
> No, in general I wouldn't say that you can. If you could, then there would
> be very little "power" in the saying that the host is authorative, and
> it really is supposed to be. This might mean that it could change part of
> a command and send an altered response back to you, or even that it might
> drop the command altogether and not send a response at all.
thats a good argument. okay

> I haven't gotten around to reading your pusher code, but it seems a bit
> odd that you need to do manual resends; there should never be a need to
> do that with Verse, it should be handled automatically by the protocol
> implementation. If it isn't, then the protocol code is somehow broken,
> and that needs to be fixed rather than worked around.
that is exactly what i think. It is very difficult for a client if he 
has to ensure self that his data is sent completely.
Considering what you found out about the pusher, it seems that longer 
waiting (and calling callback_update meanwhile) helps in more packets 
being sent. The problem is that one doesn't know how long to wait. So 
the pusher either waits to short, leading to "lost" packets and 
resending them, or he waits to long and wastes time...

As a side note: the formula i presented for the waiting time works good 
for linux, but with win32 many more packets are not sent in that time 
(loss 60-80%, linux 10-20%). Maybe linux gets more data over 
localhost/UDP than Win2k? Hmmm, maybe it has to do something with 
optimization... i use -O2 under linux, but Debug-Mode with VC++6.
Oh the cpu consumption of the pusher raised to 20-60% with the new code.

> Heh. Wow indeed... I'm sorry your experience with Verse has been so rough,
> and really hope we can somehow smoothen it in the future.
> 
i'm happy that it works mostly now. Imho there are many things that 
should be done differently. But any advice or wish people send to Eskil, 
seems to get rejected...
Examples for changes: nobody needs different r,g,b layers as colors are 
always handled as triples. The same goes for texture coordinates, you 
may offer real32_xy layers for them (2d textures). Lights not only have 
a color, but three: ambient, diffuse, specular, etc. etc.
However the project has become much better in the last weeks. The server 
is at least useable, with the new pusher i can use verse the first time 
like it should be. Thanks again to you all for your help.

-- 
Greetings, Thorsten


More information about the Verse-dev mailing list