Record Locking: Difference between revisions

From BR Wiki
Jump to navigation Jump to search
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
BR 3.8 uses 31 bit locking. BR 3.9 used 30 bit locking to be compatible with CIFS / SMB products like Samba and SCO Vision. However this proved to be an unacceptable limitation because files that are greater than 1 gigabyte can get random locked records for no apparent reason.
For '''Record Locking''' [[Business Rules!]] uses a "Virtual Record" to lock individual recordsInstead of locking the actual bytes of a record, it locks a single byte in an area that is unused by the file.


As of release levels 3.92i/4.02i/4.12i, 31 bit locking is the default. This will take you to approx 1.8 GB without locking conflicts.  
BR [[3.8]] & Prior used 31 bit '''record locking'''.   This provided for 2**31 or [[2,147,483,648]] [[maximum]] bytes in a data file.
BR [[3.9]] used 30 bit record locking. This provided for 2**30 or [[1,073,741,824]] maximum bytes in a data file.


32 bit locking gives access to about 3.6 GB.
In both cases, BR used a "Virtual Byte" Starting at around 1 gigabyte.


Release 4.03 or 4.13 is required to go to 64 bit locking, although this is not possible on Windows 95, 98 and ME.
Instead of locking record 1, record 1,000,000,001 was locked.
Instead of locking record 2, record 1,000,000,002 was locked.
Instead of locking record 3, record 1,000,000,003 was locked.
Instead of locking record 4, record 1,000,000,004 was locked.


In versions 4.0 and above, the new OPTION statement is provided to specify the
This allowed for [[73,741,824]] records to be locked when using 30 bit record locking.
number of bits to be used for locking:


OPTION 33 ( 30 / 31 / 32 / 64 ) (the default is 31):
The problem with this theory is that in both 30 & 31 bit record locking, real live records used the 1GB section of the file for large files.  As a file grew to be very large, there was a section between 1,000,000,001 and 1,073,741,824 that was used by both the virtual locks and the actual records.
30 bit support is for compatibility with CIFS (e.g. Samba) when needed.
 
31 bit locking allows for data files up to about 1.8 gig depending on record size. The larger the record size, the higher the boundary.
This caused a very strange ERROR [[4233]] where locking a record on 1 [[workstation]], would cause an error reading an available record on another workstation.
32 and 64 bit locking only work on NT/W2K/XP systems. 32 bits support files up to approx 3.6 gig. 32 and 64 bit support is currently only available in releases 4.03 and 4.13.+
 
In order to properly support multi-user record locking on files over 1GB in size, you should use BR [[3.92i]] or greater.
 
 
Versions 3.92i and greater support a new [[Option (config)]].  ([[4.03]] and greater for 64 bit locking)
 
OPTION 33 { 30 | 31 | 32 | 64 }    (default is 31)
 
Option 30, or 2**30 provides for 2**30 or 1GB (1,073,741,824) maximum bytes in a data file.<br>
Option 31, or 2**31 provides for 2**31 or 2GB (2,147,483,648) maximum bytes in a data file.<br>
Option 32, or 2**32 provides for 2**31 or 4GB (4,294,967,296) maximum bytes in a data file.<br>
Option 64, or 2**64 provides for 2**31 or 17,179,869,184GB [[18 Quintillion]] (18,446,744,073,709,551,616) maximum bytes in a data file.
 
* Note: There is a 2**31 limit on the number of records in a Business Rules Table.
* Note: 30 bit locking should be selected to be compatible with CIFS / SMB products like Samba and SCO Vision.  
* Note: 32 bit locking requires a 32 bit OS such as (NT/W2K/XP/Vista/2003/2008)
* Note: 64 bit locking requires a 32 bit OS such as (NT/W2K/XP/Vista/2003/2008)
* Note: 64 bit locking requires the Netware Client for Windows on a Novell Network.
 
