We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
We use github to host code, to track issues and feature requests, as well as accept pull requests.
We Use GitHub Flow, so all code changes happen through Pull Requests. Pull requests are the best way to propose changes to the codebase.
It's usually best to open an issue first to discuss a feature or bug before opening a pull request. Doing so can save time and help further ascertain the crux of an issue.
- See if there is an existing issue
- Fork the repo and create your branch from
master
. - If you've added code that should be tested, add tests.
- Ensure the test suite passes.
- Issue that pull request!
In short, when you submit code changes, your submissions are understood to be under the same Apache License 2.0 that covers the project. Feel free to contact the maintainers if that's a concern.
Report bugs using GitHub's issues
We use GitHub issues to track public bugs. Report a bug by opening a new issue; it's that easy!
Great Bug Reports tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
If you are modifying code, make sure it has no warnings when building.
By contributing, you agree that your contributions will be licensed under its Apache License 2.0.
The client uses generated stubs from upstream Qdrant proto definitions, which are downloaded from qdrant/qdrant.
The generated files do not form part of the checked-in source code. Instead, they are generated
and emitted into the build/generated/source directory
, and included in compilation.
Ensure the following are installed and available in the PATH
.
If you're using IntelliJ IDEA, see this section for steps to handle an IntelliSense issue.
- Update the values in gradle.properties as follows:
packageVersion
- Bump it to the next minor version to be released.qdrantVersion
- Set it todev
to use thedev
Docker image for testing.qdrantProtosVersion
- Set it todev
to use thedev
branch for fetching the proto files.
- Download and generate the latest client stubs by running the following command from the project root:
For Windows
.\gradlew.bat build
For OSX/Linux
./gradlew build
This will
- Pull down all the dependencies for the build process and the project.
- Run the default build task.
- Run the integration tests. Ensure Docker running.
If a Qdrant image with static tags like dev
or latest
already exists on your system, the tests will use it. You can remove these images before running the tests to fetch the most up-to-date versions.
- Implement new Qdrant methods in
QdrantClient.java
with associated tests in src/test.
Since the API reference is published at https://qdrant.github.io/java-client, the docstrings have to be appropriate.
-
If there are any new complex/frequently used properties in the proto definitions, add factory classes in
src/main
following the existing patterns. -
Submit your pull request and get those approvals.
Once the new Qdrant version is live:
- Update the values in gradle.properties as follows and build as mentioned above:
qdrantVersion
- Set it to the released Docker image version for testing.qdrantProtosVersion
- Set it to the released version of the Qdrant source for fetching the proto files.
-
Merge the pull request.
-
Publish a new release at https://github.com/qdrant/java-client/releases. The CI will then publish the library to mvnrepository.com/artifact/io.qdrant/client and the docs to https://qdrant.github.io/java-client.
If you're using IntelliJ IDEA, IntelliSense may fail to work correctly due to large source files generated from proto-definitions.
To resolve this, you can increase the file size limit by configuring IntelliJ IDEA as follows:
-
In the top menu, navigate to
Help
->Edit Custom Properties
. -
Set the
idea.max.intellisense.filesize
properly to a higher value.
- After saving the changes, restart the IDE to apply the new file size limit.