renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin783294758.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin992912113.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin431779282.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin740517373.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin672569756.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin100568898.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin891751414.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin191121070.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin652793523.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin800434555.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin830102685.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin317261379.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin444702638.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin432983557.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin617627172.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin72835319.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin233997168.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin605710883.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin482980195.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin291623460.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin995047079.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin587673224.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin718919270.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin535700924.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin866621798.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin278801828.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin164275046.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin810761105.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin53663073.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin260057593.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin996286441.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin483753262.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin736505967.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin913780505.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin747518122.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin927672260.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin595457930.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin938680276.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin772066204.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin435475916.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin879420989.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin349559190.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin292885239.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin278987611.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin363652723.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin50563025.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin712337366.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin248949216.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin513437868.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin847108494.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin75492233.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin548911601.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin79512192.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin97291533.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin181722972.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin781852874.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin440933731.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin229173482.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin331770228.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin750553575.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin761229534.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin282744005.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin101549241.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin683055223.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin36132321.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin428745652.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin645224841.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin700632096.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin708493668.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin291033589.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin97686054.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin726284441.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin928760273.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin176103650.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin769889914.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin375312299.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin834227321.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin353970082.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin486096951.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin109780632.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin622977032.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin439367592.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin854017477.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin386357405.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin927061399.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin617633077.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin44169472.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin539025375.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin716157153.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin13999384.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin20154893.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin729834837.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin30833937.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin727708102.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin2538505.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin20116455.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin340337946.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin218725603.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin768089327.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin954493806.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin513092936.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin662498577.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin662250879.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin874497372.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin710923843.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin473112233.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin367750950.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin235290543.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin87939385.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin337139994.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin679086134.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin476370333.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin162252339.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin133045147.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin246852377.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin861357186.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin47650026.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin896789285.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin480150668.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin75620149.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin366157984.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin679416713.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin650482710.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin253044003.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin48237724.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin884273280.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin217436258.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin989127315.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin31803777.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin684358014.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin331316693.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin666338192.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin982365224.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin720848836.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin509462726.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin446086186.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin669101202.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin223996067.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin871119719.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin342541611.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin247622908.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin129931468.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin468477426.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin853756172.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin150977924.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin9989707.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin682650924.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin61061056.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin511800994.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin731852361.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin440126842.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin957116257.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin275893473.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin69843775.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin956861985.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin947640253.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin13411030.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin666515230.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin538516674.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin259477553.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin674698780.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin993831340.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin716689541.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin842636786.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin690884524.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin742471552.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin751262491.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin927639284.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin825424925.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin519718563.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin500369653.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin933058509.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin134838447.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin773890024.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin198037268.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin579901348.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin824266980.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin329125520.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin827406996.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin17232100.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin636084897.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin695109050.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin956666762.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin736513050.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin122212108.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin810336883.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin339302014.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin243450426.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin737990811.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin89712020.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin633160060.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin268425181.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin868549548.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin517946252.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin726054679.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin387146810.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin889726655.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin951683270.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin527147708.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin243808569.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin434269839.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin317348770.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin839344413.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin571490241.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin135822046.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin699118552.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin72802011.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin801523589.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin814060499.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin752618922.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin34380136.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin938040378.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin207418555.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin302080268.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin371098124.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin304564808.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin234925959.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin630377421.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin660006095.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin771063173.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin238149.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin410745229.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin683503350.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin512506453.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin764740544.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin511133576.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin387911807.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin451902429.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin538548515.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin14853093.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin244945159.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin494739929.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin987431381.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin224737765.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin678573587.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin428198849.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin67983028.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin827869089.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin727780049.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin469158411.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin689763487.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin131352784.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin978773344.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin208372342.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin457453740.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin116903943.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin467869684.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin258589923.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin421262663.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin492223101.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin470016618.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin183099723.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin860474147.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin651529420.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin655517470.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin884418194.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin56306708.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin574566940.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin894483437.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin197617277.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin644601903.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin284901405.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin611806811.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin648479901.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin87450077.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin638367296.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.
FAIL
FAIL	cmd/go/internal/renameio	1.760s

