Skip to content

Commit 0af6421

Browse files
generatedunixname89002005232357meta-codesync[bot]
authored andcommitted
Revert D85994688 (#1779)
Summary: Pull Request resolved: #1779 This diff reverts D85994688 seems to break peoples logging if things are not a string Depends on D85994688 Reviewed By: zdevito Differential Revision: D86572144 fbshipit-source-id: 49e0682fa59e1a3c28029cbc334908a764fff302
1 parent 4366269 commit 0af6421

File tree

3 files changed

+5
-94
lines changed

3 files changed

+5
-94
lines changed

python/monarch/_src/actor/actor_mesh.py

Lines changed: 4 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,13 @@
1010
import collections
1111
import contextvars
1212
import functools
13-
import importlib
1413
import inspect
1514
import itertools
1615
import logging
1716
import threading
1817
from abc import abstractproperty
1918

2019
from dataclasses import dataclass
21-
22-
from functools import cache
2320
from pprint import pformat
2421
from textwrap import indent
2522
from traceback import TracebackException
@@ -260,51 +257,6 @@ def _root_client_context() -> "Context": ...
260257
"monarch.actor_mesh._context"
261258
)
262259

263-
264-
@cache
265-
def _monarch_actor() -> Any:
266-
return importlib.import_module("monarch.actor")
267-
268-
269-
class _ActorFilter(logging.Filter):
270-
def __init__(self) -> None:
271-
super().__init__()
272-
273-
def filter(self, record: Any) -> bool:
274-
fn = _monarch_actor().per_actor_logging_prefix
275-
ctx = _context.get(None)
276-
if ctx is not None and fn is not None:
277-
record.msg = fn(ctx.actor_instance) + record.msg
278-
return True
279-
280-
281-
def per_actor_logging_prefix(instance: Instance | CreatorInstance) -> str:
282-
return f"[actor={instance}] "
283-
284-
285-
@cache
286-
def _init_context_log_handler() -> None:
287-
af: _ActorFilter = _ActorFilter()
288-
logger = logging.getLogger()
289-
for handler in logger.handlers:
290-
handler.addFilter(af)
291-
292-
_original_addHandler: Any = logging.Logger.addHandler
293-
294-
def _patched_addHandler(self: logging.Logger, hdlr: logging.Handler) -> None:
295-
_original_addHandler(self, hdlr)
296-
if af not in hdlr.filters:
297-
hdlr.addFilter(af)
298-
299-
# pyre-ignore[8]: Intentionally monkey-patching Logger.addHandler
300-
logging.Logger.addHandler = _patched_addHandler
301-
302-
303-
def _set_context(c: Context) -> None:
304-
_init_context_log_handler()
305-
_context.set(c)
306-
307-
308260
T = TypeVar("T")
309261

310262

@@ -353,7 +305,7 @@ def context() -> Context:
353305
c = _context.get(None)
354306
if c is None:
355307
c = Context._root_client_context()
356-
_set_context(c)
308+
_context.set(c)
357309

358310
from monarch._src.actor.host_mesh import create_local_host_mesh
359311
from monarch._src.actor.proc_mesh import _get_controller_controller
@@ -967,7 +919,7 @@ async def handle(
967919
# response_port can be None. If so, then sending to port will drop the response,
968920
# and raise any exceptions to the caller.
969921
try:
970-
_set_context(ctx)
922+
_context.set(ctx)
971923

972924
DebugContext.set(DebugContext())
973925

@@ -1101,7 +1053,7 @@ def _post_mortem_debug(self, exc_tb: Any) -> None:
11011053
def _handle_undeliverable_message(
11021054
self, cx: Context, message: UndeliverableMessageEnvelope
11031055
) -> bool:
1104-
_set_context(cx)
1056+
_context.set(cx)
11051057
handle_undeliverable = getattr(
11061058
self.instance, "_handle_undeliverable_message", None
11071059
)
@@ -1111,7 +1063,7 @@ def _handle_undeliverable_message(
11111063
return False
11121064

11131065
def __supervise__(self, cx: Context, *args: Any, **kwargs: Any) -> object:
1114-
_set_context(cx)
1066+
_context.set(cx)
11151067
instance = self.instance
11161068
if instance is None:
11171069
# This could happen because of the following reasons. Both

python/monarch/actor/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
current_size,
2828
enable_transport,
2929
Endpoint,
30-
per_actor_logging_prefix,
3130
Point,
3231
Port,
3332
PortReceiver,
@@ -108,6 +107,5 @@
108107
"Context",
109108
"ChannelTransport",
110109
"unhandled_fault_hook",
111-
"per_actor_logging_prefix",
112110
"MeshFailure",
113111
]

python/tests/test_python_actors.py

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import asyncio
1010
import ctypes
1111
import importlib.resources
12-
import io
1312
import logging
1413
import operator
1514
import os
@@ -21,7 +20,6 @@
2120
import time
2221
import unittest
2322
import unittest.mock
24-
from contextlib import contextmanager
2523
from tempfile import TemporaryDirectory
2624
from types import ModuleType
2725
from typing import Any, cast, Tuple
@@ -70,6 +68,7 @@
7068
from monarch.tools.config import defaults
7169
from typing_extensions import assert_type
7270

71+
7372
needs_cuda = pytest.mark.skipif(
7473
not torch.cuda.is_available(),
7574
reason="CUDA not available",
@@ -1734,31 +1733,9 @@ def test_setup_async() -> None:
17341733
time.sleep(10)
17351734

17361735

1737-
class CaptureLogs:
1738-
def __init__(self):
1739-
log_stream = io.StringIO()
1740-
handler = logging.StreamHandler(log_stream)
1741-
handler.setFormatter(logging.Formatter("%(message)s"))
1742-
1743-
logger = logging.getLogger("capture")
1744-
logger.setLevel(logging.INFO)
1745-
logger.addHandler(handler)
1746-
1747-
self.log_stream = log_stream
1748-
self.logger = logger
1749-
1750-
@property
1751-
def contents(self) -> str:
1752-
return self.log_stream.getvalue()
1753-
1754-
17551736
class Named(Actor):
17561737
@endpoint
17571738
def report(self) -> Any:
1758-
logs = CaptureLogs()
1759-
logs.logger.error("HUH")
1760-
assert "test_python_actors.Named the_name{'f': 0/2}>" in logs.contents
1761-
17621739
return context().actor_instance.creator, str(context().actor_instance)
17631740

17641741

@@ -1774,19 +1751,3 @@ def test_instance_name():
17741751
assert "test_python_actors.Named the_name{'f': 0/2}>" in result
17751752
assert cr.name == "root"
17761753
assert str(context().actor_instance) == "<root>"
1777-
1778-
logs = CaptureLogs()
1779-
logs.logger.error("HUH")
1780-
assert "actor=<root>" in logs.contents
1781-
default = monarch.actor.per_actor_logging_prefix
1782-
try:
1783-
monarch.actor.per_actor_logging_prefix = lambda inst: "<test>"
1784-
logs = CaptureLogs()
1785-
logs.logger.error("HUH")
1786-
assert "<test>" in logs.contents
1787-
monarch.actor.per_actor_logging_prefix = None
1788-
# make sure we can set _per_actor_logging_prefix to none.
1789-
logs = CaptureLogs()
1790-
logs.logger.error("HUH")
1791-
finally:
1792-
monarch.actor.per_actor_logging_prefix = default

0 commit comments

Comments
 (0)