|
| 1 | +diff --git a/h2o/backend/server.py b/h2o/backend/server.py |
| 2 | +index d9a166f..c9063f2 100644 |
| 3 | +--- a/h2o/backend/server.py |
| 4 | ++++ b/h2o/backend/server.py |
| 5 | +@@ -340,9 +340,8 @@ class H2OLocalServer(object): |
| 6 | + # Launch the process |
| 7 | + win32 = sys.platform == "win32" |
| 8 | + flags = getattr(subprocess, "CREATE_NEW_PROCESS_GROUP", 0) if win32 else 0 |
| 9 | +- prex = os.setsid if not win32 else None |
| 10 | + try: |
| 11 | +- proc = subprocess.Popen(args=cmd, stdout=out, stderr=err, cwd=cwd, creationflags=flags, preexec_fn=prex) |
| 12 | ++ proc = subprocess.Popen(args=cmd, stdout=out, stderr=err, cwd=cwd, creationflags=flags, start_new_session=True) |
| 13 | + except OSError as e: |
| 14 | + traceback = getattr(e, "child_traceback", None) |
| 15 | + raise H2OServerError("Unable to start server: %s" % e, traceback) |
| 16 | +diff --git a/h2o/expr.py b/h2o/expr.py |
| 17 | +index 6c6a4c3..6d73046 100644 |
| 18 | +--- a/h2o/expr.py |
| 19 | ++++ b/h2o/expr.py |
| 20 | +@@ -158,14 +158,16 @@ class ExprNode(object): |
| 21 | + # However, keeping it if this scope refers to an H2OFrame (has `_ex` entry) |
| 22 | + return isinstance(ref, dict) and '_ex' not in ref |
| 23 | + |
| 24 | +- referrers = gc.get_referrers(self) |
| 25 | ++ # GraalVM change: we don't have referers, assume everything has multiple referers |
| 26 | ++ # referrers = gc.get_referrers(self) |
| 27 | + # removing frames from the referrers to get a consistent behaviour accross Py versions |
| 28 | + # as stack frames don't appear in the referrers from Py 3.7. |
| 29 | + # also removing the AST expressions built in astfun.py |
| 30 | + # as they keep a reference to self if the lambda itself is using a free variable. |
| 31 | +- proper_ref = [r for r in referrers if not (inspect.isframe(r) or is_ast_expr(r) or is_debug_ref(r))] |
| 32 | +- ref_cnt = len(proper_ref) |
| 33 | +- del referrers, proper_ref |
| 34 | ++ # proper_ref = [r for r in referrers if not (inspect.isframe(r) or is_ast_expr(r) or is_debug_ref(r))] |
| 35 | ++ # ref_cnt = len(proper_ref) |
| 36 | ++ # del referrers, proper_ref |
| 37 | ++ ref_cnt = 2 |
| 38 | + # if this self node is referenced by at least one other node (nested expr), then create a tmp frame |
| 39 | + if top == 'frame' or (not top and ref_cnt > 1): |
| 40 | + self._cache._id = _py_tmp_key(append=h2o.connection().session_id) |
0 commit comments