Yes, I am using MS SQL but I thought I'd rather not use SPs to keep the code
transportable. It was also one of the recommendations in the old Tango 2000
documentation.

I was afraid of getting these answers...
We are now talking redesign...
I wish I knew better what I was getting into.

Thank you for all your input; it really helps.
- Mike.


-----Original Message-----
From: Robert Shubert [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 22, 2004 14:43
To: [EMAIL PROTECTED]
Subject: RE: Witango-Talk: Sleep & While + explanations

One thing to note is that BT/ET actions are very robust with the right
database, and can be trusted.

Also, look into stored procedures, and using internal (to the SP)
transactions. Rather than using a variable to block further db access, use a
value in a table (controlled by the SP).

Better yet, just do everything in the SP and let the DB worry about the
overhead, they are much faster for most things.

Robert 

-----Original Message-----
From: Scott Cadillac [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 22, 2004 14:39
To: [EMAIL PROTECTED]
Subject: RE: Witango-Talk: Sleep & While + explanations

Thank you Mike,

Now I'm seeing a bigger picture for what you're up against.

Yes, the new Threading model in Witango 5.0, although greatly more efficient
in many respects, can introduce timing issue with controlling Transaction
"blocks".

I haven't seen mentioned what Database you're using?

For such a fine need of control, Stored Procedures in SQL Server, for
example, can help. 

A Stored Procedure will execute much faster than a series of Database
Actions, which could go a long way to eliminating timing/resource conflicts.

Hope this helps. Cheers...

  

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: Thursday, April 22, 2004 3:15 PM
> To: [EMAIL PROTECTED]
> Subject: RE: Witango-Talk: Sleep & While + explanations
> 
> 
> Thank you all for your suggestions and comments.
> 
> My confusion is generated by the fact that I do not know how to 
> control the DB access anymore.
> In Tango 2000, it was (relatively) simple. Using "Begin 
> Transaction/End Transaction" I knew that all other processes would not 
> use the DB while my writing operation (for ex.), and the thread would 
> not have been suspended while doing this.
> 
> In V5.0, if I understand this correctly:
> 1- there is no way to guarantee, the thread will not be interrupted 
> while processing inside BT/ET; and
> 2- there is no way of knowing if the BT/ET has already started in a 
> another switched-out thread, unless I design & use some method to 
> synchronize threads (just like a mutex, for ex.).
> 
> My goal was to associate a variable with the exclusive rights to the 
> DB.
> For ex. if the variable>0 it shows the DB is locked, I can wait in a 
> loop, using sleep() for a few ms; When the variable=0 I can increment 
> it, and then check if variable=1, lock the DB for exclusive access, 
> etc.
> I do not believe that using the available metatags I can have such a 
> fine control over the process to avoid dead locks or race conditions; 
> but it is seems better than not trying to control it at all.
> (There is probably a good reason why .NET implemented so many classes 
> to prevent mishandling of threads.)
> 
> Of course I might be wrong on all accounts.
> 
> 
> Mike.
> 
> -----Original Message-----
> From: Scott Cadillac [mailto:[EMAIL PROTECTED]
> Sent: Thursday, April 22, 2004 12:25
> To: [EMAIL PROTECTED]
> Subject: RE: Witango-Talk: Sleep & While + explanations
> 
> Hi Mike,
> 
> > I am a little confused by your response, since my question was in 
> > regard to sleep( milliseconds), which I need in order to
> save CPU in a
> > loop that checks resource availability. Any browser would wait just 
> > fine for a couple of hundred milliseconds.
> 
> If this is the case, why put the check into a loop at all?
> 
> If the system needs a tiny bit of time before the resource can 
> respond, then just let it run as is.
> 
> I understand "why" you want a sleep() function, but I would consider 
> carefully it's implications before using it in a Web application.
> 
>  
> > BTW, I am doing exactly what you suggest, rethinking my
> application. 
> > Until now it worked just fine, under Tango 2000, never had
> a problem. 
> > It still works OK now, under Witango 5 in a test environment, but I 
> > feel uneasy to move it into the production because I did
> not test it
> > in a real, multiuser environment. The big problem is I lack 
> > understanding of how to deal with multi-threading when no
> controlling
> > mechanism is available for managing threads.
> 
> I guess we must be missing a piece of the puzzle here, as to 
> specifically what multi-threading concerns you have.
> 
> If the issue revolves around a particular database query that has a 
> habit of taking a long time, then you will be happy to learn that 
> "threading" under Witango 5.x Servers are greatly improved.
> 
> Tango2000 used "co-operative" threading, whereas Witango 5.x uses 
> "pre-emptive" threading. This is an automatic build-in feature of the 
> Server.
> 
> If resources get scarce, then Witango will respond with greater speed 
> and efficiency then Tango2000 ever can.
> 
> The CPU usage spawned by the "waiting" will be reasonably managed - if 
> it's not, then this is the point where "I" would rethink what I'm 
> doing.
> 
> But yes, managing your own Threading is a great advantage too
> - I also do
> NET development. But even with this kind of power, if a process is 
> going to routinely take a long time, then it's time to rethink the 
> application design.
> 
> I recently did a Custom Reporting application. Another department of 
> my customer was supplying these huge XML files full of Financial 
> figures (200mb+), and my Web app was dynamically parsing the XML for 
> particular content and displaying them for the web - simple enough 
> work.
> 
> But....the processing was incredibly time/CPU intensive for each 
> request, because the files were so huge, that the user was waiting up 
> to 10 seconds for responses.
> 
> So, I did a complete rebuild of the project where I built a Windows 
> Service application that pre-parsed the XML files into smaller more 
> manageable chunks. Instead of one big file, I now have 200 tiny ones.
> 
> The project got carried away because the sample XML files I started 
> with were less than 1mb - next time I'll think further ahead.
> 
> Hope this helps....
> 
> 
> 
> > Mike Bravu.
> > 
> > -----Original Message-----
> > From: Scott Cadillac [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, April 22, 2004 11:03
> > To: [EMAIL PROTECTED]
> > Subject: RE: Witango-Talk: Sleep & While + explanations
> > 
> > Hi Mike,
> > 
> > With regards to your wishful thinking of a sleep() function in 
> > Witango, I think you need to rethink your application a bit.
> > 
> > Regardless of the development platform that may, or may
> not, support a
> > "sleep" or "wait" process - the client component (browser) of your 
> > "Web"
> > application has limited tolerance for such a thing.
> > 
> > Browsers don't like waiting. Although you can craft some
> special HTTP
> > output to make a browser wait (checkout the "Push" attribute), the 
> > results are not always User friendly.
> > 
> > I would suggest building a special webpage/window that periodically 
> > "checks"
> > with the Server if the requested resource is free yet. You
> can do this
> > with JavaScript, or with a META Refresh - and also provide
> Users with
> > intelligent messages.
> > 
> > I know this is not a simple solution from a developer point
> of view,
> > because it's more in the interest of the end-user - but who said 
> > programming would be easy?
> > 
> > -----
> > And although it has been a long time coming, I understand
> an <@WHILE>
> > Meta tag will be coming in version 5.5 (or 6.0?).
> > 
> > 
> > Hope this helps. Cheers.... 
> > 
> > (Note: new phone number April 26th: 403-254-5002)
> > 
> > Scott Cadillac,
> > 403-281-6090 ~ [EMAIL PROTECTED]
> > ------------
> > XML-Extranet ~ http://xmlx.ca ~ http://forums.xmlx.ca Well-formed 
> > Programming in C# .NET, Witango, MSIE and XML
> > ------------
> > IExtranet ~ http://iextranet.ca
> > Witango ~ http://witango.org
> > EasyXSLT ~ http://easyxslt.ca
> > IIS Watcher ~ http://iiswatcher.ca
> > ------------
> >    
> > 
> >  
> > 
> > 
> > ________________________________
> > 
> >     From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> >     Sent: Thursday, April 22, 2004 10:25 AM
> >     To: [EMAIL PROTECTED]
> >     Subject: RE: Witango-Talk: Sleep & While + explanations
> >     
> >     
> >      
> >     I need sleep() (on the server side) to wait for
> availability on a
> > locked resource ( without loading the CPU ).
> >     If I use an external procedure (dos wait) I am not sure
> what is the
> > delay needed to load the DOS interpreter; and I would prefer not to 
> > bind the the solution to an OS. Java can solve all this
> (provided it
> > is already
> > loaded) but I was curious to see if somebody found a simpler way.
> >      
> >     I was aware of while action and that would work just
> fine; however
> > that means I end up fragmenting a results page action; I'd
> rather use
> > <@FOR> if I can make it act as a while (which can be done in all 
> > programming languages that I know), but I found no way to
> do that with
> > witango.
> >      
> >     I wonder, since there are <@TIMER> and <@FOR> metatags, why not 
> > <@SLEEP> and <@WHILE> as well? They are obviously closely
> related and
> > I assume they cannot be that difficult to implement...
> >      
> >              
> >     Thank you for all your suggestions.
> >     Mike Bravu.
> >      
> >      
> >      
> > 
> > ________________________________
> > 
> >     From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> >     Sent: Thursday, April 22, 2004 03:28
> >     To: [EMAIL PROTECTED]
> >     Subject: Witango-Talk: Sleep & While
> >     
> >     
> >     Hello all,
> >      
> >     Can anybody help me out with the Witango equivalents for:
> >     1- sleep( milliseconds );   and
> >     2- while( true ) { }
> >      
> >     The solutions that I found are not acceptable:
> >     1-  except for using externals, if I try to use
> <@TIMER> it seems I
> > burn the CPU, which is not what I want;
> >     2-  <@FOR> </@FOR> does not really work or I do not know how to
> setup
> > Start/Step/Stop
> >      
> >     If the solution is already explained in the documentation I 
> > apologize, I just could not find it.
> >      
> >      
> >     Thank you,
> >     Mike Bravu
> >     
> > ______________________________________________________________
> > __________
> >     TO UNSUBSCRIBE: Go to
> > http://www.witango.com/developer/maillist.taf
> >     
> >     
> > ______________________________________________________________
> > __________
> >     TO UNSUBSCRIBE: Go to
> > http://www.witango.com/developer/maillist.taf
> >     
> > 
> > 
> > 
> > ______________________________________________________________
> > __________
> > TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
> > 
> > ______________________________________________________________
> > __________
> > TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
> > 
> 
> 
> ______________________________________________________________
> __________
> TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
> 
> ______________________________________________________________
> __________
> TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
> 


________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf

________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf

Reply via email to