Эх сурвалжийг харах

HUE-7265 [oozie] Avoid deadlock on multiple json GET to retrieve a coordinator

(1213, 'Deadlock found when trying to get lock; try restarting transaction')
IntegrityError at /oozie/editor/coordinator/edit/ (1062, "Duplicate entry '14557-write' for key 'desktop_documentpermission_doc_id_60b132dd84ab9469_uniq'") Request Method: GET Request URL: http://127.0.0.1:8000/oozie/editor/coordinator/edit/?forma
Romain Rigaux 8 жил өмнө
parent
commit
ca53845451

+ 3 - 3
apps/oozie/src/oozie/views/editor2.py

@@ -518,7 +518,7 @@ def edit_coordinator(request):
     workflows = [dict([('uuid', d.uuid), ('name', d.name)])
                       for d in Document2.objects.documents(request.user, include_managed=False).search_documents(types=['oozie-workflow2'])]
 
-  can_edit_json = doc is None or (doc.can_write(request.user) if USE_NEW_EDITOR.get() else doc.doc.get().is_editable(request.user))
+  can_edit = doc is None or (doc.can_write(request.user) if USE_NEW_EDITOR.get() else doc.doc.get().is_editable(request.user))
   if request.GET.get('format') == 'json': # For Editor
     return JsonResponse({
       'coordinator': coordinator.get_data_for_json(),
@@ -526,7 +526,7 @@ def edit_coordinator(request):
       'workflows': workflows,
       'doc_uuid': doc.uuid if doc else '',
       'is_embeddable': request.GET.get('is_embeddable', False),
-      'can_edit': doc is None or doc.doc.get().is_editable(request.user),
+      'can_edit': can_edit,
       'layout': django_mako.render_to_string('editor2/common_scheduler.mako', {'coordinator_json': coordinator.to_json_for_html()})
     })
   else:
@@ -536,7 +536,7 @@ def edit_coordinator(request):
       'workflows_json': json.dumps(workflows, cls=JSONEncoderForHTML),
       'doc_uuid': doc.uuid if doc else '',
       'is_embeddable': request.GET.get('is_embeddable', False),
-      'can_edit_json': json.dumps(can_edit_json)
+      'can_edit_json': json.dumps(can_edit)
   })
 
 

+ 1 - 1
desktop/core/src/desktop/templates/assist.mako

@@ -2392,7 +2392,7 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, get_ord
 
         // TODO: Move all the scheduler logic out of the notebook to here.
 
-        var selectedNotebookSub = self.selectedNotebook.subscribe(function (notebook) {
+        var selectedNotebookSub = self.selectedNotebook.subscribe(function (notebook) { // Happening 4 times for each notebook loaded
           if (notebook && notebook.schedulerViewModel == null && notebook.isSaved() && ! notebook.isHistory()) {
             notebook.loadScheduler();
           }