Rocket Uniface Support Resources

 View Only

Rocket Uniface 10.4.02-014 Released

  Thread closed by the administrator, not accepting new replies.
  • 1.  Rocket Uniface 10.4.02-014 Released

    ROCKETEER
    Posted 01-18-2023 09:51
    Edited by Community Manager 01-19-2023 10:02
    No replies, thread closed.

    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-31940Activation of a cloud leased license sometimes fails because ULic ends abnormally.
    UNI-31932Redundant RMS servers is not working on Linux platforms.
    UNI-29132After getting a grace license Sentinel doesn't go to the RMS server anymore
    UNI-16062MSS: Uniface shows no error for blocked read (timeout) and truncates hitlist
    UNI-1300MSS : 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.

    Back to top



    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.

    Back to top



    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.

    Back to top



    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.

    Back to top



    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.

    Back to top