Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI failures due to test data download failures after Google Drive's change #2630

Open
wkentaro opened this issue Oct 3, 2021 · 42 comments
Open

Comments

@wkentaro
Copy link
Member

wkentaro commented Oct 3, 2021

Problem

It seems the full test on noetic in CI fails always recently.
https://github.com/jsk-ros-pkg/jsk_recognition/actions/workflows/noetic-full-test.yml

I think this is because of the change of Google Drive's sharing permissions and that disables the download of test data from Google Drive as the following. Previously the sign-in was not required.

Context

We upload files and download them from JSK_public_data, so ideally the permission should be

(config-ideal)

  • writable for anyone in JSK
  • readable for anyone with link

We couldn't find a way of how to make it writable only for people in JSK, so we have been using

(config-actual)

  • writable for anyone with link
  • readable for anyone with link

But now, Google Drive has changed its specification and config-actual won't work anymore (as it requires sign-in even for just downloading files via links).

Solution

I think the solution would be adding a group to JSK_public_data that includes all members in JSK (something like [email protected]). Please let me know if there's already such group (maybe it would be better to let me know via email not to make it public).

@knorth55
Copy link
Member

knorth55 commented Oct 4, 2021

@wkentaro
Even if we make a group like jsk-all-members, gdown cannot download the data because it requires sign-in.
Is my understanding correct?
So we need to download data with authentication such as pydrive2, right?

@sktometometo
Copy link
Contributor

sktometometo commented Oct 4, 2021

I have created a shared drive for JSK lab and make JSK_public_data directory to it.
https://drive.google.com/drive/folders/1PPOZDoWbJnxM7XkPMPP3iKQqrji56Vgq?usp=sharing

Downloading from this directory doesn't require sign-in and standard users can only download data and JSK lab member can upload data to this directory. This can realize config-actual.

gdrive_permissions

@knorth55
Copy link
Member

knorth55 commented Oct 4, 2021

@wkentaro can you make @knorth55 @sktometometo as an owner?
we can move this directory to shared drive.

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

@wkentaro
Even if we make a group like jsk-all-members, gdown cannot download the data because it requires sign-in.
Is my understanding correct?
So we need to download data with authentication such as pydrive2, right?

No, because then we can exploit Google Drive's 2 different sharing options:

  • Share with people and groups
  • Get link

