diff --git a/frappe/public/js/frappe/recorder/RequestDetail.vue b/frappe/public/js/frappe/recorder/RequestDetail.vue
index 911b05587a..1199cb32d0 100644
--- a/frappe/public/js/frappe/recorder/RequestDetail.vue
+++ b/frappe/public/js/frappe/recorder/RequestDetail.vue
@@ -18,25 +18,6 @@
-
-
@@ -56,7 +37,6 @@ export default {
uuid: this.$route.param
}
}).then( r => {
- this.cache = r.message.cache
this.calls = r.message.calls
})
},
diff --git a/frappe/recorder.py b/frappe/recorder.py
index 3aa0a07454..9bf1e06e38 100644
--- a/frappe/recorder.py
+++ b/frappe/recorder.py
@@ -15,94 +15,17 @@ def recorder_start():
# Now is a good time
# If uuid is not set then RecorderMiddleware isn't active
if "uuid" in frappe.request.environ:
- wrap_cache()
frappe.db.sql = recorder(frappe.db.sql)
def recorder_stop():
# Recorded calls need to be stored in cache
# This looks like a terribe syntax, Because it actually is
if "uuid" in frappe.request.environ:
- persist_cache()
persist(frappe.db.sql)
def time_ms():
return time.time() * 1000
-def wrap_cache():
- def cache_recorder(function):
- def wrapper(*args, **kwargs):
- start_time_ms = time_ms()
- result = function(*args, **kwargs)
- end_time_ms = time_ms()
-
- # Some elementary analysis shows that following lines are a little time consuming
- # These can be made optional.
- stack = "".join(traceback.format_stack())
-
- data = {
- "function": function.__name__,
- #"args": args,
- #"kwargs": kwargs,
- # result is sometimes a nested dict, those can't be sometimes JSON serialized.
- # pickle.dumps seems like a nice way to go., but JS can't understand pickle.
- # Skip result for now
- # "result": result,
- "stack": stack,
- # Exact redis query is not available for now
- # Regenerate equivalent function call instead.
- "call": "{}(*{},**{})".format(function.__name__, args, kwargs),
- "time": {
- "start": start_time_ms,
- "end": end_time_ms,
- "total": end_time_ms - start_time_ms,
- },
- }
-
- wrapper.calls.append(data)
- return result
- wrapper.calls = list()
- return wrapper
-
- # frappe.cache() will provide an instance of RedisWrapper
- # Selected methods of this class are used to do cache operations
- # Recording activity of these methods will give a nice picture of cache activity
-
- # cache_methods lists all interesting cache methods
- # Override these methods with the use of wrapper function
- # that records each call along with some suplimentary data
- redis_server = frappe.cache()
- cache_methods = [
- "set_value", "get_value",
- "get_all", "get_keys",
- "delete_keys", "delete_key", "delete_value",
- "lpush", "rpush", "lpop", "llen", "lrange",
- "hset", "hgetall", "hincrby", "hget", "hdel", "hdel_keys", "hkeys",
- "sadd", "srem", "sismember", "spop", "srandmember", "smembers",
- "zincrby", "zrange"
- ]
-
- # cache_methods will be needed again while storing recorded calls in cache
- # Store cache_methods list in cache_methods attribute of wrap_cache
- wrap_cache.cache_methods = cache_methods
- for method in cache_methods:
- # For now assume that all these methods exist on RedisWrapper instance
- original = getattr(redis_server, method)
- modified = cache_recorder(original)
- setattr(redis_server, method, modified)
-
-def persist_cache():
- redis_server = frappe.cache()
- cache_methods = wrap_cache.cache_methods
- calls = []
- uuid = frappe.request.environ["uuid"]
- for method in cache_methods:
- # Assumes that the method exists on RedisWrapper instance
- # and function.calls also exists
- function = getattr(redis_server, method)
- calls.extend(function.calls)
-
- # Record all calls in cache
- frappe.cache().set("recorder-calls-cache-{}".format(uuid), dumps(calls))
def recorder(function):
def wrapper(*args, **kwargs):
diff --git a/frappe/www/recorder.py b/frappe/www/recorder.py
index 1351e1a325..6bba4890bf 100644
--- a/frappe/www/recorder.py
+++ b/frappe/www/recorder.py
@@ -32,13 +32,7 @@ def get_request_data(uuid):
for index, call in enumerate(calls):
call["index"] = index
- cache = frappe.cache().get("recorder-calls-cache-{}".format(uuid))
- cache = json.loads(cache.decode())
- for index, call in enumerate(cache):
- call["index"] = index
-
return {
- "cache": cache,
"calls": calls,
}