Release Notes for SAP .NET Connector (NCo)
==========================================
Please read the license terms and release notes carefully.
--------------------------------------------------------------------------------
This product is property of SAP SE. You are granted usage of this product in
your development environment. Deploying this product with your application in a
production environment is only valid with the sufficient amount of SAP Software
Licenses according to the terms and conditions of SAP Software.
THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
SAP SE further does not warrant the accuracy or completeness of the information,
text, graphics, links or other items contained within these materials. SAP SE
shall not be liable for any special, indirect, incidental or consequential
damages, including without limitation, lost revenues or lost profits, which may
result from the use of these materials. The information in this software is
subject to change without notice and does not represent a commitment on the
part of SAP SE in the future.
--------------------------------------------------------------------------------
Release Notes 3.0.22:
* Bugfix: session management
Stateful calls to a NCo server could fail. One or more entries
"System.ArgumentException: An item with the same key has already been added"
could be found in the log. This happpened, because the session Id of a
terminated or expired session was not removed from the list of session Ids, or
more precisely the map associating session Ids with the respective session
information. In the rare case that a session Id reappeared later on for a
different session, which is more likely in high load scenarios, said map threw
an exception since the map does not allow overwriting existing entries.
In any event this was a case of memory leakage on account of retaining session
information related to expired sessions.
* Bugfix: metadata handling
Fields (or their metadata) were not available from the respective table (or its
metadata) when creating table metadata manually and attempting to obtain fields
by name. This was caused by creating Table metadata manually and modifying the
line type (structure metadata) after creating the table metadata instance by
adding further fields. An attempt was made to obtain such a field (or its metadata)
from the table (or its metadata).
* Bugfix: server runtime
"Concurrent Modification" exceptions could occur during server shutdown, if Server
shutdowns were executed (very) frequently and running requests overlapped with the
shutdown. NCo code was changed to fully synchronize the access to the list of
server connections to prevent threads from iterating over the list of connections
while others add connections to or remove connections from it.
* Bugfix: SapLogonIniConfiguration
The data could not be read properly from SAPUILandscape XML, if XML comments were
contained in the XML document.
* Bugfix: Data processing
When setting numbers to NCo data containers and the current culture is using the
empty string as NumberGroupSeparator, en exception was thrown. NCo processing
was adjusted to deal with that setting properly.
* Enhancements: Serialized repository
After loading a repository from a serialized JSON representation, consistency checks
have been added to ensure that metadata contained in the repository is consistent.
* Enhancement: initialization
GeneralConfiguration.Initialize() has been added so that an application can ensure
proper initialization of all layers in all situations. See API documentation for
details.
* Enhancement: default values
ABAP_BOOL values are now supported as default values for parameters.
--------------------------------------------------------------------------------
Release Notes 3.0.21:
* Bugfix: session management
Session management could throw an excetpion that leads to a log entry
"RfcSessionManager.UpdateSessions() threw KeyNotFoundException: The given key
was not present in the dictionary". This happens, because adding new
sessions to the internal session store was not properly synchronized
and under high load race conditions could lead to situations, in which
the object was not yet stored completely, but should be accessed again
already.
* Bugfix: potential deadlock situations with infrastructure embedding
NCo could be hanging in a deadlock situation in context of an ISessionProvider
implementation.The ISessionProvider implementation locked an application-owned
object in the IsAlive() method, before which NCo runtime has locked an object
owned by NCo. In some other thread, the application locked the applciation-owned
object as well and then locked the very same NCo object.
NCo code was changed to use internal mutex objects only for all instances that
can be used by applications and might be used for synchronization to prevent
the possibility of deadlocks caused by improper synchronization sequences.
* Bugfix: tracing
NCo Trace was not written, even though application configuration contained a
default trace level larger than 0. The application code changed the log level
to 0 via API, when starting. Also, a custom IDestinaitionConfiguration could
set the TRACE property to 0 for destinations.
In order to be able to generate traces needed duting support, the default trace
level set within the application configuration is now considered to be a minimum
level. Thus, it can be ensured that trace can be generated even if the
application is misbehaving or even does not allow to modify trace level at
runtime again.
* Bugfix: SapLogonIniConfiguration
When using SAPLogonIniConfiguration the destinations contained in SAPUILandscape
XML are not found, because SAPUILandscape XML parser returns an empty list, if
the XML file does not contain an XML preamble and contains comments. The
SAPUILandscape parser accidentally interpretes the comments section as SAP system
information.
Note: this is actually invalid XML format, but early versions of SAPGui 7.40 used
to generate such XML files.
With 3.0.21, the SAPUILandscape parser can now handle these badly formed files
successfully, as long as the <Landscape> section is at the top of the document.
* Bugfix: High Availability Server with SAProuter
The restart mechanism did not work properly, if downtime of the ABAP system
was longer, the High Availability Server using the message server was in use,
and a SAProuter was needed to connect to the partner. In the logs one could
see failed reconnect attempts showing the SAProuter string prepended to the
message server host multiple times. Now, it is ensured that the SAProuter#
string is prepended only once.
* Enhancement: tracing
Mutexes used by NCo are now traced to allow an easier detection of deadlock
situations.
* Enhancement: RfcRepository
The RfcRepository offers the possiblity to check whether a function exists via
the method CheckFunctionExists. Find more details in the API documentation.
--------------------------------------------------------------------------------
Release Notes 3.0.20:
* Bugfix: communication runtime
An IndexOutOfRangeException may occur, when receiving RFC data. RFC containers
(e.g., compressed basXML) may have length zero, i.e. they do not hold any data.
As a result an empty byte array was passed as a buffer to the underlying read
methods that eventually attempted to convert the empty byte array to a pointer
to bytes through &buffer[0] which incurred the IndexOutOfRangeException. In
order to avoid the misbehavior