(at the moment we're only using "Get link")

With jsk-all-members, we can use Share with people and groups to give write access to JSK members, so we can make Get link to read-only access to anyone with link.

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

I have created a shared drive for JSK lab and make JSK_public_data directory to it. https://drive.google.com/drive/folders/1PPOZDoWbJnxM7XkPMPP3iKQqrji56Vgq?usp=sharing

Downloading from this directory doesn't require sign-in and standard users can only download data and JSK lab member can upload data to this directory. This can realize config-actual.

It seems I cannot upload files to it. Are you sure all members have the write access?

Kapture.2021-10-04.at.11.11.01.mp4

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

@wkentaro can you make @knorth55 @sktometometo as an owner? we can move this directory to shared drive.

Let's find the solution first. Also, I can do that if you don't mind (I can also create Shared Drives).

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

@sktometometo I also thought about Shared Drives before, but it seemed there was no option to give All Members write access, and probably we still need to add members as a person or a group. (which makes sense as write access to everyone sounds dangerous especially when you have alumnis in the organization like me)
image

@sktometometo
Copy link
Contributor

sktometometo commented Oct 4, 2021

@wkentaro I have added gakusei-kyoin@ to members of the shared drive ( and you ). All jsk members are in this group, so all jsk member can upload files. Can you try again?

@knorth55
Copy link
Member

knorth55 commented Oct 4, 2021

あんまりgithub issueでメールアドレスとかかいて,こういう話をすべきでない気がします.
スパムの原因になりそう.
あとJSKの管理下に置きたいので,まず和田さん管理になっているJSK_public_dataはデータをダウンロードできる,できない関係なく,Shared Driveに移行すべきです
そのためにもオーナー権限をください,もしくはSharedDriveへの移行をしてください.

@knorth55
Copy link
Member

knorth55 commented Oct 4, 2021

そしてShared Driveに移行したらあとは現JSKメンバで対応してくれると思います.
とりあえずまずCIが通ること.
そして理想形についてはShared driveでメンバに現JSKメンバをいれるようにすることでJSKメンバはアップロードできて,他の人はURLでダウンロードできるようになります.(ただし和田さんはアップロードできなくなります)

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

その通りだと思います。
ただ僕が懸念しているのは解決策がわからないままに移動させたりすると、移動を繰り返しているうちにファイルのURLが変わったりしてすべてのtest_dataのURLを書き換えないといけなくなるんじゃないかということです。(どっちにしろSharedDrivesに移動したら変わるのかもしれませんが変わらない可能性があるのならそっちのほうがいいだろうと。)

@knorth55
Copy link
Member

knorth55 commented Oct 4, 2021

ただ個人のドライブ管理をやめるというのは,もうJSKの方針になってしまっているので,SharedDriveに移行してほしいです.
卒業したあと管理者と連絡が取れなくなるとかが発生したので.
SharedDriveに移行してもURLは変わらないんじゃないかなと信じています.
ただ変わってしまうことよりも個人で管理していることが問題なので,,,
(今回みたいに和田さんが気づいてくれたからいいですが,今後気づかなくなったらおわりなので)

@sktometometo
Copy link
Contributor

最近、共有アイテムとして共有されていたものを共有ドライブに移した際は, URLは変更しておらず、今さっき共有ドライブから個人ドライブに移動させた際もURLは変更していませんでした。

@knorth55
Copy link
Member

knorth55 commented Oct 4, 2021

そして共有ドライブに移動することで権限の問題は解決されます.

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

@sktometometo 先の例では僕が権限を与えてもらっているので、アップロードできても当然だと思うのですが、jsk-all-membersが追加されている状態であれば現在メンバーは問題なくアップロードできているのでしょうか?

@knorth55
Copy link
Member

knorth55 commented Oct 4, 2021

@wkentaro できました

@sktometometo
Copy link
Contributor

@wkentaro 他の人に試してもらいましたができているようです。

@sktometometo
Copy link
Contributor

新規に入った人も, gakusei-kyoin グループに入っていればgakusei-kyoinが追加されている共有ドライブにはアクセスできているので問題ないかと思います

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

確認ありがとうございます。
個人フォルダはオーナーを移行できないようなので、僕が共有ドライブに移動してOwner権限を移譲するのが安全だと思うのですがそれでいいでしょうか。

ここにアップロードできるか一応試してもらえますか? @sktometometo
https://drive.google.com/drive/u/2/folders/0AJDdHz203zXSUk9PVA

@sktometometo
Copy link
Contributor

@wkentaro アップロードできました
gakusei-kyoin の権限を, コンテンツ管理者から管理者に変更していただければ幸いです

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

了解です。

@sktometometo
Copy link
Contributor

JSKPublicDataの方に移動していただけますか?

@sktometometo
Copy link
Contributor

命名規則的にこちらを利用したいです

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

@sktometometo さんが作った方ってこと?

@knorth55
Copy link
Member

knorth55 commented Oct 4, 2021

なぜわざわざもう一つ作ったのでしょう...

@sktometometo
Copy link
Contributor

もともと作成しています(上で共有したもの)

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

Mangerアクセスもらえますか。

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

ああ、大丈夫でした。

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

権限のせいではなく、フォルダが移動できないだけでした。

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

JSKPublicData/JSK_public_dataに移動すればいいですか?

@sktometometo
Copy link
Contributor

@wkentaro そうです、おねがいします。

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

@sktometometo 今いくつか移動しましたが、こんな感じで問題ないでしょうか?

@sktometometo
Copy link
Contributor

sktometometo commented Oct 4, 2021

@wkentaro ありがとうございます。大丈夫そうです。最終的に大丈夫か(jsk_dataを利用しているpackageやtestが動作するか)どうか含めて対応させていただきます。

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

確認ありがとうございます。全部移動し終わったらまた報告します。

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

@sktometometo 一部のファイル以外は移動し終わりました。僕のアクセスも消しておきました。

移動できなかったファイルShinjoくんのもので、個人メールアドレスからアップロードされているようで、それが原因で移動できないようです。(ファイルのオーナーがOrganization内でないといけないようです)
残りのファイルは以下にあります(もとのJSK_public_data)。Shinjoくんの個人メールアドレスとJSKメールアドレスにEditor権限を与えたので、うまく移動できないか試してもらえますか?
https://drive.google.com/drive/u/2/folders/0B9P1L--7Wd2vUGplQkVLTFBWcFE?resourcekey=0-qlPyB_oRQm887pgRGiPhgg
image

@sktometometo
Copy link
Contributor

@wkentaro 移動できました。これですべてだと思います。ありがとうございます。

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

@sktometometo ありがとうございます。お手数おかけしました。CIでのチェックなど残りの処理もよろしくお願いします。

@wkentaro
Copy link
Member Author

wkentaro commented Oct 4, 2021

@sktometometo
共有ドライブへの移行後にダウンロードを試したので結果を共有します。

少し試した程度ですが、以下の例のようにファイルの元オーナーが共有フォルダに権限があるかどうかで
ダウンロードする際にSign-inが必要かどうかが変わるようです。(Google Drive上でViewするだけならSign-inなしでできます)

以下の動画での現象から、

  • Yanokura IoriのファイルはYanokura Ioriがjsk-all-members(Manager)のメンバーなのでSign-inなしでダウンロードできる
  • Kentaro WadaのファイルはKentaro Wadaが何の権限もないのでSign-inが必要

となっているのではないかと考えています。

Shinjoくんの個人メールアドレスがオーナーになっているファイルでも同じことが起こると思うので、どのような権限を与えたらSign-inが要らなくなるのか試してみてもらえればと思います。できればManagerやContent Managerのような高い権限を与えなくてよければ理想的ですが、最悪でもファイルごとに設定(Kentaro WadaがOwnerになっているファイルのみManager権限を与える)すれば解決できるのではないかと思います。

Kapture.2021-10-04.at.21.31.54.mp4

@sktometometo
Copy link
Contributor

@wkentaro 知見の共有ありがとうございます。共有ドライブでこのような問題が起こらないのは, アップロードしたあとのファイルのOwnerなどの扱いが共有アイテムなどとは異なるのかもですね。

bandicam.2021-10-05.12-03-36-168.mp4

@wkentaro
Copy link
Member Author

wkentaro commented Oct 5, 2021

僕の環境で起こっていることとしては、現象として

  • GetLinkで返されるLinkからはSign-inなしではダウンロードできないファイルがある。
  • Sign-inせずにJSK_public_dataフォルダをブラウザをみてDownloadボタンを押すとおそらくすべてのファイルがダウンロードできる。

という感じです。
GetLinkで返されるLinkからダウンロードできないと今回の問題の解決にはまだなっていなそうですが、 @sktometometo さんの環境ではどうでしょうか?

@sktometometo
Copy link
Contributor

sktometometo commented Oct 5, 2021

とりあえず、 #2631 のいくつかのファイルはそもそも存在しなかったりしたので, jsk_perception, jsk_pcl_ros, jsk_pcl_ros_utils でダウンロードできないものはアップロードしなおしました。

管理者に入っていない人がアップロードしたファイルはログインが必要だとすると、僕の個人アカウントからアップロードしたものはログイン無しでダウンロードできるので, 例外もありそうです。

eng2_subway_tablenavigation.walk.tar.gz
https://drive.google.com/file/d/1Lye5ZfFLgmU-G8TdevSiHG72kN04XnFt/view

@wkentaro
Copy link
Member Author

wkentaro commented Oct 5, 2021

とりあえず、 #2631 のいくつかのファイルはそもそも存在しなかったりしたので, jsk_perception, jsk_pcl_ros, jsk_pcl_ros_utils でダウンロードできないものはアップロードしなおしました。

ありがとうございます。

管理者に入っていない人がアップロードしたファイルはログインが必要だとすると、僕の個人アカウントからアップロードしたものはログイン無しでダウンロードできるので, 例外もありそうです。
eng2_subway_tablenavigation.walk.tar.gz
https://drive.google.com/file/d/1Lye5ZfFLgmU-G8TdevSiHG72kN04XnFt/view

確かにこれはダウンロードできますね。このファイルの違いといえばファイルサイズだと思うので(~1.2MB)、

  • ファイルサイズが大きいとownerにアクセスがないとsign-inを求められる
  • 小さいとownerに関係なくsign-inなしでダウンロード可能

ということでしょうか。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants