-
Improvement
-
Resolution: Fixed
-
Major
-
None
-
None
-
None
-
-
Sprint 178
-
5
siema,
do zobrazowania buga naklepałem voś takiego:
nobody_opens_file_test(Config0) -> Config = multi_provider_file_ops_test_base:extend_config(Config0, <<"user2">>, {0, 0, 0, 0}, 0), User = <<"user2">>, SessionId = fun(Node) -> ?config({session_id, {User, ?GET_DOMAIN(Node)}}, Config) end, [Worker1 | _] = ?config(workers1, Config), [Worker2 | _] = ?config(workers_not1, Config), % Provider A: SpaceName = <<"space7">>, FilePath = <<"/", SpaceName/binary, "/nobody_opens_file_test">>, {ok, FileGuid} = ?assertMatch({ok, _} , lfm_proxy:mkdir(Worker1, SessionId(Worker1), FilePath, 8#704)), {ok, ShareId} = lfm_proxy:create_share(Worker1, SessionId(Worker1), {guid, FileGuid}, <<"share">>), ShareFileGuid = file_id:guid_to_share_guid(FileGuid, ShareId), % Provider B: ?assertMatch({ok, #file_attr{}}, lfm_proxy:stat(Worker2, ?ROOT_SESS_ID, {guid, ShareFileGuid}), ?ATTEMPTS), % passes %% ?assertMatch({ok, _}, lfm_proxy:open(Worker2, SessionId(Worker2), {guid, FileGuid}, read), ?ATTEMPTS), % fails %% ?assertMatch({ok, _}, lfm_proxy:open(Worker2, SessionId(Worker2), {guid, ShareFileGuid}, read), ?ATTEMPTS), % fails %% ?assertMatch({ok, _}, lfm_proxy:open(Worker2, ?GUEST_SESS_ID, {guid, ShareFileGuid}, read), ?ATTEMPTS), % passes ?assertMatch({ok, _}, lfm_proxy:open(Worker2, SessionId(Worker2), {guid, FileGuid}, read), ?ATTEMPTS), ?assertMatch({ok, _}, lfm_proxy:open(Worker2, ?GUEST_SESS_ID, {guid, ShareFileGuid}, read), ?ATTEMPTS), ok.
8:00
w multiprovider_file_ops rzecz jasna xd
8:01
w init jeszcze trzeba dodać mokowanie szerów by działało
(initializer:mock_share_logic(Config),)
8:02
nie dodaje tego na swoim branchu - to wymaga obróki i dodania raczej w inne sjucie niż ta (file_ops trwa już ~1h, więc nie dodawajmy tam więcej ;/ )
8:03
jeśli chodzi o kejzy to wygląda to tak, że jeśli zrobisz zapytanie autoryzowanym użytkownikiem to przechodzi i każde kolejne, również jako nobody, tez będzie przechodzić
8:05
natomiast robiąc pierwsze zapytanie jako nobody, albo nawet użytkownik korzystający z share guida (na poziomie fslogic_worker jest sprawdzane czy to share guid i jak tak to podmieniany jest user_ctx na ten guest'a), dostajesz ?ENOENT
[E 2020-09-21 05:48:30.636 <0.2339.0>] ASD 1[E 2020-09-21 05:48:30.637 <0.2339.0>] ASD 2[E 2020-09-21 05:48:30.690 <0.2339.0>] Open file error: ENOENT for uuid <<"73dd8d71fabca62bcada893a10da478bchf620">> Stacktrace: fslogic_worker:handle/1 line 212 fslogic_worker:handle_request_and_process_response/2 line 303 fslogic_worker:handle_request_and_process_response_locally/3 line 345 fslogic_worker:handle_request_locally/3 line 373 file_req:open_file_with_extended_info_for_read/2 line 650 file_req:open_file_with_extended_info_insecure/4 line 396 file_req:open_file_internal/6 line 439 file_req:create_location/4 line 559 [E 2020-09-21 05:48:30.691 <0.2339.0>]
ASD 1/2 - przed/po sprawdzaniu uprawnień, tzn. sprawdzanie uprawnień przeszło i nie rzuciło żadnego błędu
8:07
dodałem sobie logi w różnych miejscach na szybko i wywala się w file_req:create_location wywołanie sd_utils:create_deferred (znaczy zwraca ten enoent)