[Glass] Error "The GemStone session has lost its connection to the Stone Repository monitor." when using System performOnServer:

James Foster smalltalk at jgfoster.net
Sun Feb 27 13:24:06 PST 2022


While it is reasonable for you to expect the Gem to respond to a SigAbort when in transactionless mode, version 2.4.8 (Feb. 2016) of the product did not do so. That was fixed in Aug. 2016 for version 3.3.1 and later. The solution is to sleep for some reasonable period of time and then do an explicit abort (or other operation). See https://gemtalksystems.com/data/bugnotes/46290.html <https://gemtalksystems.com/data/bugnotes/46290.html>. 

James

> On Feb 23, 2022, at 12:26 PM, Ralph Mauersberger via Glass <glass at lists.gemtalksystems.com> wrote:
> 
> Hello everybody,
> 
> I would like to execute a server side script from within a topaz job using System performOnServer:. What I do is basically this: 
> 
> 
> #!/bin/bash
> #This is Script: testLongRunningPerformOnServer.sh
> /opt/gemstone/gemstone/bin/topaz -l << EOF
> set gems mystone user seaside pass swordfish
> login
> run
> %
> iferror exit
> time
> run
> | resultString |
>  
> "Switch to transactionless while running the external task"
> System transactionMode: #transactionless.
> resultString := System performOnServer: 'sleepForSeconds 3600'.
>  
> "Aquire database view again in order to save the result to the repository"
> System transactionMode: #autoBegin.
> MyApplication persistResult: resultString.
> System commitTransaction.
> ^'done'.
> %
> time
> logout
> exit
> EOF
>  
> For testing I wrote this dummy-script:
>  
>  
> #!/bin/bash
> # This is Script: sleepForSeconds
> # ramauers, 2022-01-28: Print out some text and sleep for the number of seconds given as 1st argument.
> if [ A$1 = A ]
> then
>         echo "number of seconds to sleep expected as 1st argument"
>         exit 1
> fi
> seconds=1
> while [ $seconds -le $1 ]
> do
>         sleep 1
>         date
>         echo "Sleeping since $seconds/$1 seconds."
>         ((seconds++))
> done
>  
>  
> This works in principle, but it reproducibly fails with the following exception, if other sessions are doing a lot of commits while the external script is executing.
>  
>  
> _____________________________________________________________________________
> |             GemStone/S64 Object-Oriented Data Management System             |
> |                   Copyright (C) GemTalk Systems 1986-2016                   |
> |                            All rights reserved.                             |
> |     covered by Patent Number 6,567,905 Generational Garbage Collector.      |
> +-----------------------------------------------------------------------------+
> |    PROGRAM: topaz, Linear GemStone Interface (Linked Session)               |
> |    VERSION: 2.4.8, Tue Feb  2 15:18:28 2016                                 |
> |      BUILD: gss64_2_4_x_branch-38672                                        |
> |  BUILT FOR: x86-64 (Linux)                                                  |
> |       MODE: 64 bit                                                          |
> | RUNNING ON: 2-CPU myhost... x86_64 (Linux 3.10.0-1160.42.2.el7.x86_64
> | #1 SMP Tue Aug 31 20:15:00 UTC 2021) 3906MB                                 |
> | PROCESS ID: 115117    DATE: 02/23/2022 08:35:26 CET                         |
> |   USER IDS: REAL=ramauers (25250) EFFECTIVE=ramauers (25250)                |
> |_____________________________________________________________________________|
> topaz> topaz> [Info]: LNK client/gem GCI levels = 844/844
> [Info]: User ID: seaside
> [Info]: Repository: mystone
> [Info]: Session ID: 2
> [Info]: GCI Client Host: <Linked>
> [Info]: Page server PID: -1
> [Info]: Login Time: 02/23/2022 08:35:26 CET
> [Info]: Extended character table loaded
> [02/23/2022 08:35:26 CET] gci login: currSession 1 rpc gem processId -1
> successful login
> topaz 1> nil
> topaz 1> topaz 1> 02/23/2022 08:35:26 CETCPU time:   0.110 seconds
> topaz 1>
> [Info]: Logging out at 02/23/2022 09:35:38 CET
> -----------------------------------------------------
> GemStone: Error         Fatal
> The GemStone session has lost its connection to the Stone Repository
> monitor.
> Error Category: [GemStone] Number: 4035 Arg Count: 0
>  
> Now executing the following command saved from "iferr 1":
>    exit
>  
>  
> The exception occures immediately after the called script regularly finished. Due to the case, that it only fails in conjunction with a lot of commits, I suppose that this is somehow related to sent sigAborts from the stone, although I would not expect any issues with that while the session is in transactionless-Mode. I also fiddled around with sigAbort-Handlers, but was unable to solve this issue so far.
> 
> Any ideas are very much appreciated.
> 
> Best regards,
> Ralph
> _______________________________________________
> Glass mailing list
> Glass at lists.gemtalksystems.com <mailto:Glass at lists.gemtalksystems.com>
> https://lists.gemtalksystems.com/mailman/listinfo/glass <https://lists.gemtalksystems.com/mailman/listinfo/glass>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/archives/glass/attachments/20220227/526da77c/attachment-0001.htm>


More information about the Glass mailing list