The virtual record lock formula was also changed. Now instead of using a starting value, and increasing by one, record 1 now uses the last possible value for the table, and then each record counts backwards. 
 
To provide a reference, 30 bit record locking will behave as follows:
 
Instead of locking record 1, record 1,073,741,824 is locked.
Instead of locking record 2, record 1,073,741,823 is locked.
Instead of locking record 3, record 1,073,741,822 is locked.
Instead of locking record 4, record 1,073,741,821 is locked.
 
As you can see, the true limit of actual available records is a bit smaller than the actual mathematical limit.  2**XX - (# Records)
 
The following table should give you "Safe Limits" for each of the options.
30 bit locking gives access to about 1 GB. (Compatible with Samba)
31 bit locking gives access to about 1.8 GB. (All "[[DOS]]/[[Windows]]" Environments)
32 bit locking gives access to about 3.6 GB. ([[NT]]/[[W2K]]/[[XP]]/[[Vista]])
64 bit locking gives access to about 17,179,869,100 GB. (NT/W2K/XP/Vista)
 
BR will not start two [[sessions]] using different lock bit requirements.
 
A [[message box]] is produced when that is attempted.
 
===Enhancements===
 
BR 3.8 uses 31 [[bit locking]]. BR 3.9 heretofore used 30 bit locking to be compatible with CIFS / SMB products like Samba and SCO Vision.
However this has proven to be an unacceptable limitation because files that are greater than 1 gigabyte can get random locked records for no apparent reason.
 
As of release levels 3.92i/4.02i/4.12i, 31 bit locking is the default.
 
This will take you to prox 1.8 GB without locking conflicts.
 
32 bit locking gives access to about 3.6 GB.
 
Release 4.03 or 4.13 is required to go to 64 bit locking, but this is not possible on Windows 95, 98 and ME.
 
;Abnormal Termination Error Logging
 
A new logging capability is provided for handling BRSERVER failures.
An error log file in the BRSERVER directory is appended to when a BRserver process is abnormally ended. Also, a client msgbox is displayed when an assertion failure or program crash occurs. On Unix systems, the system error log is also updated. Keepalive failures are also logged here.
 
NOTE: It is very useful to, under Windows, RUN DRWTSN32 -I. This will set DR Watson as your default application debugger. There is no way for BR to trap some errors under Windows. However, if DR Watson is activated we can tell a lot from the logs produced by Dr. Watson at the point of error.  
 
Also running DRWTSN32 with no flags places it in a menu driven mode that can enable you to override the Dr. Watson log file directory.


;Other Notes:
;Other Notes:
Line 24: Line 88:
<noinclude>
<noinclude>
[[Category:Needs Help]]
[[Category:Needs Help]]
[[Category:File Operations]]
</noinclude>
</noinclude>

Latest revision as of 19:43, 15 July 2013

For Record Locking Business Rules! uses a "Virtual Record" to lock individual records. Instead of locking the actual bytes of a record, it locks a single byte in an area that is unused by the file.

BR 3.8 & Prior used 31 bit record locking. This provided for 2**31 or 2,147,483,648 maximum bytes in a data file. BR 3.9 used 30 bit record locking. This provided for 2**30 or 1,073,741,824 maximum bytes in a data file.

In both cases, BR used a "Virtual Byte" Starting at around 1 gigabyte.

Instead of locking record 1, record 1,000,000,001 was locked.
Instead of locking record 2, record 1,000,000,002 was locked.
Instead of locking record 3, record 1,000,000,003 was locked.
Instead of locking record 4, record 1,000,000,004 was locked.

This allowed for 73,741,824 records to be locked when using 30 bit record locking.

The problem with this theory is that in both 30 & 31 bit record locking, real live records used the 1GB section of the file for large files. As a file grew to be very large, there was a section between 1,000,000,001 and 1,073,741,824 that was used by both the virtual locks and the actual records.

This caused a very strange ERROR 4233 where locking a record on 1 workstation, would cause an error reading an available record on another workstation.

In order to properly support multi-user record locking on files over 1GB in size, you should use BR 3.92i or greater.


Versions 3.92i and greater support a new Option (config). (4.03 and greater for 64 bit locking)

OPTION 33 { 30 | 31 | 32 | 64 } (default is 31)

Option 30, or 2**30 provides for 2**30 or 1GB (1,073,741,824) maximum bytes in a data file.
Option 31, or 2**31 provides for 2**31 or 2GB (2,147,483,648) maximum bytes in a data file.
Option 32, or 2**32 provides for 2**31 or 4GB (4,294,967,296) maximum bytes in a data file.
Option 64, or 2**64 provides for 2**31 or 17,179,869,184GB 18 Quintillion (18,446,744,073,709,551,616) maximum bytes in a data file.

  • Note: There is a 2**31 limit on the number of records in a Business Rules Table.
  • Note: 30 bit locking should be selected to be compatible with CIFS / SMB products like Samba and SCO Vision.
  • Note: 32 bit locking requires a 32 bit OS such as (NT/W2K/XP/Vista/2003/2008)
  • Note: 64 bit locking requires a 32 bit OS such as (NT/W2K/XP/Vista/2003/2008)
  • Note: 64 bit locking requires the Netware Client for Windows on a Novell Network.

The virtual record lock formula was also changed. Now instead of using a starting value, and increasing by one, record 1 now uses the last possible value for the table, and then each record counts backwards.

To provide a reference, 30 bit record locking will behave as follows:

Instead of locking record 1, record 1,073,741,824 is locked.
Instead of locking record 2, record 1,073,741,823 is locked.
Instead of locking record 3, record 1,073,741,822 is locked.
Instead of locking record 4, record 1,073,741,821 is locked.

As you can see, the true limit of actual available records is a bit smaller than the actual mathematical limit. 2**XX - (# Records)

The following table should give you "Safe Limits" for each of the options.

30 bit locking gives access to about 1 GB. (Compatible with Samba)
31 bit locking gives access to about 1.8 GB. (All "DOS/Windows" Environments)
32 bit locking gives access to about 3.6 GB. (NT/W2K/XP/Vista)
64 bit locking gives access to about 17,179,869,100 GB. (NT/W2K/XP/Vista)

BR will not start two sessions using different lock bit requirements.

A message box is produced when that is attempted.

Enhancements

BR 3.8 uses 31 bit locking. BR 3.9 heretofore used 30 bit locking to be compatible with CIFS / SMB products like Samba and SCO Vision. However this has proven to be an unacceptable limitation because files that are greater than 1 gigabyte can get random locked records for no apparent reason.

As of release levels 3.92i/4.02i/4.12i, 31 bit locking is the default.

This will take you to prox 1.8 GB without locking conflicts.

32 bit locking gives access to about 3.6 GB.

Release 4.03 or 4.13 is required to go to 64 bit locking, but this is not possible on Windows 95, 98 and ME.

Abnormal Termination Error Logging

A new logging capability is provided for handling BRSERVER failures. An error log file in the BRSERVER directory is appended to when a BRserver process is abnormally ended. Also, a client msgbox is displayed when an assertion failure or program crash occurs. On Unix systems, the system error log is also updated. Keepalive failures are also logged here.

NOTE: It is very useful to, under Windows, RUN DRWTSN32 -I. This will set DR Watson as your default application debugger. There is no way for BR to trap some errors under Windows. However, if DR Watson is activated we can tell a lot from the logs produced by Dr. Watson at the point of error.

Also running DRWTSN32 with no flags places it in a menu driven mode that can enable you to override the Dr. Watson log file directory.

Other Notes
  • Large file support on Unix/Linux is currently being researched.
  • BR will not start two sessions using different lock bit requirements, and a message box is produced when that is attempted.
  • The record locking mechanism was substantially revised to enable record locking

without actually locking records. This allows report writers and ODBC to access locked records without interference.