Content-Length: 378623 | pFad | http://github.com/python/cpython/pull/17323/commits/4d6ac6ed5362d0fbb61d355e5e2aefd67e5e6048

39 bpo-38880: List interpreters associated with a channel end by LewisGaul · Pull Request #17323 · python/cpython · GitHub
Skip to content

bpo-38880: List interpreters associated with a channel end #17323

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 34 commits into from
Apr 29, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
ec5aa60
Attempt at implementing channel_list_interpreters()
LewisGaul Nov 12, 2019
ee78133
Fix some error cases
LewisGaul Nov 12, 2019
433a5b0
Fix issue with decreasing list items' references
LewisGaul Nov 12, 2019
64c1661
Fix issue with reference to interpreter
LewisGaul Nov 20, 2019
2c5c6df
Add ability to list interpreters on send or receive channels
LewisGaul Nov 20, 2019
7f439fa
Fix arg parsing in C code
LewisGaul Nov 20, 2019
d86ae97
Minor changes
LewisGaul Nov 20, 2019
c529c88
Add channel_list_interpreters() tests
Nov 21, 2019
168ebf3
Fix docstring
LewisGaul Nov 21, 2019
2a7b508
Improve naming in tests
LewisGaul Nov 21, 2019
4d6ac6e
Add macros for int64_t max etc
LewisGaul Nov 21, 2019
a44c2d2
Fix error handling
LewisGaul Nov 21, 2019
215300b
Expose _PyInterpreterState_LookUpID
LewisGaul Nov 21, 2019
9b124db
Fix bad git rebase (use _xxsubinterpreters module name)
LewisGaul Nov 21, 2019
76621c7
Remove decref of NULL
LewisGaul Nov 21, 2019
d4c51bf
Fix leftover broken code from nested loop
LewisGaul Nov 21, 2019
f3c2b34
Remove whitespace from tests
LewisGaul Nov 21, 2019
af10d1f
Add to Misc/ACKS
LewisGaul Nov 21, 2019
ac09b6c
Remove PY_INT64_T_MAX etc. and use stdint.h
LewisGaul Nov 22, 2019
8e69864
Remove whitespace
LewisGaul Nov 22, 2019
0546702
📜🤖 Added by blurb_it.
blurb-it[bot] Nov 22, 2019
ad511ef
Update news entry to remove mention of PEP 554
LewisGaul Nov 23, 2019
a1b7c3a
Remove unnecessary asserts
LewisGaul Nov 23, 2019
d9b3e27
Use single 'send' argument in channel_list_interpreters() API
LewisGaul Nov 23, 2019
f4990b0
Tidy up _channelends_list_interpreters() function
LewisGaul Nov 23, 2019
c7dbb04
Move variable declarations inline
LewisGaul Nov 23, 2019
6202ecd
Use _PyInterpreterID_New() instead of getting existing objects
LewisGaul Nov 23, 2019
a7cf61b
Merge branch 'list-channel-interps' of github.com:LewisGaul/cpython i…
LewisGaul Nov 23, 2019
357101f
Markups - remove check for number of open channels and improve test s…
LewisGaul Dec 14, 2019
faca1df
Add more listing subinterpreter tests
LewisGaul Jan 21, 2020
75e791f
Implementation rewrite upon Eric's suggestion. Just one testcase now …
LewisGaul Apr 18, 2020
79f5d35
Fix issue with ChannelClosedError not being raised when 'send' end of…
LewisGaul Apr 28, 2020
5481e82
Add testcase for listing associated interpreters with basic closed ch…
LewisGaul Apr 28, 2020
79be8a0
Fix a refleak.
ericsnowcurrently Apr 28, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add macros for int64_t max etc
  • Loading branch information
LewisGaul committed Nov 21, 2019
commit 4d6ac6ed5362d0fbb61d355e5e2aefd67e5e6048
24 changes: 24 additions & 0 deletions Include/pyport.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,34 @@ Used in: Py_SAFE_DOWNCAST

#define PY_UINT32_T uint32_t
#define PY_UINT64_T uint64_t
#ifdef HAVE_STDINT_H
#include <stdint.h>
#define PY_UINT32_T_MIN UINT32_MIN
#define PY_UINT32_T_MAX UINT32_MAX
#define PY_UINT64_T_MIN UINT64_MIN
#define PY_UINT64_T_MAX UINT64_MAX
#else
#define PY_UINT32_T_MIN 0
#define PY_UINT32_T_MAX ((uint32_t)-1)
#define PY_UINT64_T_MIN 0
#define PY_UINT64_T_MAX ((uint64_t)-1)
#endif

/* Signed variants of the above */
#define PY_INT32_T int32_t
#define PY_INT64_T int64_t
#ifdef HAVE_STDINT_H
#include <stdint.h>
#define PY_INT32_T_MIN INT32_MIN
#define PY_INT32_T_MAX INT32_MAX
#define PY_INT64_T_MIN INT64_MIN
#define PY_INT64_T_MAX INT64_MAX
#else
#define PY_INT32_T_MAX ((int32_t)(((uint32_t)-1)>>1))
#define PY_INT32_T_MIN (-PY_INT32_T_MAX-1)
#define PY_INT64_T_MAX ((int64_t)(((uint64_t)-1)>>1))
#define PY_INT64_T_MIN (-PY_INT64_T_MAX-1)
#endif

/* If PYLONG_BITS_IN_DIGIT is not defined then we'll use 30-bit digits if all
the necessary integer types are available, and we're on a 64-bit platform
Expand Down
11 changes: 8 additions & 3 deletions Modules/_xxsubinterpretersmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -631,8 +631,13 @@ static int64_t *
_channelends_list_interpreters(_channelends *ends, int64_t *count, int send)
{
int64_t *ids = NULL;
int64_t numopen = send ? ends->numsendopen : ends->numrecvopen;
if (numopen >= PY_SSIZE_T_MAX) {
int64_t numopen;

assert(ends != NULL);
assert(count != NULL);
numopen = send ? ends->numsendopen : ends->numrecvopen;

if (numopen >= PY_INT64_T_MAX) {
PyErr_SetString(PyExc_RuntimeError,
"too many interpreters using the channel");
goto done;
Expand Down Expand Up @@ -1202,7 +1207,7 @@ _channels_list_all(_channels *channels, int64_t *count)
int64_t *cids = NULL;
PyThread_acquire_lock(channels->mutex, WAIT_LOCK);
int64_t numopen = channels->numopen;
if (numopen >= PY_SSIZE_T_MAX) {
if (numopen >= PY_INT64_T_MAX) {
PyErr_SetString(PyExc_RuntimeError, "too many channels open");
goto done;
}
Expand Down








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/python/cpython/pull/17323/commits/4d6ac6ed5362d0fbb61d355e5e2aefd67e5e6048

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy