home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.databases.paradox      To crash or not to crash, asks Borland      9,834 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 8,547 of 9,834   
   Liz McGuire to All   
   Re: HELP with SORT and TMPSRnnn tables   
   24 May 07 10:04:34   
   
   From: liz@paradoxcommunity.com   
      
   User count or usage or data volume increasing could be why you're now   
   seeing more problems.  What we can't know are the details of past   
   problems which may have been caused by this.   
      
   Here's how a Paradox/BDE application is supposed to work:   
      
   1. We have a directory (or more than one, but we'll work with one) where   
   the data lives, and another directory where the .NET file lives and each   
   user has a PRIV directory.   
      
   We start with no open instances of Paradox, no lock files, no net file.   
      
   2. User number 1 fires up Paradox.  Paradox loads the BDE.  The BDE sees   
   there's no .NET file and creates* one.  The BDE then creates* .LCK files   
   in PRIV.  The user opens the application, thus opening tables in our   
   data directory and the BDE creates* .LCK files in said data directory   
   and makes an entry** indicating what locks the user has on the tables.   
   It also makes an edit** in the .NET file.   
      
   So far, we need the following rights (other than "list" and "read",   
   which are a given):   
      
   * Create - in the .NET directory, the PRIV directory and the data directory   
      
   ** Edit - in the .NET and the data directory (I think edit in PRIV goes   
   without saying)   
      
   Opening a table probably requires execute rights, not really sure.   
      
   3. Other users come.  For each user who opens Paradox and starts the   
   application, the BDE makes entries in the .NET file and in the .LCK   
   files in the data directory and creates .LCK files in PRIVs.   
      
   The above rights are still enough - we're creating and editing.   
      
   4. A user closes the app (and Paradox), but others are still using it.   
   The BDE edits the .NET and .LCK files in the data directory and deletes   
   the .LCK files and temp tables in PRIV, probably any temp files the user   
   caused to be created elsewhere too (I know of no comprehensive list of   
   directories where the BDE creates temp files; testing a year or two ago   
   showed the BDE sometimes uses the dir above the one the data is actually   
   in, so we now all recommend the data above all your Paradox dirs be   
   unused and have full rights like the Paradox dirs).   
      
   We now need to add delete rights in PRIV (possibly elsewhere, if the   
   user caused temp files to be created elsewhere).  If the LCK files in   
   PRIV don't get deleted, there's a high likelihood of "different .NET" or   
   other errors the next time the user starts the app.   
      
   5. Steps 3 & 4 repeat ad nauseum through the day.  The .LCK files in the   
   data directory grow and grow and grow and grow.  (The .NET file stays at   
   13 KB, go figure.)  This is all as it should be.   
      
   6. Finally, at the end of the day, the last user exits the application.   
     The BDE deletes their PRIV LCK and temp files, edits the .NET file and   
   *deletes* the LCK files in the data directory.   
      
   * We now need delete rights in the data directory (for sure).   
      
   Here's what happens if we don't have delete rights in the data directory:   
      
   The lock files grow and groW and grOW and gROW and GROW until they're so   
   BIG that Paradox won't work any more and your application runs slower   
   than molasses in winter and users get impatient with it, so they   
   ctrl+alt+delete it, which at first just causes index out of date errors,   
   which cause application errors where the corrupt index is used, and   
   frustration grows and users complain to each other about how stupid this   
   app is or how stupid IT are or how slow the network is and they   
   ctrl+alt+delete the app some more and cause data corruption (unless   
   you're really lucky - glory to Paradox, the BDE and NetWare), some users   
   power off their computers rather than Crtl+Alt+Deleting and pretty soon   
   you've got corruption and GPVs and GPFs and other errors all over the   
   place.  Meanwhile, you're having to take the app down in the middle of   
   the day to run table repair and management are yelling at you for lost   
   productivity...   
      
   All because:   
      
   a) the users don't have delete rights, so the LCK files never get   
   deleted when the last users leaves the app (for lunch, at the end of the   
   day, or whatever) and so they get to an unmanageable size (this is a   
   known and documented issue - lock files cannot grow infinitely - the   
   closer they get to 1MB in size, the slower the app is and the closer   
   failure comes)   
      
   and/or   
      
   b) your users are lazy and leave the app and their computers running   
   24x7 so they don't have to restart it, thus leaving locks forever and   
   interfering with your backups - not to mention losing memory to leaks   
   for days on end, leading to other problems.   
      
   This is the reality of Paradox.  Rights and configurations must be set   
   to *support* it, not to *fight* it.   
      
   There are 2 ways to help avoid users deleting tables:   
      
   1) Use some obscure drive letter for your Paradox files and don't put   
   any other files there and don't allow users to create files at the root   
   of the drive.  Have nothing but folders at the root of the drive.   
      
   2) Use UNC rather than mapped drives, so that it's harder for users to   
   find where your Paradox files live in the first place.   
      
   I suppose you could try using some other tool, run by some user with   
   delete rights, to try deleting the LCK files from the data dir every now   
   and then, but IMO, that's a bad solution.  Just give people delete rights.   
      
   Liz   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca