Bug 49623

Informational

GemStone/S 64 Bit

3.6.1, 3.6

3.6.2

GciTransportError, client user action not supported during non-blocking GCI call

If a non-blocking GCI execution (such as GciNbExecute, etc.), invokes a client user action, the process will be unresponsive until the client polls for completion, using GciNbEnd, etc.

Starting with v3.6, the the flag  GCI_PERFORM_noClientUseraction, is now on by default; this disables client user actions during non-blocking GCI calls, to avoid the risk of client hangs.

GemBuilder for Smalltalk polls frequently, and sets the GCI_PERFORM_noClientUseraction flag such that this bug did not previous exhibit, and the change in v3.6 does not affect behavior.

Other APIs, such as external sessions or Jadeite will now see an error of the form "a GciTransportError occurred (error 2728), client user action not supported during non-blocking GCI call actionNameOop 4202241" or "a GciTransportError occurred (error 2728), client user action not supported during GciNb call with GCI_PERFORM_noClientUseraction in flags, userAction name oop 9856769".

For historical reasons, GsFile is implemented as user actions; as a result, GsFile client operations were subject to this bug, and with the change in v3.6, GsFile client operations are disabled.

Workaround

Replace calls to GciNbExecute* or GciNbPerform calls with equivalent DEBUG versions that allow you to specify the flags:

   GciNbExecute*Dbg( ... , int flags);
   GciNbPerformNoDebug( ... , int flags);

and ensure that the flags argument includes GCI_PERFORM_FLAG_ENABLE_DEBUG.


Last updated: 9/13/21