jetstream-api 0.6.0__tar.gz → 0.6.2__tar.gz
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.
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/PKG-INFO +1 -1
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/__init__.py +1 -1
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/admin.py +19 -7
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/common.py +7 -7
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/properties.py +33 -2
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/jetstream_api.egg-info/PKG-INFO +1 -1
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/pyproject.toml +1 -1
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/LICENSE.txt +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/README.md +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/admintopic.py +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/connectivity.py +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/exception.py +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/msg.py +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/pattern.py +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/producer.py +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/py.typed +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/qmgr.py +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/topic.py +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/ilink/util.py +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/jetstream_api.egg-info/SOURCES.txt +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/jetstream_api.egg-info/dependency_links.txt +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/jetstream_api.egg-info/requires.txt +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/jetstream_api.egg-info/top_level.txt +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/setup.cfg +0 -0
- {jetstream_api-0.6.0 → jetstream_api-0.6.2}/tests/test_example.py +0 -0
|
@@ -3430,9 +3430,13 @@ class ILAdminQmgr:
|
|
|
3430
3430
|
ILOperationException: 엔진이 6.3.3(rev 3067) 미만일 때.
|
|
3431
3431
|
|
|
3432
3432
|
Note:
|
|
3433
|
-
|
|
3434
|
-
|
|
3435
|
-
|
|
3433
|
+
배열 요청(3344)은 엔진 6.3.3.3067 에서 들어왔다. 그 미만 엔진은 이
|
|
3434
|
+
코드를 모르고 ``MIMQE_INVALID_REQ_CODE`` 를 돌려준다 - 즉시 응답이라
|
|
3435
|
+
행이 나지는 않지만(6.3.1 에서 7ms, 실측), 호출자에게는 **왜 안 되는지
|
|
3436
|
+
적힌 예외**가 더 쓸모가 있다.
|
|
3437
|
+
|
|
3438
|
+
**단건 조회에는 이 게이트를 걸지 않는다.** 요청 코드 3201 은 훨씬
|
|
3439
|
+
오래된 코드라 6.3.1.2813 에서도 정상 응답한다(실측).
|
|
3436
3440
|
"""
|
|
3437
3441
|
if 0 < self.revision < ILC.QUEUE_FLOW_ARRAY_MIN_REVISION:
|
|
3438
3442
|
raise ILOperationException(
|
|
@@ -3793,14 +3797,19 @@ class ILAdminQmgr:
|
|
|
3793
3797
|
``getIncomingDataSize()`` / ``getOutgoingDataSize()`` / ``getDepth()``).
|
|
3794
3798
|
|
|
3795
3799
|
Raises:
|
|
3796
|
-
ILOperationException: 그런 큐가 없을 때.
|
|
3797
|
-
미만이라 유량 통계 자체를 지원하지 않을 때.
|
|
3800
|
+
ILOperationException: 그런 큐가 없을 때.
|
|
3798
3801
|
ILException: 통신 실패.
|
|
3799
3802
|
|
|
3800
3803
|
Note:
|
|
3801
3804
|
**한 시점의 스냅샷**이다. 시간에 따른 추이를 보려면
|
|
3802
3805
|
:meth:`getQueueFlowInfoArray` 를 쓴다.
|
|
3803
3806
|
|
|
3807
|
+
**구엔진에서도 동작한다.** 요청 코드 3201 은 오래된 코드라
|
|
3808
|
+
6.3.1.2813 / 6.3.2.2856 / 6.3.3.3155 / 7.0.1.3366 네 엔진 모두에서
|
|
3809
|
+
유입/유출 건수와 깊이를 정상으로 받았다(실측: put 5건 후
|
|
3810
|
+
in=5 out=0 depth=5). 여러 구간을 한 번에 보는
|
|
3811
|
+
:meth:`getQueueFlowInfoArray` 만 6.3.3(rev 3067) 이상이 필요하다.
|
|
3812
|
+
|
|
3804
3813
|
.. note:: 값은 **1초 주기**로 채워진다
|
|
3805
3814
|
|
|
3806
3815
|
유량 스냅샷은 서버가 1초마다 적재한다. 그래서 갓 만든 큐도 **조회
|
|
@@ -3861,8 +3870,11 @@ class ILAdminQmgr:
|
|
|
3861
3870
|
실제 기록이 그보다 적으면 0 으로 채운 항목이 들어간다.
|
|
3862
3871
|
|
|
3863
3872
|
Raises:
|
|
3864
|
-
ILOperationException: 그런 큐가 없을 때. 또는 엔진이 6.3.
|
|
3865
|
-
미만이라
|
|
3873
|
+
ILOperationException: 그런 큐가 없을 때. 또는 엔진이 6.3.3(rev 3067)
|
|
3874
|
+
미만이라 **배열** 조회(요청 코드 3344)를 지원하지 않을 때.
|
|
3875
|
+
단건 :meth:`getQueueFlowInfo` 는 그보다 오래된 엔진에서도
|
|
3876
|
+
동작하므로, 구엔진까지 지원해야 하면
|
|
3877
|
+
``ILRC.MIMQE_NOT_SUPPORTED`` 를 받았을 때 단건으로 폴백하라.
|
|
3866
3878
|
ILException: 통신 실패.
|
|
3867
3879
|
|
|
3868
3880
|
Note:
|
|
@@ -734,15 +734,15 @@ class ILC:
|
|
|
734
734
|
#: 큐 속성이 2200 레이아웃으로 바뀐 **첫 엔진 리비전**(6.3.3.3155).
|
|
735
735
|
#: 이 값보다 낮으면 4096 레이아웃으로 주고받아야 한다.
|
|
736
736
|
QUEUE_LAYOUT_MIN_REVISION = 3155
|
|
737
|
-
#:
|
|
738
|
-
#:
|
|
739
|
-
|
|
740
|
-
# 단건 조회(3201)는 훨씬 오래된 코드라 6.3.1.2813 에서도 응답한다(실측).
|
|
737
|
+
#: 큐 유량 통계 **배열** 조회(요청 코드 3344)가 들어온 첫 엔진 리비전(6.3.3.3067).
|
|
738
|
+
#: 단건 조회(3201)는 훨씬 오래된 코드라 6.3.1.2813 에서도 정상 응답한다(실측) -
|
|
739
|
+
#: 이 기준은 **배열에만** 적용된다.
|
|
741
740
|
QUEUE_FLOW_ARRAY_MIN_REVISION = 3067
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
741
|
+
#: 큐관리자 속성의 **토픽 로거** 구간(20바이트)이 들어온 첫 엔진 리비전(7.1.1.3283).
|
|
742
|
+
#: 그 자리는 구엔진의 ``volumeMonitorForceReloadSize`` 다 - 값을 실어 보내면
|
|
743
|
+
#: 구엔진 imqlsr 가 SIGFPE 로 죽는다(6.3.1.2813 실측).
|
|
745
744
|
TOPIC_LOGGER_MIN_REVISION = 3283
|
|
745
|
+
#: 구버전(4096) 블롭에서 공통 접두가 끝나고 레이아웃이 갈리는 지점.
|
|
746
746
|
QUEUE_LEGACY_DIVERGE_OFFSET = 1772
|
|
747
747
|
#: 구버전(4096) 블롭에서 incomingDelayDepth 가 있는 위치. 현행과 같다.
|
|
748
748
|
QUEUE_LEGACY_TAIL_OFFSET = 2142
|
|
@@ -28,6 +28,9 @@ def _format_millis(value: int, fmt: str) -> str:
|
|
|
28
28
|
|
|
29
29
|
# 구엔진(rev 3283 미만)의 StorageVolumeMonitor ForceReloadSize 기본값.
|
|
30
30
|
LEGACY_FORCE_RELOAD_SIZE = 1048576
|
|
31
|
+
# 구엔진(6.3.x)의 TCPListener SessionPerThread 기본값.
|
|
32
|
+
# 0 이면 imqlsr 가 nSessionCnt / nSessionPerThread 에서 0 나눗셈으로 죽는다.
|
|
33
|
+
LEGACY_SESSION_PER_THREAD = 10
|
|
31
34
|
|
|
32
35
|
def _spec_maxlen(n):
|
|
33
36
|
"""``n`` 바이트 이하 문자열 규칙."""
|
|
@@ -2479,6 +2482,7 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2479
2482
|
self.volumeMonitorInterval = 10
|
|
2480
2483
|
self.volumeMonitorSizeLimit = 10485760
|
|
2481
2484
|
self._volumeTailRaw = None
|
|
2485
|
+
self._sessionPerThreadRaw = None
|
|
2482
2486
|
self.logLevelSystem = 4
|
|
2483
2487
|
self.logFileSizeSystem = 4194304
|
|
2484
2488
|
self.logFileCountSystem = 5
|
|
@@ -2628,6 +2632,11 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2628
2632
|
offset += 2
|
|
2629
2633
|
self.aclType = ba_pick_int(ba, offset, 2)
|
|
2630
2634
|
offset += 2
|
|
2635
|
+
# v6.3.4 에서 async 를 없애며 sessionPerThread 를 뺐지만
|
|
2636
|
+
# **구엔진(6.3.x)에는 실재하는 필드**다. 0 을 보내면 imqlsr 가
|
|
2637
|
+
# nSessionCnt / nSessionPerThread 에서 죽는다(ManagerListener.h:129,
|
|
2638
|
+
# SIGFPE - 6.3.1 실측). 원본을 보관해 되돌려 쓴다.
|
|
2639
|
+
self._sessionPerThreadRaw = bytes(ba[offset:offset + 10])
|
|
2631
2640
|
offset += 10
|
|
2632
2641
|
self.deadLetterQueueName = ba_pick_string(ba, offset, 32)
|
|
2633
2642
|
offset += 32
|
|
@@ -2692,7 +2701,14 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2692
2701
|
offset += 10
|
|
2693
2702
|
ba_merge(self.recvWaitTimeout, ba, offset)
|
|
2694
2703
|
offset += 10
|
|
2695
|
-
|
|
2704
|
+
# v6.3.4 에서 async 를 없애며 acceptPoolSize/eventPoolSize 를 뺐지만
|
|
2705
|
+
# 구엔진(6.3.x)은 이 두 필드를 읽고 1~9 로 검증한다. 0 을 보내면
|
|
2706
|
+
# MIMQE_INVALID_ARGUMENT (AcceptPoolSize : 0) 로 거부된다(6.3.1 실측).
|
|
2707
|
+
# 자바는 v1.5.2 에서 같은 이유로 기본값 1 을 되살렸다 - 그것과 맞춘다.
|
|
2708
|
+
ba_merge(1, ba, offset)
|
|
2709
|
+
offset += 10
|
|
2710
|
+
ba_merge(1, ba, offset)
|
|
2711
|
+
offset += 10
|
|
2696
2712
|
ba_merge(self.volumeMonitorInterval, ba, offset)
|
|
2697
2713
|
offset += 10
|
|
2698
2714
|
ba_merge(self.volumeMonitorSizeLimit, ba, offset)
|
|
@@ -2738,6 +2754,8 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2738
2754
|
offset += 2
|
|
2739
2755
|
ba_merge(self.aclType, ba, offset)
|
|
2740
2756
|
offset += 2
|
|
2757
|
+
# 구엔진에만 있는 sessionPerThread 자리 - 0 을 보내면 큐관리자가 죽는다
|
|
2758
|
+
session_offset = offset
|
|
2741
2759
|
offset += 10
|
|
2742
2760
|
ba_merge(self.deadLetterQueueName, ba, offset)
|
|
2743
2761
|
offset += 32
|
|
@@ -2755,6 +2773,12 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2755
2773
|
else:
|
|
2756
2774
|
# 새로 만든 객체라 받은 값이 없다 - 엔진 기본값을 쓴다
|
|
2757
2775
|
ba_merge(LEGACY_FORCE_RELOAD_SIZE, ba, topic_offset)
|
|
2776
|
+
# 구엔진에만 있는 sessionPerThread 도 되돌려 준다
|
|
2777
|
+
raw2 = getattr(self, "_sessionPerThreadRaw", None)
|
|
2778
|
+
if raw2:
|
|
2779
|
+
ba[session_offset:session_offset + 10] = raw2
|
|
2780
|
+
else:
|
|
2781
|
+
ba_merge(LEGACY_SESSION_PER_THREAD, ba, session_offset)
|
|
2758
2782
|
return bytes(ba)
|
|
2759
2783
|
|
|
2760
2784
|
def get_status_string(self) -> str:
|
|
@@ -3649,7 +3673,14 @@ class ILServiceProperty(_AutoAccessor):
|
|
|
3649
3673
|
offset += 10
|
|
3650
3674
|
ba_merge(self.timeoutSocketRecv, ba, offset)
|
|
3651
3675
|
offset += 10
|
|
3652
|
-
|
|
3676
|
+
# v6.3.4 에서 async 를 없애며 acceptPoolSize/eventPoolSize 를 뺐지만
|
|
3677
|
+
# 구엔진(6.3.x) ilsvc 는 이 값으로 스레드 풀을 만든다
|
|
3678
|
+
# (ILinkServerMainClass.cpp:151, ServerListener.cpp:17). 0 이면 풀이 0개다.
|
|
3679
|
+
# 자바는 v1.5.2 에서 기본값 1 을 되살렸다 - 그것과 맞춘다.
|
|
3680
|
+
ba_merge(1, ba, offset)
|
|
3681
|
+
offset += 10
|
|
3682
|
+
ba_merge(1, ba, offset)
|
|
3683
|
+
offset += 10
|
|
3653
3684
|
ba_merge(self.logLevelSystem, ba, offset)
|
|
3654
3685
|
offset += 2
|
|
3655
3686
|
ba_merge(self.logFileSizeSystem, ba, offset)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|