To summarize, it seems that os.Rename is not actually atomic on Windows under load.
(See previously #8914; see also #22397.)

os.Rename on Windows is implemented via internal/syscall/windows.Rename, which uses the Windows MoveFileEx system call with the MOVEFILE_REPLACE_EXISTING flag. That appears not to be atomic.
Per this article, it appears that we could use ReplaceFile as an alternative.
It is not obvious to me whether os.Rename itself should be changed to use ReplaceFile, but we're probably too deep into the 1.13 freeze to do that right now anyway.

To summarize, it seems that os.Rename is not actually atomic on Windows under load.

What do you mean atomic ?
If you refer to
    renameio_test.go:39: rename C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin336963765.tmp C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: Access is denied.

in your log, then the Access is denied error could be for different reason.
Also
    renameio_test.go:45: open C:\Users\gopher\AppData\Local\Temp\1\renameio091369927\blob.bin: The process cannot access the file because it is being used by another process.

could be because ioutil.ReadFile does not work properly while your renameio.WriteFile is in progress.
I am not familiar enough with your problem, but do you really need file locks? Do you know that you can use memory sync objects, like
https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-createmutexexw
or
https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-createmutexexw
and many others? These will provide you with whatever sync functionality you require across single computer. I also suspect they will be faster than working with files, because they are pure sync objects.
Alex

What do you mean atomic ?

An atomic file-rename has the property that any read of the file sees either its contents before the rename or after the rename, never some third state (such as partially-zeroed, truncated, or inaccessible).

could be because ioutil.ReadFile does not work properly while your renameio.WriteFile is in progress.

Yes, that's exactly what I mean about it not being atomic: if Rename were atomic, then ioutil.ReadFile should work concurrently with renameio.WriteFile.
It isn't obvious to me whether ReplaceFile is atomic in that sense either. If it is not, then perhaps we will need to use the side-lock to guard go.mod and go.sum edits on Windows. (We do not currently do any locking for those files, instead relying on the atomicity of renameio operations.)

the Access is denied error could be for different reason.

Yes, that particular error is probably another manifestation of #30789. The cannot access the file because it is being used by another process error is the more interesting one in terms of atomicity and go.mod updates.

An atomic file-rename has the property that any read of the file sees either its contents before the rename or after the rename, never some third state (such as partially-zeroed, truncated, or inaccessible).

Then I don't see how do you know that Windows MoveFileEx system call with the MOVEFILE_REPLACE_EXISTING flag is not atomic.

Yes, that's exactly what I mean about it not being atomic: if Rename were atomic, then ioutil.ReadFile should work concurrently with renameio.WriteFile.

What Rename are you talking about? I was talking about ioutil.ReadFile. ioutil.ReadFile uses Windows CreateFile with FILE_SHARE_READ | FILE_SHARE_WRITE, so any other program can write to the file during ioutil.ReadFile execution. And all new writes will be visible by ioutil.ReadFile as it read file byte by byte. That is whole point of FILE_SHARE_READ | FILE_SHARE_WRITE. If you want exclusive access to the file, you should not specify FILE_SHARE_READ | FILE_SHARE_WRITE.

It isn't obvious to me whether ReplaceFile is atomic in that sense either. If it is not, then perhaps we will need to use the side-lock to guard go.mod and go.sum edits on Windows. (We do not currently do any locking for those files, instead relying on the atomicity of renameio operations.)

I did not look at your renameio, so I would not know. But you need file locks (or just drop FILE_SHARE_READ | FILE_SHARE_WRITE in CreateFile call) to make sure your file is getting read or written by only one program at a time.
Still you need to synchronize your file reads and writes, how do you propose to do that? You don't want your read happens before write. Also, even with file locks or without FILE_SHARE_READ | FILE_SHARE_WRITE, whoever comes second will get "Access denied" error:
h1 = CreateFile()
WriteFile(h1)
h2 = CreateFile()
CloseHandle(h1)
ReadFile(h2)
CloseHandle(h2)

h2 = CreateFile() will fail with "Access denied" error
Alex

I don't see how do you know that Windows MoveFileEx system call with the MOVEFILE_REPLACE_EXISTING flag is not atomic.

Empirical testing. 🙂
But empirical testing shows that ReplaceFile is also not atomic, so it looks like we're hosed either way.

ioutil.ReadFile uses Windows CreateFile with FILE_SHARE_READ | FILE_SHARE_WRITE, so any other program can write to the file during ioutil.ReadFile execution.

Note that there is a third bit, FILE_SHARE_DELETE, that guards both deletion and renaming, which we do not currently set.
Unfortunately, even setting that bit does not seem to eliminate all of the ACCESS_DENIED or SHARING_VIOLATION errors.

If you want exclusive access to the file, you should not specify FILE_SHARE_READ | FILE_SHARE_WRITE.

I don't want exclusive access to the file — I want semantics consistent with POSIX, in which existing handles to the file see its existing contents from before the rename, handles opened after the rename see the new contents, and there is no fuzzy inaccessible state in the middle in which a the file cannot be read at all.

you need file locks […] to make sure your file is getting read or written by only one program at a time.

In some cases, yes. Most of these operations follow the sequence read-prepare-lock-read-write-unlock, which works on all of the other supported platforms and minimizes the duration under which the file is locked. The problem with this test on Windows is that the first read operation fails.

I don't want exclusive access to the file — I want semantics consistent with POSIX, in which existing handles to the file see its existing contents from before the rename, handles opened after the rename see the new contents, and there is no fuzzy inaccessible state in the middle in which the file cannot be read at all.

Sorry, but I still do not understand what you are talking about. You are saying rename, but I only see reading and writing of files. Perhaps if you could give an example in Go that runs on Linux, maybe I could try and make it work on Windows.
Thank you.
Alex

Perhaps if you could give an example in Go that runs on Linux, maybe I could try and make it work on Windows.

That example is exactly the new test I added for the cmd/go/internal/renameio package. You can replicate the failure by removing the runtime.GOOS == "windows" special-cases from the test.
For now, the workaround of retrying both the read and rename operations on error seems to produce an acceptably low flake rate (for both renameio and TestScript/mod_concurrent). I haven't seen any flakes since those CLs landed.

That example is exactly the new test I added for the cmd/go/internal/renameio package. You can replicate the failure by removing the runtime.GOOS == "windows" special-cases from the test.

Thank you for the reference.
As far as understand your test just verifies that complete write of a file is read as a whole. Other than that there is no synchronization between readers or writers, or between writers, or between readers.
You could have achieved that by using CreateFile without either FILE_SHARE_READ or FILE_SHARE_WRITE. Then all file readers and writers would get exclusive access to the file, while others will get 'Access denied' (or similar) error. If you get 'Access denied' error, you would have to try again later.
You could also have used CreateFile with FILE_SHARE_READ. Similar to above, but all your readers can read file simultaneously. Other than similar to the above.
You could also use system sync objects (for example CreateMutexEx or similar) to control access to the file. These would allow you to wait for sync object to be released instead of trying in a loop.

For now, the workaround of retrying both the read and rename operations on error seems to produce an acceptably low flake rate (for both renameio and TestScript/mod_concurrent). I haven't seen any flakes since those CLs landed.

Your approach uses os.Rename as atomic write operation. I do not know, if os.Rename behaves this way on Windows.
Alex

As far as understand your test just verifies that complete write of a file is read as a whole. Other than that there is no synchronization between readers or writers, or between writers, or between readers.

Correct.

You could have achieved that by using CreateFile without either FILE_SHARE_READ or FILE_SHARE_WRITE. Then all file readers and writers would get exclusive access to the file, while others will get 'Access denied' (or similar) error. If you get 'Access denied' error, you would have to try again later.

My goal is for readers and writers not to need to retry at all. Concurrent writes are guarded by locking an external file, and concurrent reads should simply wait for the file to become available, then read it.

You could also use system sync objects (for example CreateMutexEx or similar) to control access to the file. These would allow you to wait for sync object to be released instead of trying in a loop.

We already use a (more portable) file lock to guard write access to files for which writes are important and not idempotent. In theory we could do the same for read access and for files for which dropped writes are OK (such as the cache-trimming timestamp) or for which writes are idempotent, but that would add needless locking overhead in by far the common case (concurrent readers with no writers).
We could add the locking only for Windows, but — especially given that our builders have much better coverage for Unix-like platforms — that seems like it would substantially increase the likelihood of introducing a subtle, Windows-only deadlock.


Need clarification on Transform behavior.

Hi,
I'm having some trouble understanding how to correctly use the collection transforms. More specifically, I'm trying to figure out the correct way that the eqJoin and map transforms should be used.
Given this setup code:
const loki = require( 'lokijs' );
const lokiMem = new loki.LokiMemoryAdapter();
const db = new loki( 'my.db', { adapter: lokiMem } )
const coll = db.addCollection( 'mycoll', { unique: ['test'] } );

const data = [
      { test: 'a' },
      { test: 'b' },
      { test: 'c' },
      { test: 'e' },
      { test: 'd' },
      { test: 'g' },
      { test: 'f' },
    ];

const jdata = [
      { id: 'b', a: 1, b: 2 },
      { id: 'c', a: 1, b: 2 },
      { id: 'd', a: 1, b: 2 },
      { id: 'e', a: 1, b: 2 },
      { id: 'f', a: 1, b: 2 },
      { id: 'h', a: 1, b: 2 },
    ];

coll.insert(data);

I'd like to to join the data and jdata docsets. So I create a transform to allow me to do this.
coll.addTransform( 'testTrx', [
        {
          type: 'eqJoin',
          joinData: jdata,
          leftJoinKey: 'test',
          rightJoinKey: 'id'
        }
] );

let out = coll.chain( 'testTrx' ).data();
console.log(out)

So, without providing a mapFun option to the eqJoin transform, the standard mapping function is applied yielding output that looks like this.
[
        {
            "left": {
                "test": "a",
                "meta": {
                    "revision": 0,
                    "created":<PHONE_NUMBER>008,
                    "version": 0
                },
                "$loki": 1
            },
            "right": {}
        },
        {
            "left": {
                "test": "b",
                "meta": {
                    "revision": 0,
                    "created":<PHONE_NUMBER>008,
                    "version": 0
                },
                "$loki": 2
            },
            "right": {
                "id": "b",
                "a": 1,
                "b": 2
            }
        },

...
]

But I would rather have the data be joined directly into the document, so I modify the transform to look like this.
coll.addTransform( 'testTrx', [
        {
          type: 'eqJoin',
          joinData: jdata,
          leftJoinKey: 'test',
          rightJoinKey: 'id',
          mapFun: function( left, right ) {
            left = Object.assign( left, right );
            return left;
          }
        }
] );

But when I invoke the transform, I get this error: Error: Document is already in collection, please use update()
It seems as if the data is being re-inserted into the collection, and the unique keys are clashing. So I attempted to strip the metadata from the record.
coll.addTransform( 'testTrx', [
        {
          type: 'eqJoin',
          joinData: jdata,
          leftJoinKey: 'test',
          rightJoinKey: 'id',
          mapFun: function( left, right ) {
            left = Object.assign( left, right );
            delete left.meta;
            delete left.$loki;
            return left;
          }

        }
] );

Doing this yields the correct output:
[
        {
            "test": "a",
            "meta": {
                "revision": 0,
                "created":<PHONE_NUMBER>194,
                "version": 0
            },
            "$loki": 1
        },
        {
            "test": "b",
            "id": "b",
            "a": 1,
            "b": 2,
            "meta": {
                "revision": 0,
                "created":<PHONE_NUMBER>194,
                "version": 0
            },
            "$loki": 2
        },
...
]

This same behavior also occurs if I use the map transform and attempt to project the dataset. I need to strip the loki metadata, otherwise I get the same error as before.
If transforms are meant to be a way to restructure the dataset for output, does it make sense to have to manually strip the document metadata anytime the data needs to be changed?
The error advises me to use update, but as far as I understand, that modifies the original data.
Is there a better way to restructure or "project" data for use in views or as a means for output only?

eqJoin creates new wrapper object and inserts those objects into a (new) throwaway collection for future chain ops or call to data().
I modified eqJoin to allow extra parameter 'dataOptions'.  It will be applied to left side object always (the resultset you are calling eqJoin from).  If your right side data is Collection or Resultset it will also be passed to data() call for those as well.  (I just added support for Collection).
I have a loki sandbox gist to demonstrate this new reworked eqJoin advanced use which you can view here.  It is based on our unit tests which I will need to add a new test for this soon.
Let me know if you still have issues.

@obeliskos,
Thank you for the quick reply, and for taking the time to implement a solution. I think the solution works very well, and it's a good approach.
Would it be possible to implement the same dataOptions configuration on the map transform? map seems like a useful method for projecting data in various ways within a transform, but the current implementation has the same issue as the eqJoin, where returning an object with its original $loki parameter will raise the Document is already in collection error.
Also, on a related note, the map transform seems to expect its callback function to be set via the value attribute, as opposed to mapFun. This seems inconsistent with the rest of the API, and so I'm assuming its a bug.
Here is the relevant code from: Resultset.prototype.transform
case "map":
          rs = rs.map(step.value);
          break;
case "eqJoin":
          rs = rs.eqJoin(step.joinData, step.leftJoinKey, step.rightJoinKey, step.mapFun, step.dataOptions);
          break;

The map transform (as well as the chained method itself) dumps mapped objects into anonymous collection which will need to add meta there.   This map only accepts 1 object.
Or are you referring to eqJoin mapFun which accepts two (left and right)?
Do you expect the object you return from map of single (collection object) to have loki and or meta?
If not you can removeMeta on call to data like :
coll.chain("mytransform").data({ removeMeta:true });

I tried adding to map to solve your previous problem before recognizing the issue was elsewhere.   Wouldn't any

@obeliskos,
The problem is how the data is injected into the mapping function.
Given my setup code from the top of this page, if you attempt this code:
coll.addTransform( 'testTrx', [
        {
          type: 'map',
          value: function( data ) {
            return Object.assign( { newField: 1 }, data );
          }
        }
      ] );

let out = coll.chain( 'testTrx' ).data( { removeMeta: true } );
console.log( out )

You will receive the error: Error: Document is already in collection, please use update()
So, just as in the case of eqJoin, the intermediate collection requires that the $loki metadata be stripped from the object before returning it.

Ok so for just grafting extra properties without defining new object...  I've checked that in.
Word of caution (elsewhere), by default loki does not clone objects so arbitrarily modifying those actual object references will acutally modify the documents in the collection, circumventing index logic and meta checks, etc... possibly corrupting integrity of collection.
With removeMeta, cloning is implied and if you are not already cloning we will shallow clone so you might remove or add top level properties without affecting collection.
If you wish to manipulate deeper within the objects, you should explicitly specify 'parse-stringify' cloneMethod to deep copy the objects.

I've been testing these changes for a little while now, and I can confirm that everything works as expected, so I'm closing this.
Thank you again.


Add Nuxt 3 migration project proposal

Fixes

Part of #411
Description

Tagging @sarayourfriend and @zackkrida for their experience with frontend.
Process
This discussion is following the Openverse decision-making process. Information
about this process can be found
on the Openverse documentation site.
Requested reviewers or participants will be following this process. If you are
being asked to give input on a specific detail, you do not need to familiarise
yourself with the process and follow it.
Current round
This discussion is currently in the {Clarification, Revision, Decision,
Continued Revision} round.
The deadline for review of this round is {date}

[ ] My pull request has a descriptive title (not a vague title likeUpdate index.md).
[ ] My pull request targets the default branch of the repository (main) or a parent feature branch.
[ ] My commit messages follow best practices.
[ ] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[ ] I tried running the project locally and verified that there are no visible errors.
[ ] I ran the DAG documentation generator (if applicable).

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

I also think we can shortcut the rounds quickly. I agree with the changes to making the pnpm upgrade entirely optional / a separate project and defaulting to Node 18 as well.

Based on the suggestions in the comments to short-circuit this discussion, I added the changes regarding the node and pnpm versions, and moved this discussion to the Decision step.


[Up deps] make dubbogo 1.5.5.RC1 to 1.5.5

What would you like to be added:
Why is this needed:

WIP

WIP


Add: WYCI-DT6

Channel Name
WYCI-DT6
Alternative Names (optional)
No response
Network (optional)
The365
Owners (optional)
Gray Television
Country
US
Subdivision (optional)
US-NY
City (optional)
Saranac Lake
Broadcast Area
s/US-NY
Languages
eng
Categories (optional)
entertainment
NSFW
FALSE
Launched (optional)
No response
Closed (optional)
No response
Replaced By (optional)
No response
Website (optional)
https://publicfiles.fcc.gov/tv-profile/WYCI
Logo
https://static.wikia.nocookie.net/logopedia/images/6/60/The365_2024_blue.svg/revision/latest/scale-to-width-down/150?cb=20231224193428
Notes
No response

Please update your request:

logo is not loading

https://github.com/iptv-org/database/blob/master/CONTRIBUTING.md#channels

Fixed.


[Fix](partial update) Fix core when successfully schema change and load during a partial update

Proposed changes
Issue Number: close #25962
load1(partial update)            schema change                         load2
begin txn(with schemaV1)
                               begin schema change
                           schema change successfully
                                                                 begin txn(with schemaV2)
                                                                      commit txn
commit txn

If we do a schema change successfully and then finish a load job(load2) with that new schema during another partial update load job(load1) and there are conflict rows between load1 and load2 job, when load1 resolve these conflict rows during publish phase, it will read the data from segments produced by load2 with new schema using old schema and then write these data into segments with old schema. Because class block will not limit the length of the data with string like type but some fields in segments have length limit(like ZoneMaps). So if we enlarge the size of varchar/char column in schema change, it will crash.
This PR let fe reject commit transaction request from partial update load if it finds that the above process happens.
Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run feut

run buildall

run p0


Fix incorrect task name

Q
A

Bug fix?
Yes

New feature?
No

BC breaks?
No

Deprecations?
No

Fixed tickets
N/A

This change fixes usage instructions in the documentation as deploy:rollbar task doesn't exist and rollbar:notify is the actual task that should be used.

Thanks!


Flicker noted on carousel implementation

components: Carousel
reactstrap version 5.0.0.alpha.3
react version #16
bootstrap version #4.0.0.beta2

Hi,
I've implemented reactstrap (which is a great tool!) in my app. I've added a carousel at the top of my home page. It cycles 4 images with captions. I'm using the latest react. I've noted a flicker on my page when using the carousel. It happens every now and again and the viewable page seems to flicker/flash once for a less than a second and then everything back to normal. The flicker/flash seems to show the contents of the page below the carousel but its really hard to tell.
I've tried everything I can think of to correct that. I've even use will-change: transform css property to prepare the browser for performance. Nothing has worked.
I wonder if its an issue with react v16 or if theres an issue with using the alpha version of reactstrap. That said I can't seem to correct the issue.
Would really appreciate some help on resolving this issue. Thank you all.
Thanks

I have noticed this as well, randomly. I tossed a break on attribute modification to catch the classes being added and removed and found that at a certain point, sometimes no item is .active. At least one items needs active so that the item takes up space within the carousel; pushing other content down,
I'll look into why this is happening.
Here is a screenshot of the issue:

Hi,
Thanks for looking at this. If you have a couple of carousels on your page then this bug occurs much more commonly and causes the page to flash with content below the carousel which jumps up and back down instantly. When you described what was happening that made sense with what I'm seeing.
Thanks

Hey,
We are also experiencing a similar issue with the Carousel. We haven't been able to identify the cause but it seems that at almost random times when you are clicking through the carousel it will flicker and the scroll position reverts to the top of the section.
We have tried 5.0.0.alpha.3 and 5.0.0.alpha.4
Thanks

@TheSharpieOne is there any update? Is there any progress or idea how to fix this & do we have an idea when approx. this will be fixed? (I'm asking so we can inform our customers). Thanks

HI all,
Yes really keen to see a fix to this so we can add carousel features to our company website.
Thanks.

I forgot to mention, but on mobile, the carousel disappears after a while. I think it might be related to this issue?
(tested on: iphone 6 safari portrait mode iOS 11.1.2)

Hey ! This flicker problem is still there with 5.0.0-beta , is it planned to fix it soon ? Thanks

Any new on this?
@TheSharpieOne observation is exactly what i'm seeing.
Current Setup:
React 16.2
Bootstrap 4
reactstrap: 5.0.0-beta
Seems Random, however, I'm noticing it more when viewing in Safari then chrome (not sure it helps)

Expanding on @TheSharpieOne findings. A dirty fix for me was to just put a set height to .carousel-inner. This only works if your carousel does not require dynamic heights.

@david-j-lee In continuation of your workaround I just wanted to point out that it works with dynamic height as well (granted you're already setting the height of the carousel). I did it like this:
JS
onEntering = ({ clientHeight }) => {
  this.setState({ carouselHeight: clientHeight })
}

onEntering is passed to the CarouselItem component, and carouselHeight is applied inline to the .carousel-wrapper.
SCSS
.carousel,
.carousel-inner {
  height: 100%;
}

.carousel-wrapper {
  // Replace transition-property from carousel transition variable
  transition: set-nth($carousel-transition, 1, height);
}

Also experiencing this

I had the same issue but i noticed if i gave the section/div position: relative it flicks and if omitted this rule, it solves the issue.

What is the solution for this

 <CarouselItem
    className={styles.carouselInner}
    onExiting={() => setAnimating(true)}
    onExited={() => setAnimating(false)}
    key={item.name}
            >

And
.carouselInner{
    height: 100% !important;
    position:relative;
}

Did the trick for me :) .


Implement HyperAttention -  Long-context Attention in Near-Linear Time: outperforms FlashAttention and offers up to 5x speedup on long contexts

The research by Google was released on 11 Oct 2023 https://arxiv.org/pdf/2310.05869.pdf

There is also flash decoding. Inside flash-attention already.

Yeah I'm skeptical of jumping on every new idea that comes out. HyperAttention is an approximation of dot-product attention, and according to their own tests it has very measurable impact on pretrained models. And the performance gain is only for attention, which isn't really the main bottleneck in ExLlama.
I do need to look into Flash Decoding, to see what it actually takes to trigger it, or if it's used automatically or what. There's not a huge performance jump from flath-attn 2.2.1 to 2.3.0 at least, so if it only works with the decoder module defined by flash-attn, it's a non-starter since that wouldn't support quantization.

Maybe it's possible to ask him to make it stand alone and not just for the decoder module.

Yeah I'm skeptical of jumping on every new idea that comes out. HyperAttention is an approximation of dot-product attention, and according to their own tests it has very measurable impact on pretrained models. And the performance gain is only for attention, which isn't really the main bottleneck in ExLlama.
I do need to look into Flash Decoding, to see what it actually takes to trigger it, or if it's used automatically or what. There's not a huge performance jump from flath-attn 2.2.1 to 2.3.0 at least, so if it only works with the decoder module defined by flash-attn, it's a non-starter since that wouldn't support quantization.

@turboderp Hi, do you have a answer whether flash-decoding is triggered automatically when using flash-attn(2.3.2) or we need do something else?
I see in exllama v1, attn_output = flash_attn_func(query_states, key_states, value_states, causal = (past_len == 0)), but not very clear whether flash-decoding is used or not.


updated the read me to add openai api key

as There is no way to put openai API key while running the example .

need to add api kei in zshrc file or bashrc file

#28


Prepare master branch for next release, 28.0.0

Release branch https://github.com/apache/druid/tree/27.0.0 has been cut.
This PR prepares the master branch for the next release, version 28.0.0 in accordance with
https://github.com/apache/druid/blob/master/distribution/asf-release-process-guide.md#preparing-the-master-branch-for-the-next-version-after-branching
Changes:
Updated pom.xml with the next snapshot version
Update package.json and package-lock.json
Update unified-console.html

Thank you for the review @clintropolis


V0.6.2

Pull Request Test Coverage Report for Build 923

0 of 21 (0.0%) changed or added relevant lines in 1 file are covered.
75 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.02%) to 46.026%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

server/bindata_assetfs.go
0
21
0.0%

Files with Coverage Reduction
New Missed Lines
%

provider/gpkg/binary_header.go
2
100.0%

server/bindata_assetfs.go
73
0.0%

Totals

Change from base Build 900:
-0.02%

Covered Lines:
5582

Relevant Lines:
12128

💛  - Coveralls


key word  “fs”  is  declared    in<EMAIL_ADDRESS>file, this   cause  Node.js file system ‘ fs’     not work   。

👉 Please follow one of these issue templates
👈
fs is  declared    in<EMAIL_ADDRESS>file,
this   cause  Node.js file system ‘ fs’     not work   。
const FS = require('fs');

Sorry but I'm not able to understand anything about this issue, please give more infos about what you want, and we'll reopen.


dataspace-protocol: move ContractNegotiation domain logic into command handlers

Feature Request
Currently the ContractNegotiationService is delegating a lot of domain logic into the ContractNegotiationManager, but it would definitely fit better into command handlers, so we can reduce the code of the manager and test the logic in a better way.
Which Areas Would Be Affected?
contract negotiation
Why Is the Feature Desired?
refactor, separation of concerns_

Couldn't we move a lot of that logic into the service layer (or push them down to a collaborator)? My concern with handlers is they tend to be very difficult to follow if there are a significant number of them, whereas services tend to be more explicit.

The problem with services is that they tend to "explode", the ContractNegotiation one currently is not that big, but when we'll up the logic that now stay in the manager (e.g. methods requested, agreed, etc...) it will become a burden to maintain/test.
Splitting the logic into different command handlers will permit to have the service only to validate the input, create the command, execute it and handle the output without going to much into details, it will be the command handler that will keep reference to the needed collaborators, dedicated unit tests...

The problem with services is that they tend to "explode", the ContractNegotiation one currently is not that big, but when we'll up the logic that now stay in the manager (e.g. methods requested, agreed, etc...) it will become a burden to maintain/test. Splitting the logic into different command handlers will permit to have the service only to validate the input, create the command, execute it and handle the output without going to much into details, it will be the command handler that will keep reference to the needed collaborators, dedicated unit tests...

We could look into that, but my concern right now is twofold:

It may make the code much more difficult to follow. We could do a spike to have an example.
In order for this to work we would need to significantly refactor the command handlers to be synchronous and return responses.

I'm OK with the latter, but I think we first need to stabilize the IDS work and get the new protocol support in place before we do these types of reactors. There's a lot of churn and work at the moment that needs to get stabilized.

We could look into that, but my concern right now is twofold:

It may make the code much more difficult to follow. We could do a spike to have an example.
In order for this to work we would need to significantly refactor the command handlers to be synchronous and return responses.

I'm OK with the latter, but I think we first need to stabilize the IDS work and get the new protocol support in place before we do these types of reactors. There's a lot of churn and work at the moment that needs to get stabilized.

We already have an example of how we're using commands in the TransferProcessService currently all the logic (apart from the initiateTransfer and the notifyRequested methods) pass through command and handlers.
The ones executed by the notify* methods are already sync, and I agree that we should run everyone synchronously.

We could look into that, but my concern right now is twofold:

It may make the code much more difficult to follow. We could do a spike to have an example.
In order for this to work we would need to significantly refactor the command handlers to be synchronous and return responses.

I'm OK with the latter, but I think we first need to stabilize the IDS work and get the new protocol support in place before we do these types of reactors. There's a lot of churn and work at the moment that needs to get stabilized.

We already have an example of how we're using commands in the TransferProcessService currently all the logic (apart from the initiateTransfer and the notifyRequested methods) pass through command and handlers. The ones executed by the notify* methods are already sync, and I agree that we should run everyone synchronously.

Let's step back and consider the code we are introducing. I see a few issues:
First, transactions and reliability are currently broken and need to be fixed as soon as possible. e.g.:
@Override
public @NotNull ServiceResult terminate(String transferProcessId, String reason) {
return transactionContext.execute(() -> runAsync(new TerminateTransferCommand(transferProcessId, reason)));
}
A second issue is how TransferProcessServiceImpl is structured, which makes it difficult to follow code paths. Some of this may be simplified with synchronous command handlers, but that is a significant change we must be careful about introducing, given all of the churn in the codebase. For example, this handler code is straightforward:
    protected boolean modify(TransferProcess process, TerminateTransferCommand command) {
        if (process.canBeTerminated()) {
            process.transitionTerminating(command.getReason());
            return true;
        }

        return false;
    }

However, it is invoked in this block:
    private ServiceResult<TransferProcess> runAsync(SingleTransferProcessCommand command) {
        return Optional.of(command.getTransferProcessId())
                .map(transferProcessStore::find)
                .map(transferProcess -> {
                    var validator = asyncCommandValidators.get(command.getClass());
                    var validationResult = validator.apply(command, transferProcess);
                    if (validationResult.failed()) {
                        return ServiceResult.<TransferProcess>conflict(format("Cannot %s because %s", command.getClass().getSimpleName(), validationResult.getFailureDetail()));
                    }

                    manager.enqueueCommand(command);
                    return ServiceResult.success(transferProcess);
                })
                .orElse(ServiceResult.notFound(format("TransferProcess with id %s not found", command.getTransferProcessId())));
    }

There is no simple "traceability" of (except via searching for usages of TerminateTransferCommand) what is executed when terminate(String transferProcessId, String reason) is called. Validation is also dispersive.
Before we go down this path, I believe we need to fix the current transaction issues, stabilize this release, and align on an approach that simplifies what is currently there (with DRs).

These async commands were already there and I agree that they should be converted to sync (as discussed in https://github.com/eclipse-edc/Connector/discussions/2672). That's not the point of the issue.
An example of what I mean could be seen in TransferProcessServiceImpl:
when there's an incoming message from the protocol binding, into a transaction context we handle the message:
    @Override
    public ServiceResult<TransferProcess> notifyStarted(TransferStartMessage message, ClaimToken claimToken) {
        return transactionContext.execute(() -> handleRemoteMessage(message));
    }

the handleRemoteMessage methods pretty much converts the message into a command and run it synchronously:
    @NotNull
    private ServiceResult<TransferProcess> handleRemoteMessage(TransferRemoteMessage message) {
        return Optional.of(message.getProcessId())
                .map(transferProcessStore::processIdForDataRequestId)
                .map(id -> messageToCommandFactories.get(message.getClass()).apply(id))
                .map(this::runSync)
                .orElse(ServiceResult.notFound(format("TransferProcess with DataRequest id %s not found", message.getProcessId())));
    }

and the runSync executes the command synchronously and reports the result back. The command validation is done in the related command handler:
    private ServiceResult<TransferProcess> runSync(SingleTransferProcessCommand command) {
        return Optional.of(command.getTransferProcessId())
                .map(transferProcessStore::find)
                .map(transferProcess -> {
                    var commandResult = manager.runCommand(command);
                    if (commandResult.succeeded()) {
                        return ServiceResult.success(transferProcess);
                    } else {
                        return ServiceResult.<TransferProcess>conflict(format("Cannot %s because %s", command.getClass().getSimpleName(), commandResult.getFailureDetail()));
                    }
                })
                .orElse(ServiceResult.notFound(format("TransferProcess with id %s not found", command.getTransferProcessId())));
    }

(currently the CommandRunner is called through the Manager but it would be pulled up right to the Service
so the pattern would be:

service call
eventual formal validation of the incoming parameters
in a transactional context:

create a command
run the command synchronously
get the result back and converting to a proper ServiceResult
return the ServiceResult

so everything will happen in the same thread, providing full traceability and more manageable code/tests.

Let's discuss. Command frameworks are great when you need extensibility, but add complexity and opaqueness in cases where extensibility is not needed, and the same thing can be achieved with collaborators. We introduced command handlers because we needed extensibility (i.e., the ability to perform custom state transition operations).
I have a few issues with this:

We originally agreed to use services to compose operations and perform tasks such as validation because it is explicit
Introducing commands as proposed makes the service layer a thin, typed dispatcher, which, IMO, is a code smell. It's too difficult to reason about the state machine code which will be disbursed across different handlers and difficult to trace back to message ingress points.
We shouldn't be making significant architectural changes that are not related to the IDS work during this milestone, or at least we should discuss these and create decision records.

We decided to extract "protocol" services that will contain the logic that will be triggered when a message is received. Such logic needs to be executed synchronously


[BUG] Error in Github Actions Run PlasmoHQ/bpp@v3

What happened?
Thanks for a great project!
I tried to deploy an extension to the Chrome Web Store using the Browser Platform Publisher workflow, but the following error occurred.
🟣 Plasmo Browser Platform Publish v3
🟡 QUEUE  | Prepare for chrome submission
Error: 🔴 ERROR  | Error: chrome: Extension bundle file doesn't exist: /home/runner/work/sample/sample/build/chrome-mv3-prod.zip

When we investigated the cause, we found that the zip file had not been generated by the plasmo package that had run immediately before.
Here is the log from that time.
> plasmo package

🟣 Plasmo v0.61.0
🔴 The Browser Extension Framework
🔵 INFO   | Prepare to package the extension bundle...
🟠 WARN   | Plasmo version file not found, busting cache...
🔵 INFO   | Zip Package size: 0 bytes

This has been fixed by running plasmo build just before plasmo package.
- name: Build and zip extension artifact
   run: |
     pnpm build
     pnpm package

Did this problem only occur in my environment?
The version of Plasmo used is "0.61.0".
Version
Latest
What OS are you seeing the problem on?
MacOSX, Linux
What browsers are you seeing the problem on?
No response
Relevant log output
No response
(OPTIONAL) Contact Details
<EMAIL_ADDRESS>Code of Conduct

[X] I agree to follow this project's Code of Conduct
[X] I checked the current issues for duplicate problems.

Hey there - there's a bug in the bpp script in the old version xD.... pls diff with the latest bpp action here to fix, but basically the old one was missing the package command :p

Did this problem only occur in my environment?
The version of Plasmo used is "0.61.0".

The issue occurred due to a bug in the bpp workflow. New project shouldn't have this issue
Thanks for the bug report :)


Support Segoe UI Variable as default font

To make Segoe UI Variable used as the default font on Windows 11, I’ve added 10.0.22000.0 to the maxversiontested array in the manifest.

thanks @BreeceW !


Import error: The main file mentioned in package.json does not exist.

Description
When using the React component, while importing safepay, the error is produced that module cannot be found. The reason for this issue is that the file mentioned in the package.json file's main field does not exist.
package.json

directory structure in node_modules

Current Behavior
Currently, it is not possible to import, thus use the safepay and thus button instance cannot be produced.
Steps to Produce:

npm i @sfpy/checkout-components
Inside a file let's say: /src/components/SafepayButton.jsx: import safepay from "@sfpy/checkout-components"

Getting the same issue. Seems like Safepay team is not going to fix this any time soon.


Uncaught Error: Module did not self-register.

[Enter steps to reproduce:]

...
...

Atom: 1.40.1 x64
Electron: 3.1.10
OS: Mac OS X 10.14.6
Thrown From: Atom Core
Stack Trace
Uncaught Error: Module did not self-register.
At ELECTRON_ASAR.js:166

Error: Module did not self-register.
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:166:20)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:740:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:180:18)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:559:12)
    at Function.Module._load (internal/modules/cjs/loader.js:551:3)
    at Module.require (/app.asar/static/index.js:72:46)
    at require (internal/modules/cjs/helpers.js:20:18)
    at customRequire (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:1:688158)
    at get_KeyboardLayoutManager (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:14:2744622)
    at get_manager (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:14:2744724)
    at Object.getCurrentKeyboardLayout (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:14:2744850)
    at e.keystrokeForKeyboardEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:14:1087821)
    at KeymapManager.keystrokeForKeyboardEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1246932)
    at KeymapManager.handleKeyboardEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1244917)
    at WindowEventHandler.handleDocumentKeyEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:284329)

Commands
     -3:40 tree-view:remove (li.file.entry.list-item.status-added.selected)
     -0:23.9.0 core:paste (div.tool-panel.tree-view)
     -0:20 core:copy (input.hidden-input)
     -0:15.9.0 core:paste (input.hidden-input)
     -0:05.8.0 core:save (input.hidden-input)
     -0:03.4.0 core:paste (div.tool-panel.tree-view)

Non-Core Packages
comment 0.6.1

Thanks for contributing!
We noticed that this looks like a duplicate of https://github.com/atom/atom/issues/20049 so you can subscribe there for updates if you'd like.

Because we treat our issues list as the Atom team's backlog, we close duplicates to focus our work and not have to touch the same chunk of code for the same reason multiple times. This is also why we may mark something as duplicate that isn't an exact duplicate but is closely related.
For information on how to use GitHub's search feature to find out if something is a duplicate before filing, see the How Can I Contribute? section of the Atom CONTRIBUTING guide.