@mcp-abap-adt/connection 9.3.3 → 9.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -1
- package/README.md +1 -1
- package/docs/STATEFUL_SESSION_GUIDE.md +11 -10
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [9.4.0] - 2026-09-27
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **`@mcp-abap-adt/sap-rfc-lite` `^0.2.0`** (was `^0.1.0 || ^0.2.0`), still an
|
|
15
|
+
optional dependency. The range let an install that already had 0.1.0 in its
|
|
16
|
+
lockfile keep it: npm does not move a locked version that still satisfies
|
|
17
|
+
the range, so 9.3.4's context reset never reached it, and every stateless
|
|
18
|
+
RFC call opened a conversation of its own (~0.67 s instead of ~0.24 s,
|
|
19
|
+
measured on an on-premise system). With 0.2.0 required, every stateless
|
|
20
|
+
call reuses one conversation and resets its server context. A minor
|
|
21
|
+
release, not a patch: support for 0.1.x ends and the behaviour of an
|
|
22
|
+
install that had it changes. No API changes.
|
|
23
|
+
|
|
24
|
+
**What a consumer does:** reinstall with the SAP NW RFC SDK visible, so the
|
|
25
|
+
optional native build of 0.2.0 succeeds (npm drops a failed optional build
|
|
26
|
+
silently). The check for a client without `resetServerContext` stays as a
|
|
27
|
+
guard; with 0.2.0 it is not taken.
|
|
28
|
+
|
|
29
|
+
## [9.3.4] - 2026-09-27
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- **Release the RFC context reset under an available package version.** npm
|
|
34
|
+
already contained version `9.3.3`, so this release carries the RFC stateless
|
|
35
|
+
context reset as `9.3.4`. With `sap-rfc-lite` 0.2.0, stateless calls reuse a
|
|
36
|
+
conversation and reset its server context after each call; older clients
|
|
37
|
+
continue to open a conversation per call. See the `9.3.3` entry below for
|
|
38
|
+
measured behavior and performance.
|
|
39
|
+
|
|
10
40
|
## [9.3.3] - 2026-09-27
|
|
11
41
|
|
|
12
42
|
### Changed
|
|
@@ -1872,7 +1902,9 @@ const connection = createAbapConnection(config, logger);
|
|
|
1872
1902
|
- JWT token refresh now properly handles connection errors (401/403 during initial connect)
|
|
1873
1903
|
- Permission errors (403 with "ExceptionResourceNoAccess") no longer trigger JWT refresh loops
|
|
1874
1904
|
- Proper separation: base class handles HTTP/session, concrete classes handle auth-specific errors
|
|
1875
|
-
[Unreleased]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.
|
|
1905
|
+
[Unreleased]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.4.0...HEAD
|
|
1906
|
+
[9.4.0]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.4...v9.4.0
|
|
1907
|
+
[9.3.4]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.3...v9.3.4
|
|
1876
1908
|
[9.3.3]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.2...v9.3.3
|
|
1877
1909
|
[9.3.2]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.1...v9.3.2
|
|
1878
1910
|
[9.3.1]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.0...v9.3.1
|
package/README.md
CHANGED
|
@@ -298,7 +298,7 @@ conversation; stateless requests use a separate ABAP context. With
|
|
|
298
298
|
conversation; older clients open one conversation per call. This prevents stale
|
|
299
299
|
package state from causing PAK/058 on later writes or SADT_RESOURCE/007 on a
|
|
300
300
|
read after create. Concurrent calls use a separate conversation. See
|
|
301
|
-
[RFC conversation isolation](./docs/STATEFUL_SESSION_GUIDE.md#rfc-conversation-isolation-933).
|
|
301
|
+
[RFC conversation isolation](./docs/STATEFUL_SESSION_GUIDE.md#rfc-conversation-isolation-932-and-933).
|
|
302
302
|
|
|
303
303
|
Needs the SAP NW RFC SDK on the machine and `npm install @mcp-abap-adt/sap-rfc-lite`.
|
|
304
304
|
|
|
@@ -49,7 +49,7 @@ The filter also applies to cookies supplied in request headers and retries.
|
|
|
49
49
|
| --- | --- |
|
|
50
50
|
| HTTP (on-prem / cloud) | Sends `x-sap-adt-sessiontype: stateful` and the context cookie, when held |
|
|
51
51
|
| Legacy on-prem HTTP | Keeps the context cookie but omits the session-type header |
|
|
52
|
-
| RFC | Uses the persistent conversation for stateful requests; since 9.3.
|
|
52
|
+
| RFC | Uses the persistent conversation for stateful requests; since 9.3.4 resets a kept stateless conversation between calls when supported |
|
|
53
53
|
|
|
54
54
|
A caller-supplied stateful header is also recognized, including by the legacy
|
|
55
55
|
HTTP transport before it removes that header. Custom `IAdtTransport`
|
|
@@ -57,14 +57,14 @@ implementations must read `request.stateful`; the connection no longer adds
|
|
|
57
57
|
`x-sap-adt-sessiontype` itself. The cookie fix was verified on E19 and E98;
|
|
58
58
|
BASIS 7.40 and ABAP Cloud were not integration-tested for this change.
|
|
59
59
|
|
|
60
|
-
## RFC conversation isolation (9.3.2
|
|
60
|
+
## RFC conversation isolation (9.3.2–9.4.0)
|
|
61
61
|
|
|
62
62
|
Stateful requests, including LOCK and UNLOCK, share the conversation opened
|
|
63
|
-
by `connect()`.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
conversation. Both `setSessionType('stateful')` and a caller-supplied stateful
|
|
63
|
+
by `connect()`. Stateless calls reuse a second conversation: the transport
|
|
64
|
+
resets its ABAP server context after each call, keeping the RFC logon open
|
|
65
|
+
(`sap-rfc-lite` 0.2.0, required since 9.4.0; 9.3.4 introduced it and still
|
|
66
|
+
accepted 0.1.x). When that conversation is busy with another call, a stateless
|
|
67
|
+
call gets a separate temporary conversation. Both `setSessionType('stateful')` and a caller-supplied stateful
|
|
68
68
|
session header select the persistent conversation.
|
|
69
69
|
|
|
70
70
|
Previously all RFC requests shared one ABAP session. On E19, saving a package
|
|
@@ -73,9 +73,10 @@ with **400 PAK/058, “Package … is already locked”**. Reading immediately a
|
|
|
73
73
|
creation could fail with **400 SADT_RESOURCE/007**. With separate conversations,
|
|
74
74
|
create, read, two lock/PUT/unlock rounds and delete passed on one connection.
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
about 0.5 s on
|
|
78
|
-
|
|
76
|
+
A resettable call took about 0.24 s total on E19; a temporary conversation
|
|
77
|
+
pays for an RFC logon, about 0.5 s on top of about 0.1 s for the call — which
|
|
78
|
+
is what every stateless call cost with `sap-rfc-lite` 0.1.x, and why 9.4.0
|
|
79
|
+
requires 0.2.0. Direct connector users must mark
|
|
79
80
|
LOCK and UNLOCK stateful to retain their conversation. If disconnect occurs
|
|
80
81
|
while a temporary conversation is logging on, it is closed without sending
|
|
81
82
|
the request; reconnect does not revive that pending request.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-abap-adt/connection",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.4.0",
|
|
4
4
|
"description": "ABAP connection layer for MCP ABAP ADT server",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"open": "^11.0.0"
|
|
64
64
|
},
|
|
65
65
|
"optionalDependencies": {
|
|
66
|
-
"@mcp-abap-adt/sap-rfc-lite": "^0.
|
|
66
|
+
"@mcp-abap-adt/sap-rfc-lite": "^0.2.0"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@biomejs/biome": "^2.3.14",
|