Downloads
Product availability Matrix (PAM)
Downloads of this patch are available from the
Rocket Customer Support Portal.
Further explanation can be found
here.
New Feature(s)
- Sentinel 10 is now available on Solaris platform.
|
Fixes
UNI-31940 | Activation of a cloud leased license sometimes fails because ULic ends abnormally. |
UNI-31932 | Redundant RMS servers is not working on Linux platforms. |
UNI-29132 | After getting a grace license Sentinel doesn't go to the RMS server anymore |
UNI-16062 | MSS: Uniface shows no error for blocked read (timeout) and truncates hitlist |
UNI-1300 | MSS : Some database errors are not reported by selectdb. |
UNI-31940 - Activation of a cloud leased license sometimes fails because ULic ends abnormally.
Solution available in patch(es): 10.4.02-014
Description:
Sometimes ULic crashes during or after having checked out a license from Sentinel. Or, a sentinel API call sometimes returns an error with an unexpected error code. An incomplete change of buffer size caused this unpredictable behavior.
Environment:
+ Uniface version: 10.4.02.012
+ Platforms: ALL
Workaround:
None.
Notes:
This problem is solved.
UNI-31932 - Redundant RMS servers is not working on Linux platforms.
Solution available in patch(es): 10.4.02-014, 230117
Description:
RMS version 10 redundant servers is not working on Linux platforms.
Environment:
+ Uniface RMS 221212
+ Platforms: Linux
Workaround:
None
Notes:
This problem is solved.
UNI-29132 - After getting a grace license Sentinel doesn't go to the RMS server anymore
Solution available in patch(es): 10.4.02-014
Description:
Sentinel keeps querying "no-net" when various licenses are mixed.
We have separated the 3 main Sentinel modes as Commuter, License Manager (aka RMS), Grace.
First, we try to checkout Commuter, then LM, then Grace.
We also have a loop that tries different license versions: 10.4, 10.3, 10.2, 10.1, versionless.
Let's say that our License Manager has a versionless license installed, and our machine already has an old 10.3 Grace license installed.
Then, during the License Manager step, the 10.3 version is tried before the versionless one.
Sentinel will always query "no-net" as a fallback during the License Manager step if a specific Feature,Version pair is not found. Once it reaches the old 10.3 Grace license, which comes before the versionless, it gets stuck on querying "no-net", and the Server will never be queried again. This means that we are stuck looking for other Grace licenses, instead of License Manager licenses.
When does this happen?
It happens when we had used a License with e.g. 10.4 features in the past, and now we are given a License Manager entitlement with a lower version (e.g. 10.3) or no version. The old Grace Licenses conflict with the renewed ones.
Environment:
+ Uniface version: 10.x
+ Platforms: ALL
Workaround:
Delete the Sentinel persistence.
Notes:
This problem is solved.
UNI-16062 - MSS: Uniface shows no error for blocked read (timeout) and truncates hitlist
Solution available in patch(es): 10.3.03-035, 10.4.02-014
Description:
Stepping through the Uniface hitlist the read for an occurrence is blocked
because another user holds a (exclusive/update) lock on this occurrence.
The Uniface hitlist is truncated without Uniface reporting there is an error and there are actually more hits.
Reproduction scenario
1. Start a first Uniface session retrieving data from entity ENTM1 (key fields PK1 and PK2).
For example
PK1.ENTM1/init="1"
PK2.ENTM1/init=<gold>*
retrieve/e "ENTM1"
2. Start a second Uniface session retrieving a specific occurrence
PK1.ENTM1/init="1"
PK2.ENTM1/init="11"
retrieve/e "ENTM1"
3. In this second Uniface session modify the retrieved occurrence
4. Do a store without doing a commit in the second Uniface session
5. In the first Uniface session step through the hitlist.
The read for the occurrence with PK="1" and PK2="11" is blocked
because the second Uniface session has modified this occurrence without yet commiting (write, no commit yet).
Expected Result:
Error -3 reported in the read trigger (since occurrence is locked) after timeout trying to read the blocked record.
The Uniface developer can decide how to react to this situation.
Actual Result:
Behaviour depends on the defined connector options for the Uniface connector for Microsoft SQL Server.
With maxlockwait smaller than locktime Uniface shows no error at all for the blocked read:
No error reported and hitlist truncated without Uniface reporting there are actually more hits.
With locktime smaller than maxlockwait the read returns status -3 after seconds.
Workaround:
Define locktime smaller than maxlockwait to at least get error -3 after the read
or
The problem described can be avoided using Row Level Versioning.
See for example:
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/snapshot-isolation-in-sql-server</gold>
Environment:
+ Uniface Version : 9 / 10
+ Platforms: All
+ Database: MSS
Workaround:
None.
Notes:
This problem is solved.
UNI-1300 - MSS : Some database errors are not reported by selectdb.
Solution available in patch(es): 10.3.03-035, 10.4.02-014
Description:
MSS : Some database errors are not reported by selectdb.
Oracle and Sybase do not have this problem: they report an error as expected.
Two examples are described below:
First Example:
MSS : selectdb does not report error after lock timeout occurs.
How to reproduce this problem:
One session locks a record which is also part of the records a selectdb needs in another session. A lock timeout occurs after maxlockwait:
$result is empty , $status, $dberror and $procerror are all 0 so it is not noticed that in fact an error occurred. The same test trying to retrieve a locked record in an Uniface form does give an error:
(_read) READ:2 read
I/O function: S, mode: 0, on file/table: TESTTABLE index: 1 >= select [id] [datetime_field] from [testtable] with(rowlock)
42000 [Microsoft][SQL Server Native Client 11.0][SQL Server]Lock request time out period exceeded.
(_read) READ:5 [-3] endif
(_read) READ:6 [-3] putmess "read $status = %%$status, $dberror=%%$dberror
$procerror = %%$procerror
read $status = -3, $dberror=1222 $procerror = -3
Second example:
MSS : selectdb does not report error after illegal datetime arithmetic
How to reproduce this problem:
This problem occurs when the u_where clause contains a calculation of 2 or more datetime values using non database fields or direct datetime values:
u_where (datetime_field < (dum_ref_dt + dum_add_time))
u_where (datetime_field < (dum_ref_dt + 2h))
These selectdb statements should report an error.
However there is no error reported: $status=0 and hits 0 is reported:
I/O function: S, mode: 4, on file/table: TESTTABLE index: 1 >=
Where ((DATETIME_FIELD < (25112015 08:00:00 + 01011900 02:00:00)))
Select(Count(ID)) select count([id]) from [testtable] with(rowlock) where ([datetime_field]<(?+?))
-> Hits selected: 0 .
Retrieve statement using the same u_where reports the correct error:
I/O function: S, mode: 0, on file/table: TESTTABLE index: 1 >=
Where ((DATETIME_FIELD < (25112015 08:00:00 + 01011900 02:00:00)))
select [id],[datetime_field] from [testtable] with(rowlock) where ([datetime_field]<(?+?))
42000 [Microsoft][SQL Server Native Client 11.0][SQL Server]Operand data type datetime2 is invalid for add operator.
I/O function: R, mode: 0, on driver: MSS rollback transaction
read $status = -3, $dberror=8117 $procerror = -3 I/O function: R, mode: 0, on driver: MSS rollback transaction
Environment:
Environment:
+ Uniface version: 10.x
+ Platforms: All
+ Databases: MSS
Workaround:
For the example with illegal datetime arithmetic:
First calculate the datetime in Uniface:
v_comp_dt = dum_ref_dt + dum_add_time
selectdb count(id) from "testtable" %\
u_where (datetime_field < v_comp_dt) %\
to (dum_result)
Using two database fields and a selection like
selectdb count(id) from "testtable2" u_where ((datetime_field - datetime_res) < dum_add_time) to (dum_result) also works fine.
Notes:
This problem is solved.