Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

Async Rugby

 [1/4] from: henrik:webz:dk at: 1-May-2007 15:29


On 24/04/2007, at 18:19, Gabriele Santilli wrote:
> 2007/4/24, Henrik Mikael Kristensen <henrik-webz.dk>: >> By the async sources, do you mean:
<<quoted lines omitted: 4>>
> Latest one is: http://www.colellachiara.com/soft/libs/async-protocol.r > It won't help much if Rugby is not using async-modes though.
I'm inclined to do a rewrite of hipe.r as Maarten mentions on AltME: If you use async:// you'll have to rewrite hipe.r and use Gabriele's do-after, do-every mezzanines as well. Would be great, because then there is a fully async Rugby and it *is* do-able. Kinda puts the stress on REBOL services. Note that the stub layer etc. will still work as that is decoupled from transport. as I'm constantly frustrated with the lack of async ability for properly displaying wait indicators and generally avoid program lock ups, particularly with get-rugby-service and with unreliable networks. But I'm afraid I haven't the foggiest idea how to do that. I'm looking at hipe.r, but it looks to me as if hipe is handling threading, ports, handlers and such in a way, that replacing it or rewriting it to use async:// doesn't add up for me. It seems I should attack a lower level than hipe, to do this. Any help would be appreciated. -- Regards, Henrik Mikael Kristensen

 [2/4] from: santilli:gabriele:gmai:l at: 2-May-2007 11:46


2007/5/1, Henrik Mikael Kristensen <henrik-webz.dk>:
> I'm inclined to do a rewrite of hipe.r as Maarten mentions on AltME:
You might also just use /Services and the RPC service. It depends on your app, as /Services may not be mature enough for some kind of apps. However, I think both Gregg and Robert are using it without problems. (Robert also has an experimental version with some http proxy support - if it's working for him we can release that somewhere.) Regards, Gabriele.

 [3/4] from: gregg:pointillistic at: 2-May-2007 8:14


GS> You might also just use /Services and the RPC service. It depends on GS> your app, as /Services may not be mature enough for some kind of apps. GS> However, I think both Gregg and Robert are using it without problems. GS> (Robert also has an experimental version with some http proxy support GS> - if it's working for him we can release that somewhere.) I am using /services, but only the basic operations as there are a lot of unfinished pieces in it. For basic use, it's been very reliable. -- Gregg

 [4/4] from: henrik:webz:dk at: 3-May-2007 11:49


On 02/05/2007, at 11:46, Gabriele Santilli wrote:
> 2007/5/1, Henrik Mikael Kristensen <henrik-webz.dk>: >> I'm inclined to do a rewrite of hipe.r as Maarten mentions on AltME:
<<quoted lines omitted: 3>>
> (Robert also has an experimental version with some http proxy support > - if it's working for him we can release that somewhere.)
I evaluated /Services early in 2006 to see whether it would be useful for my work and while it's good to code for, some nasty hangs during testing prevented me from moving further with it. I learned back then that this is possibly a design flaw in /Services, due to the lack of async and it would not be possible to fix before R3. This was since refuted as being fully possible to fix for R2, but is a priority issue (no time to fix). The docs say it's a design flaw, so I don't know what to believe. :-) But in short, it's not finished yet and I have no control over it. I do plan to move over to /Services for R3 when it gets completed. I have spent many hours writing apps around Rugby, since the beginning of 2006 and am fully depending on it now in my own development pipeline. I'm in the process of implementing solutions for customers using Rugby. I know what's going on in about 25% of the Rugby code. As I've been digging deeper into it, I've found numerous hangs, bugs and performance issues. Most are fixed and some are hard to fix in Rugby's current form, due to port bugs in REBOL. Here's an overview of what problems there currently are with Rugby, in order of priority: 1. It hangs REBOL showing 0% CPU usage when a server tries to deliver data back to the client and the client is gone. This is due to a port bug, where REBOL seems to wait indefinitely for data. If it happens, both client and server must be restarted. The risk of hang grows if the client is on a slow, unreliable connection. This is a showstopper that must be fixed. 2. It's not async. Sending 1 MB data to a 56k modem from server to client will hold up all other operations. This is fixable, but difficult. It would boost Rugby performance with multiple clients a lot. Even with number 1 fixed, Rugby is still very usable without async. 3. Not all functions and content for transmission can be sent exactly as originally written. This is a thing that you can work around. 4. Some crashes when using /secure, but these are so random and rare, that they are hard to trace. When not using /secure, these crashes don't occur at all. 5. A certain port bug (which outputs NONE! when you read from the port) means that the server reading data from the client is a bit slower than it needs to be. It has to be throttled to read less than 3 kb at a time. However the fixes I made have boosted performance tremendously over the original Rugby Version 5.0.0, which only read 16 bytes at a time and it's reliable so far. 6. The security in Rugby is not that great and can be circumvented using code injection, but no solution has yet been found. I'm not working on this, since I use Rugby primarily in a closed LAN. The hang in number 1 requires expert assistance to fix. But if at least this hang is fixed, Rugby will be very reliable when not using / secure, and it will become possible to recover from a network failure without having to restart all servers and clients. As you can see, Rugby is a better known field to me than /Services and I think I know exactly what needs to be fixed for it to be 99,97% reliable for use with multiple clients in an unreliable network. It's now a matter of how to fix it, which is where I'm stumped. :-) -- Regards, Henrik Mikael Kristensen

Notes
  • Quoted lines have been omitted from some messages.
    View the message alone to see the lines that have been omitted