I've read all I could find on dependency cycle issues in Blender, tried everything suggested in related posts: enabled new dependency graph, unchecked stretch in IK setting, checked Extra Object Update and Extra Data Update on IK controls and bones. Nothing seem to work, still getting a lag in animation and the following console output:

Default dependency graph:

    Dependency cycle detected:
    WristMarker depends on Armature through Bone Parent.
    indexIKpole.L depends on WristMarker through Parent.
    Armature depends on indexIKpole.L through IK.

New dependency graph:


	  Dependency cycle detected:
	  'OBindexIKgoal.L.TRANSFORM_LOCAL()' depends on 'OBWristMarker.TRANSFORM_FINAL()' through 'Parent'
	  'OBWristMarker.TRANSFORM_FINAL()' depends on 'OBWristMarker.OBJECT_UBEREVAL()' through 'Temp Ubereval'
	  'OBWristMarker.OBJECT_UBEREVAL()' depends on 'OBWristMarker.TRANSFORM_PARENT()' through 'Temp Ubereval'
	  'OBWristMarker.TRANSFORM_PARENT()' depends on 'OBWristMarker.TRANSFORM_LOCAL()' through '[ObLocal -> ObParent]'
	  'OBWristMarker.TRANSFORM_LOCAL()' depends on 'OBArmature.wrist.L.BONE_DONE()' through 'Bone Parent'
	  'OBArmature.wrist.L.BONE_DONE()' depends on 'OBArmature.wrist.L.BONE_READY()' through 'Ready -> Done'
	  'OBArmature.wrist.L.BONE_READY()' depends on 'OBArmature.wrist.L.BONE_POSE_PARENT()' through 'Pose -> Ready'
	  'OBArmature.wrist.L.BONE_POSE_PARENT()' depends on 'OBArmature.forearm.L.BONE_DONE()' through '[Parent Bone -> Child
	 Bone]'
	  'OBArmature.forearm.L.BONE_DONE()' depends on 'OBArmature.POSE_IK_SOLVER()' through 'IK Solver Result'
	  'OBArmature.POSE_IK_SOLVER()' depends on 'OBArmature.arm.L.BONE_READY()' through 'IK Chain Parent'
	  'OBArmature.arm.L.BONE_READY()' depends on 'OBArmature.arm.L.BONE_POSE_PARENT()' through 'Pose -> Ready'
	  'OBArmature.arm.L.BONE_POSE_PARENT()' depends on 'OBArmature.arm.L.BONE_LOCAL()' through 'Bone Local - PoseSpace Lin
	k'
	  'OBArmature.arm.L.BONE_LOCAL()' depends on 'OBArmature.POSE_INIT()' through 'PoseEval Source-Bone Link'
	  'OBArmature.POSE_INIT()' depends on 'OBindexIKgoal.L.TRANSFORM_FINAL()' through 'IK'
	  'OBindexIKgoal.L.TRANSFORM_FINAL()' depends on 'OBindexIKgoal.L.OBJECT_UBEREVAL()' through 'Temp Ubereval'
	  'OBindexIKgoal.L.OBJECT_UBEREVAL()' depends on 'OBindexIKgoal.L.TRANSFORM_PARENT()' through 'Temp Ubereval'
	  'OBindexIKgoal.L.TRANSFORM_PARENT()' depends on 'OBindexIKgoal.L.TRANSFORM_LOCAL()' through '[ObLocal -> ObParent]'

Maybe there is something fundamentally wrong with my rig? I haven't rigged in a long time in Blender or any other program for that matter. In the past I did some rigs in Maya and Cinema4D and, as far as I can recall, I used similar parenting technique without issues.

I have an arm rig for this test. I have one IK chain from forearm to shoulder, another one from index finger tip to index finger base. I have an empty called `wristmarker` parented to wrist bone. I have `indexIKgoal` and `indexIKpole` parented to the `wristMarker`, so that when the whole arm moves, finger position stays relative to the wrist.

Appreciate any help.


[![enter image description here][1]][1]

blend file:

 https://ufile.io/pgafy   
http://s000.tinyupload.com/index.php?file_id=44699481485193911373

  [1]: https://i.sstatic.net/G8H0e.gif