CommonGround Softworks Inc. - Technical Support


Technical Notes

Tech Note #1 - Error message, “Stop on Error Encountered

Tech Note #2 - Write Locking

Tech Note #3 - Record Locking issues with simultaneous Helix Client access

Tech Note #4 - AEEA Limitations

Tech Note #5 - Placement of variable "UserEntry"

Tech Note #6 - MacOS internationalization effect on the PPC browser/Program Linking

Tech Note #7 - Techniques for performing a submit from a graphic image

Tech Note #8 - Foreign Scripting

Tech Note #9 - Multiple <Select> Submissions

Tech Note #10 - Auto-Guest Control Panel and MacOS 9


Frequently Asked Questions

Presented and answered below are common technical support questions related to Osmosis. Before you call for technical support, please check this page.

How many connections can Osmosis support?

Technically, Osmosis can handle an unlimited number of simultaneous connections. Each connection is threaded asynchronously so that it will be processed, held or denied depending upon the number of connections set in User Preferences, AppleEvent Time-outs, Helix processing capabilities as well as other factors. Note that the actual number of simultaneous connections cannot exceed the user license for the Helix server.
 
Each request opens a connection, which is closed immediately as soon as Helix provides a response. Helix interprets each open connection as a 'user log-on'; each closed connection as a 'user log-off'. A simultaneous connection occurs when there are two or more open connections.

Osmosis is periodically crashing my web server.

All versions prior to 3.0.1 contain a subtle error that may cause a crash when many requests are being made simultaneously. Update to version 3.0.1 or higher. It is available for downloading on this web site.

When transferring records, the record separator is also loaded.

Helix, using the dump/load dialogs, dumps record separators but does not load them. Osmosis transfer steps bypass the dialogs. If you are using Helix 4.5.2 (or higher), you may choose to omit the separator from the dump dialog OR use Osmosis version 3.0.1 or higher which will automatically strip the record separator before loading.

Osmosis returns a strange error, "HAEGETROW_" failed.

This is an error returned by Helix when a record can not be entered. It is most commonly seen when a format mismatch is encountered. Check your entry template.

A script transfers data to several collections, but the script prematurely terminates.

Osmosis will attempt to complete each script step in a sequential fashion. If it encounters a step that cannot be completed, the script execution will stop. Problems such as a collection not being available or a view not being on a user menu are examples of errors. Osmosis will report all errors in the log file.

I have named my HTML form fields, but Osmosis does not recognize them.

Insure you follow the convention, "UserEntry#". Note that the name is case sensitive and there is no space between the text, "UserEntry" and the number; a leading zero is not required for any number; and only values 0 through 128 are acceptable. Also check that the first UserEntry# is '0'.
 
If you are using checkboxes, make sure the FieldCount parameter is properly enabled in the script's Entry step.

How do I access my scripts when I want to use realms?

Normally, you would place all scripts in the same folder as the Osmosis application, "cgi-bin". To launch a script named in the HTML, create an alias of the Osmosis application and place it in the realm folder. Indicate the location of the Osmosis alias relative to the HTML file. For example:
 
<FORM ACTION="Osmosis.acgi" METHOD="POST">
<INPUT ="HIDDEN" NAME="SCRIPT" VALUE="SCRIPTNAME">
 
The HTML file containing this code fragment is located in a realm folder along with an alias of the Osmosis application. The FORM ACTION will use the alias to locate the Osmosis application, which will then run the named script.

Can I run a Web server, Osmosis and Helix on the same machine?

Yes, but you will experience a severe processing penalty resulting in slow access time and poor data base response. We strongly recommend Helix be on a separate machine.

Can LocalTalk be used to as my network connection between my Web server and Helix application?

Yes. LocalTalk can be used. For faster speeds, we suggest Ethernet.

How can I insure unique internet connections?

As part of the HTTP specification, the web server keeps track of who makes the request, thereby returning the response to the proper location. However, when a request is made of Helix via Osmosis, Helix itself must also keep track of this information. One such method is to use a unique identifier created as 'data' when a browser client accesses the Helix data base. A user name passed in by the browser client or an incrementing number created by Helix serves as possible unique values. This value is then passed out by Helix (as a hidden field) as part of the HTML. Subsequent submissions pass the unique value back to Helix and use it as a link for the session.
 

How does Osmosis handle multiple users access of the same script and keep global data from being overwritten?

Osmosis uses the process name feature.
Here's how a process name is used: A script's process name is passed to Osmosis as a parameter. When present, Osmosis puts the name into a local variable. If another variable exists with the same name, the script is queued, otherwise the script is run. After the script is completed, the next queued script (of the same process name) is executed.

Script Name: TestMe
Process Name: First

Let's say that 4 users all run this script at the same time...

Osmosis processes TestMe for User 1
User 2 is pended
User 3 is pended
User 4 is pended
Osmosis processes TestMe for User 2
User 3 is pended
User 4 is pended
Osmosis processes TestMe for User 3
User 4 is pended
Osmosis processes TestMe for User 4

Now consider, that as part of the script TestMe, a field value is posted to a Global Relation that will be used as part of a query and/or returned as part of the HTML output. Note that all four users all post the same field value to the Global Relation. If we did not use process name, the potential exists for the global value of User 1 to be overwritten by User 2's global value BEFORE User 1 gets any output returned. We must wait for User 1's output before we can reuse the global value for User 2. This is how process name is used.

If other scripts post values to DIFFERENT fields in the Global Relation, then we can use a new process name. This allows multiple Osmosis scripts to be processed asynchronously by Osmosis and Helix.

In short, a process name is required when a global value is used by a script's output.
 

What is the technique to flag the records in the source Collection that the subject records have been transferred (dumped)?

The concept of 'transfer' is akin to "dump & load", except that you are not creating text files. Data is dumped from one view and then loaded back into another. One or more collections must be identified, but it can also be the same one.

Unfortunately, the 'post on dump' does not work for AEEA retrieves. This is the AEEA command that is used when data is dumped.

Several workarounds are available:

1. Whenever a record is entered/modified, a date/time is stamped into a date field. This field will be used a query value compared to the last time the transfer was performed. In other words, query the records whose modification date/time is greater than a global value. You will need to keep a record of each transfer so that the 'last time' the transfer was done is really the maximum date/time in this relation of data transfers.

2. A second option is to create a query for the records to be dumped. Then using a post on entry, perform an POST EVERY option 1 or 2 post based on the link 'Query' = 'T'. You could post a flag into each record.

3. Let's say you are dumping out records with several fields. One of the fields being dumped contains the unique key (record#, for example). After the records are 'transferred from', then 'transferred to', you perform another 'transfer to', except this time, posting back to the same collection/relation they originally came from. The view you use is inert (so that records are not created), and has an option 1 post selected. The link is unique key = unique key, posting a flag into the record. This last approach is actually perferred as it affords confirmation the transfer process was successful.
 

I received the error "Stop on Error Encountered". What does this mean?

Look at Osmosis Tech Note 1 for a discussion of this.


Return to the main page.

webmaster@CommonGrnd.com