<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<style type="text/css">
   .style1 {font-family: "Times New Roman";}
   </style></head><body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Marten<br>
<br>
What about System>>millisecondsSinceTransactionBoundary?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Lourens<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b>From:</b> Glass <glass-bounces@lists.gemtalksystems.com> <b>
On Behalf Of </b>Marten Feldtmann via Glass<br>
<b>Sent:</b> Tuesday, 23 August 2022 09:31<br>
<b>To:</b> via Glass <glass@lists.gemtalksystems.com><br>
<b>Subject:</b> [Glass] How to solve this problem - concurrency on one field/attribute<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><strong><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif;color:black">Please note this email originated from external. Please treat with caution.</span></strong><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif;color:black"><o:p></o:p></span></p>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="2" width="100%" align="center">
</div>
</div>
<div>
<p class="MsoNormal">I've face a problem for years now using Gemstone/S and I did several attempts to solve this, but I would like to ask, if there is a hidden trick to get rid of concurrency in this case using Gemstone/s.
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Think about a session object holding an attribute with a timestamp - a timestamp, where the last successful commit has been done in this session. Its a rough index about how the session hasn't done anything (regarding the read-only user
 case). <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">This session object is shared in a Javascript ui frontend-application (actually the gop to the session) - and now whenever this ui calls an API function on the   server (resulting in a commit), the session object in the server gets updated.
 But if the UI now opens several windows and would like to do sevral independent stuff with the same session in  a concurrency way - you will notice, that the API calls might fail - due to concurrency of updating the same timestamp from different "logical"
 threads. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">How can this be solved in Gemstone/S ? Retry of the transaction just due to this field might be pretty cost intensive.
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">How did I try to solve that in the past ? <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">a) I added an update object in a work queue and and independent topaz process worked on that work queue
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">In a newer attempt I introduced RabbitMQ in our solutions and use RabbitMQ for holding the information formerly stored in the work queue in Gemstone/S and now the topaz process receives information from RabbitMQ and updates the data in
 an optimized way. The good thing here is, that  I get session updates in an transaction with or without commit.
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Any ideas ? <o:p></o:p></p>
</div>
</div>



  <br><br>
  <p style="font-family: Verdana; font-size:8pt; color:#666666;">
This electronic message, including any attachments, is intended only for the use of the individual or entity to which it is addressed and may contain information that is privileged or confidential. If you are not the intended recipient, please notify us immediately by replying to this message and then delete this message from your system. Any use, dissemination, distribution or reproduction of this message or any attachments by unintended recipients is unauthorised and may be unlawful. We have taken precautions to minimise the risk of transmitting software viruses, but we advise you to perform your own virus checks on any attachment to this message. We do not accept liability for any loss or damage caused by software viruses.
  <br><br>
</p></body></html>