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: add Arm support to travis CI matrix #6436

Closed
wants to merge 8 commits into from

Conversation

guyuqi
Copy link
Contributor

@guyuqi guyuqi commented Feb 20, 2020

This patch based on #5932 offers a better solution to add arm64 to TravisCI matrix.
Really thank @adamretter for initiating Arm CI setup.

Difference comparing to amd64:

  1. For CMake, as no official arm64 release ready on Kitware page,
    a third party (conda-forge) released one is used instead of
    building from source. The main reason is to save CI time.
  2. Explicit export JAVA_HOME on arm64
  3. Disable mingw test

Signed-off-by: Yuqi Gu yuqi.gu@arm.com

This patch adds arm64 to TravisCI matrix.
Difference comparing to amd64:
1. For CMake, as no official arm64 release ready on Kitware page,
a third party (conda-forge) released one is used instead of
building from source. The main reason is to save CI time.
2. Explicit export JAVA_HOME on arm64
3. Disable mingw test

Change-Id: I22fc5620f1942c341c28e4c82b3b4daaea3f9819
Signed-off-by: Yuqi Gu <yuqi.gu@arm.com>
@guyuqi
Copy link
Contributor Author

guyuqi commented Feb 20, 2020

In order to make Arm64 CI work properly, PR #6437 also needs to be merged , thanks!

@adamretter
Copy link
Collaborator

@guyuqi so this does not require to install Java 8? Which version of Java does it use?

adamretter added a commit to adamretter/rocksdb that referenced this pull request Feb 20, 2020
@JunHe77
Copy link
Contributor

JunHe77 commented Feb 22, 2020

Hi, @adamretter , from TravisCI outputs, it has JDK-11 pre-installed:
openjdk version "11.0.5" 2019-10-15 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.5+10) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.5+10, mixed mode)

@adamretter
Copy link
Collaborator

@JunHe77 I would prefer to stick with Java 8.

@JunHe77
Copy link
Contributor

JunHe77 commented Feb 24, 2020

@adamretter I'm fine to use either Java8 or Java11. But to align with x86 tests it would be good to use same Java version on Arm64. For x86 test Travis uses JDK11 preinstalled. A reference log is here.

@adamretter
Copy link
Collaborator

@JunHe77 that link for the reference log is from building Redis not RocksDB.

@JunHe77
Copy link
Contributor

JunHe77 commented Feb 24, 2020

Ya, different repos, but same Travis runtime.
So I created a test PR to RocksDB and you can find the same Java info on x86 here:
openjdk version "11.0.2" 2019-01-15 320 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) 321 OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

@adamretter
Copy link
Collaborator

@JunHe77 Okay, but my point was that RocksDB's Java code is designed for compatibility with Java 7. The x64 testing of RocksDB happens against Java 7, the ARM64 testing therefore should also happen against Java 7.

Unfortunately, I could not find Java 7 for ARM64, so the next best option IMHO is Java 8.

@JunHe77
Copy link
Contributor

JunHe77 commented Feb 24, 2020

Yes, Arm64 support in JDK starts from Java8.
I'm not sure if current Java11 used in Travis CI is what RocksDB intends to use (Java7 is pretty out-of-date). But if target version is Java8, then the .travis.yml needs to updated.
Maybe someone from RocksDB can help on clarify this?

Java version on x86: https://travis-ci.org/facebook/rocksdb/jobs/652883614#L315
Java version on arm64: https://travis-ci.org/facebook/rocksdb/jobs/652883625#L213

@adamretter
Copy link
Collaborator

@JunHe77 Oh blast! I see that the RocksDB Travis CI is now using Java 11 for x64 as well - https://travis-ci.org/facebook/rocksdb/jobs/653848197

It was and still should be Java 7 AFAIK. We actually specify in our .travis.yml:

jdk:
  - openjdk7

So I am not sure why Travis is ignoring that and using Java 11.

@guyuqi
Copy link
Contributor Author

guyuqi commented Feb 25, 2020

@siying Could you please help to loop some guys in this PR and have a look into it?
Maybe someone from RocksDB can help on clarify it.

@adamretter
Copy link
Collaborator

adamretter commented Feb 25, 2020

@guyuqi I'm responsible for RocksJava so I can look into that

@JunHe77
Copy link
Contributor

JunHe77 commented Feb 25, 2020

@adamretter

It was and still should be Java 7 AFAIK. We actually specify in our .travis.yml:

jdk:
  - openjdk7

From what Travis guy's reply:

For jdk: to be read, you’ll need to specify language: java.

So it seems extra commands need to add to .travis.yml if Java8 should be used.

@guyuqi
Copy link
Contributor Author

guyuqi commented Feb 26, 2020

@guyuqi I'm responsible for RocksJava so I can look into that

@adamretter That‘s great and look forward to your conclusion.

@guyuqi guyuqi force-pushed the travis-ci-arm-support branch 2 times, most recently from 898ddc8 to 02474da Compare March 4, 2020 08:46
@guyuqi
Copy link
Contributor Author

guyuqi commented Mar 4, 2020

@adamretter Add JDK8 installation in the new commit.

Change-Id: I60aa077012f66b7d722874b75a26f3a4ced94b7e
Signed-off-by: Yuqi Gu <yuqi.gu@arm.com>
@pdillinger
Copy link
Contributor

@Little-Wallace Any advice on DBCompactionTestWithParam::FlushAfterIntraL0CompactionCheckConsistencyFail failing? (Re: #6061)

@pdillinger
Copy link
Contributor

@Little-Wallace Any advice on DBCompactionTestWithParam::FlushAfterIntraL0CompactionCheckConsistencyFail failing? (Re: #6061)

That was in TEST_GROUP=2. Last failure was something in TEST_GROUP=3 (which Travis seems to have cleared from my web browser tab, and from history, with the log open when I restarted the build in another tab 😡)

@pdillinger
Copy link
Contributor

Last failure was something in TEST_GROUP=3 (which Travis seems to have cleared from my web browser tab, and from history, with the log open when I restarted the build in another tab 😡)

I think same failure again: ExternalSSTFileTest.MultiThreaded...
external_sst_file_test: db/column_family.cc:1387: rocksdb::ColumnFamilySet::~ColumnFamilySet(): Assertion `last_ref' failed.

@adamretter
Copy link
Collaborator

@guyuqi after #6512 is merged, you might want to rebase. I took your code for enforcing JDK8, but modified the Travis YAML file so that it was also compatible with macOS.

@pdillinger
Copy link
Contributor

Last failure was something in TEST_GROUP=3 (which Travis seems to have cleared from my web browser tab, and from history, with the log open when I restarted the build in another tab 😡)

I think same failure again: ExternalSSTFileTest.MultiThreaded...
external_sst_file_test: db/column_family.cc:1387: rocksdb::ColumnFamilySet::~ColumnFamilySet(): Assertion `last_ref' failed.

I haven't been able to reproduce this using the same OS and compiler version in Amazon EC2. ☹️

@adamretter adamretter added the arm label Mar 12, 2020
@adamretter
Copy link
Collaborator

@pdillinger Seems that all tests are now passing on Travis ARM64 too :-)

Copy link
Contributor

@facebook-github-bot facebook-github-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pdillinger has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator.

@pdillinger pdillinger self-assigned this Mar 13, 2020
@facebook-github-bot
Copy link
Contributor

@pdillinger merged this pull request in dd7a4a8.

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

Successfully merging this pull request may close these issues.

None yet

5 participants