googleapis / googleapis/google-cloud-java

[java-datastore] Starting LocalDatastoreHelper stalls if `beta` gcloud component is not installed

オープン
#12,002 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
api: datastore lang: java priority: p3 status: blocked type: bug
主要言語
Java
スター
2.1k
フォーク
1.2k
平均マージ
1日 23時間
マージ済み PR(30日)
154

説明

#### Environment details
- OS type and version: Debian GNU/Linux 10 (buster) (on Docker)
- Java version: openjdk version "1.8.0_275"
- datastore version(s): com.google.cloud:google-cloud-datastore:jar:1.105.0

#### Steps to reproduce

1. Remove `beta` component: `gcloud components remove beta`
2. Run the code which uses `LocalDatastoreHelper`

#### Code example

```java
import com.google.cloud.datastore.testing.LocalDatastoreHelper;

public class Test {
public static void main(String[] args) throws Exception {
LocalDatastoreHelper emulator = LocalDatastoreHelper.create();
emulator.start();

System.out.println("Started!");
}
}
```

#### How I found this

- Removed `beta` component
```
root@17224e8a6010:/app# gcloud components remove beta --quiet
┌──────────────────────────────────────────┐
│ These components will be removed. │
├──────────────────────┬────────────┬──────┤
│ Name │ Version │ Size │
├──────────────────────┼────────────┼──────┤
│ gcloud Beta Commands │ 2019.05.17 │ │
└──────────────────────┴────────────┴──────┘
...
Uninstall done!
```

- Run code example, then it stalls.
```
root@17224e8a6010:/app# mvn exec:java -Dexec.mainClass=Test
```

- `Ctrl+Z` and run `ps` to find out what command is executed via LocalDatastoreHelper
```
^Z
[1]+ Stopped mvn exec:java -Dexec.mainClass=Test
root@17224e8a6010:/app# ps -ef
...
root 1840 1795 0 17:40 pts/1 00:00:00 python2 -S /root/google-cloud-sdk/lib/gcloud.py beta emulators datastore start --host-port=localhost:40079 --consistency=0.9
```

- Execute the same command at the terminal, then it prompts whether continue to install `beta` component
```
root@17224e8a6010:/app# python2 -S /root/google-cloud-sdk/lib/gcloud.py beta emulators datastore start --host-port=localhost:40079 --consistency=0.9
You do not currently have this command group installed. Using it
requires the installation of components: [beta]

Your current Cloud SDK version is: 322.0.0
Installing components from version: 322.0.0

┌─────────────────────────────────────────────┐
│ These components will be installed. │
├──────────────────────┬────────────┬─────────┤
│ Name │ Version │ Size │
├──────────────────────┼────────────┼─────────┤
│ gcloud Beta Commands │ 2019.05.17 │ < 1 MiB │
└──────────────────────┴────────────┴─────────┘

For the latest full release notes, please visit:
https://cloud.google.com/sdk/release_notes

Do you want to continue (Y/n)?
```

#### Possible solution

Add `--quiet` option to run emulator, so as to silently install `beta` component.
https://github.com/pomu0325/java-datastore/commit/e2cb8f26e977c6c220ba047fe28f4ca1c3da7d40

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。