Ipfs findprovs never completes

On MacOS 10.14, daemon is running.
Running findprovs takes forever.
See below.
Is it in some way the expected behavior?

Thanks,
J

$ ipfs dht findprovs QmTtHTDZK3tnDFTmnSzbjnQ2TnMVj6arSB88Lv1UywmsYs --v
18:58:48.139: adding peer to query: <peer.ID Qm*NchesU>
18:58:48.139: adding peer to query: <peer.ID Qm*ooxpN1>
18:58:48.140: adding peer to query: <peer.ID Qm*NPxumv>
...
18:59:11.040: error: dial attempt failed: <peer.ID Qm*XecMc5> --> <peer.ID Qm*qRZ2BK> dial attempt failed: context deadline exceeded
18:59:11.947: * <peer.ID Qm*u6u3hN> says use <peer.ID Qm*z7Aq6w> <peer.ID Qm*TE1mR4> <peer.ID Qm*piKrTo> <peer.ID Qm*bVe9MZ> <peer.ID Qm*h8WHMC> <peer.ID Qm*tUWvXZ> <peer.ID Qm*H9aKwK> <peer.ID Qm*kYLNhz> <peer.ID Qm*Ew4txY> <peer.ID Qm*Uq76N9> <peer.ID Qm*dr9WGk> <peer.ID Qm*vx4xYt> <peer.ID Qm*5xxm9x> <peer.ID Qm*87Bhiw> <peer.ID Qm*MMtNG3> <peer.ID Qm*hsqpek> <peer.ID Qm*NchesU> <peer.ID Qm*LzMYsx> <peer.ID Qm*qRZ2BK> <peer.ID Qm*mABKvG>
18:59:11.947: * querying <peer.ID Qm*Ga4f2W>
 19:00:33.553: * querying <peer.ID Qm*ej6JaC>
19:00:36.233: * <peer.ID Qm*ej6JaC> says use <peer.ID Qm*yY8bzi> <peer.ID Qm*79G8eR> <peer.ID Qm*Gb9ytQ> <peer.ID Qm*kdJy6u> <peer.ID Qm*GoSh1j> <peer.ID Qm*EXSMFJ> <peer.ID Qm*saJKpA> <peer.ID Qm*piKrTo> <peer.ID Qm*H9aKwK> <peer.ID Qm*mBVj7P> <peer.ID Qm*zb3yST> <peer.ID Qm*Ew4txY> <peer.ID Qm*WRQM2d> <peer.ID Qm*wYtCFt> <peer.ID Qm*31YG4D> <peer.ID Qm*RxXYSN> <peer.ID Qm*Qxhox7> <peer.ID Qm*2qULxV> <peer.ID Qm*58RYV2> <peer.ID Qm*3zpG3T>
19:00:36.233: * querying <peer.ID Qm*i6eTLk>
19:00:36.751: * <peer.ID Qm*i6eTLk> says use <peer.ID Qm*V4TM5d> <peer.ID Qm*pQXHpP> <peer.ID Qm*yY8bzi> <peer.ID Qm*Lj65wJ> <peer.ID Qm*Cv5GhR> <peer.ID Qm*kdJy6u> <peer.ID Qm*GoSh1j> <peer.ID Qm*EXSMFJ> <peer.ID Qm*saJKpA> <peer.ID Qm*TE1mR4> <peer.ID Qm*piKrTo> <peer.ID Qm*mBVj7P> <peer.ID Qm*Ew4txY> <peer.ID Qm*2y8Xco> <peer.ID Qm*WRQM2d> <peer.ID Qm*87Bhiw> <peer.ID Qm*wYtCFt> <peer.ID Qm*RxXYSN> <peer.ID Qm*Qxhox7> <peer.ID Qm*2qULxV>
19:00:36.752: adding peer to query: <peer.ID Qm*2y8Xco>
19:00:36.753: * querying <peer.ID Qm*XjZabi>
....
19:01:09.899: error: dial attempt failed: <peer.ID Qm*XecMc5> --> <peer.ID Qm*LjN27r> dial attempt failed: context deadline exceeded
19:01:09.899: error: dial attempt failed: <peer.ID Qm*XecMc5> --> <peer.ID Qm*Zf611c> dial attempt failed: context deadline exceeded
19:01:10.118: error: dial attempt failed: <peer.ID Qm*XecMc5> --> <peer.ID Qm*57Gd6U> dial attempt failed: context deadline exceeded
19:01:10.118: error: dial attempt failed: <peer.ID Qm*XecMc5> --> <peer.ID Qm*xnvzPT> dial attempt failed: context deadline exceeded
...
19:03:38.582: adding peer to query: <peer.ID Qm*dUeLxm>
19:03:38.582: dialing peer: <peer.ID Qm*dUeLxm>
19:03:38.582: * querying <peer.ID Qm*geyee2>
19:03:39.025: * <peer.ID Qm*geyee2> says use <peer.ID Qm*pQXHpP> <peer.ID Qm*tvenyL> <peer.ID Qm*EXSMFJ> <peer.ID Qm*piKrTo> <peer.ID Qm*uSgHyj> <peer.ID Qm*8pJWpV> <peer.ID Qm*ijMSbC> <peer.ID Qm*58RYV2> <peer.ID Qm*3zpG3T> <peer.ID Qm*VQKNAd> <peer.ID Qm*NPxumv> <peer.ID Qm*1Ttyr2> <peer.ID Qm*dN43K4> <peer.ID Qm*BxyqRw> <peer.ID Qm*HREVY4> <peer.ID Qm*ej6JaC> <peer.ID Qm*j61Zxu> <peer.ID Qm*SUEYAt> <peer.ID Qm*JuiFZu> <peer.ID Qm*wgsxdt>
19:03:39.025: dialing peer: <peer.ID Qm*5mKGYs>
19:03:39.025: dialing peer: <peer.ID Qm*7XtUJY>
19:03:39.026: dialing peer: <peer.ID Qm*aQPDLQ>
19:03:39.026: error: dial attempt failed: failed to dial <peer.ID Qm*5mKGYs> (default failure)
19:03:39.026: error: dial attempt failed: failed to dial <peer.ID Qm*7XtUJY> (default failure)
19:03:39.026: dialing peer: <peer.ID Qm*TMyP7v>
19:03:39.026: * querying <peer.ID Qm*jYyXRW>
19:03:41.822: error: dial attempt failed: <peer.ID Qm*XecMc5> --> <peer.ID Qm*JtuwYQ> dial attempt failed: context deadline exceeded
19:03:42.163: error: dial attempt failed: <peer.ID Qm*XecMc5> --> <peer.ID Qm*Uc1YxM> dial attempt failed: context deadline exceeded
19:03:43.581: error: dial attempt failed: <peer.ID Qm*XecMc5> --> <peer.ID Qm*dUeLxm> dial attempt failed: context deadline exceeded

By default, ipfs dht findprovs tries to find 20 peers that can provide a hash. If there aren’t 20 peers, then it’s going to keep looking indefinitely unless there’s a timeout (though I’m not sure there is). If you want it to return after finding some other number of peers, you can do this using the -n or --num-providers option; for example, ipfs dht findprovs Qmb8wsGZNXt5VXZh1pEmYynjB6Euqpq3HYyeAdw2vScTkQ -n 2 will return very quickly.

Thanks.

For a newly added file, this means “findprovs” is guaranteed to take forever?

I wouldn’t say it’s guaranteed (for example, I can imagine scenarios where newly added content could be expected to be quickly downloaded by many peers, like for live video streams), but it’s likely it will hang indefinitely for private content.