Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
9aaad11
Cloud Storage Support(#3079) - Implemented Pluggable Cloud Storage wi…
vaijosh Jun 29, 2026
8f52e62
Merge branch 'apache:master' into Hstore+CloudStorage
vaijosh Jul 6, 2026
2bb8e9f
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 6, 2026
4275426
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 8, 2026
64b4b52
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 8, 2026
d5f64df
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 14, 2026
7564613
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 15, 2026
32e407e
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 15, 2026
8a04f9c
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 15, 2026
e549b42
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 15, 2026
7237dc3
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 17, 2026
e1dcf44
Merge branch 'apache:master' into Hstore+CloudStorage
vaijosh Jul 23, 2026
8b18e5b
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 23, 2026
a560ad4
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 23, 2026
fb7f048
Potential fix for pull request finding
vaijosh Jul 28, 2026
73fe12b
Merge branch 'master' into Hstore+CloudStorage
vaijosh Jul 28, 2026
caa1ef5
Merge branch 'apache:master' into Hstore+CloudStorage
vaijosh Jul 28, 2026
b7fcb28
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 28, 2026
262e25b
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 30, 2026
c95e99e
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 30, 2026
bdfc897
chore: trigger ci
vaijosh Jul 30, 2026
b5c0706
chore: trigger ci
vaijosh Jul 30, 2026
49dda74
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 31, 2026
de532b5
feat(store): implement pluggable cloud storage for HStore
vaijosh Jul 31, 2026
ec01bb8
feat(store): implement pluggable cloud storage for HStore
vaijosh Aug 7, 2026
3de94d5
Merge branch 'master' into Hstore+CloudStorage
vaijosh Aug 11, 2026
7ffca22
feat(store): implement pluggable cloud storage for HStore
vaijosh Aug 7, 2026
9ab2b65
chore: ignore .ipynb files in license-eye header check
vaijosh Aug 12, 2026
21af525
feat(store): implement pluggable cloud storage for HStore
vaijosh Aug 12, 2026
65e09b2
feat(store): implement pluggable cloud storage for HStore
vaijosh Aug 13, 2026
7823d3f
feat(store): implement pluggable cloud storage for HStore
vaijosh Aug 13, 2026
eddcd86
Merge branch 'apache:master' into Hstore+CloudStorage
vaijosh Aug 25, 2026
f71b974
feat(store): implement pluggable cloud storage for HStore- #3081
vaijosh Sep 17, 2026
d364a5b
Merge branch 'master' into Hstore+CloudStorage
vaijosh Sep 18, 2026
9f7e25d
ci: rerun Store checks
vaijosh Sep 18, 2026
f5b285d
feat(store): implement pluggable cloud storage for HStore- #3081
vaijosh Sep 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions docker/cloud-storage/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.artifacts/
logs/
data/
.generated/

901 changes: 901 additions & 0 deletions docker/cloud-storage/README.md

Large diffs are not rendered by default.

240 changes: 240 additions & 0 deletions docker/cloud-storage/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: cloud-storage

networks:
hg-net:
name: cloud-storage-net
driver: bridge

volumes:
minio-data:

services:
minio:
image: minio/minio:latest
container_name: cloud-storage-minio
command: server /data --console-address ':9001'
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio-data:/data
networks: [hg-net]
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 10s
timeout: 5s
retries: 20

minio-init:
image: minio/mc:RELEASE.2025-08-13T08-35-41Z
container_name: cloud-storage-minio-init
depends_on:
minio:
condition: service_healthy
entrypoint: >
/bin/sh -c '
mc alias set local http://minio:9000 minioadmin minioadmin &&
mc mb -p local/hugegraph-store0 || true &&
mc mb -p local/hugegraph-store1 || true &&
mc mb -p local/hugegraph-store2 || true &&
mc anonymous set none local/hugegraph-store0 || true &&
mc anonymous set none local/hugegraph-store1 || true &&
mc anonymous set none local/hugegraph-store2 || true
'
networks: [hg-net]

pd:
build:
context: ../..
dockerfile: docker/cloud-storage/images/pd.Dockerfile
args:
JAVA_RUNTIME_IMAGE: ${HG_PD_JAVA_RUNTIME_IMAGE:-eclipse-temurin:11-jre}
image: hugegraph/pd:cloud-storage-local
container_name: cloud-storage-pd
depends_on:
minio-init:
condition: service_completed_successfully
environment:
HG_PD_GRPC_HOST: pd
HG_PD_GRPC_PORT: "8686"
HG_PD_REST_PORT: "8620"
HG_PD_RAFT_ADDRESS: pd:8610
HG_PD_RAFT_PEERS_LIST: pd:8610
HG_PD_INITIAL_STORE_LIST: store0:8500,store1:8500,store2:8500
HG_PD_DATA_PATH: /hugegraph-pd/pd_data
HG_PD_INITIAL_STORE_COUNT: "3"
ports:
- "8620:8620"
- "8686:8686"
volumes:
- ./data/pd:/hugegraph-pd/pd_data
- ./logs/pd:/hugegraph-pd/logs
networks: [hg-net]
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:8620/v1/health >/dev/null || exit 1"]
interval: 15s
timeout: 10s
retries: 30
start_period: 60s

store0:
build:
context: ../..
dockerfile: docker/cloud-storage/images/store.Dockerfile
args:
JAVA_RUNTIME_IMAGE: ${HG_STORE_JAVA_RUNTIME_IMAGE:-eclipse-temurin:11-jre}
image: hugegraph/store:cloud-storage-local
container_name: cloud-storage-store0
depends_on:
pd:
condition: service_healthy
environment:
HG_STORE_PD_ADDRESS: pd:8686
HG_STORE_GRPC_HOST: store0
HG_STORE_GRPC_PORT: "8500"
HG_STORE_REST_PORT: "8520"
HG_STORE_RAFT_ADDRESS: store0:8510
HG_CLOUD_STORAGE_ENDPOINT: http://minio:9000
HG_CLOUD_STORAGE_BUCKET: hugegraph-store0
HG_CLOUD_STORAGE_NODE_ID: store0_8510
JAVA_OPTS: ${HG_STORE_JAVA_OPTS:--Xms4g -Xmx4g -XX:+UseG1GC}
ports:
- "8500:8500"
- "8510:8510"
- "8520:8520"
volumes:
- ./data/store0:/hugegraph-store/storage
- ./logs/store0:/hugegraph-store/logs
networks: [hg-net]
deploy:
resources:
limits:
memory: 8G
reservations:
memory: 6G
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:8520/v1/health >/dev/null || exit 1"]
interval: 15s
timeout: 10s
retries: 40
start_period: 120s

store1:
image: hugegraph/store:cloud-storage-local
container_name: cloud-storage-store1
depends_on:
pd:
condition: service_healthy
environment:
HG_STORE_PD_ADDRESS: pd:8686
HG_STORE_GRPC_HOST: store1
HG_STORE_GRPC_PORT: "8500"
HG_STORE_REST_PORT: "8520"
HG_STORE_RAFT_ADDRESS: store1:8510
HG_CLOUD_STORAGE_ENDPOINT: http://minio:9000
HG_CLOUD_STORAGE_BUCKET: hugegraph-store1
HG_CLOUD_STORAGE_NODE_ID: store1_8510
JAVA_OPTS: ${HG_STORE_JAVA_OPTS:--Xms4g -Xmx4g -XX:+UseG1GC}
ports:
- "8501:8500"
- "8511:8510"
- "8521:8520"
volumes:
- ./data/store1:/hugegraph-store/storage
- ./logs/store1:/hugegraph-store/logs
networks: [hg-net]
deploy:
resources:
limits:
memory: 8G
reservations:
memory: 6G
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:8520/v1/health >/dev/null || exit 1"]
interval: 15s
timeout: 10s
retries: 40
start_period: 120s

store2:
image: hugegraph/store:cloud-storage-local
container_name: cloud-storage-store2
depends_on:
pd:
condition: service_healthy
environment:
HG_STORE_PD_ADDRESS: pd:8686
HG_STORE_GRPC_HOST: store2
HG_STORE_GRPC_PORT: "8500"
HG_STORE_REST_PORT: "8520"
HG_STORE_RAFT_ADDRESS: store2:8510
HG_CLOUD_STORAGE_ENDPOINT: http://minio:9000
HG_CLOUD_STORAGE_BUCKET: hugegraph-store2
HG_CLOUD_STORAGE_NODE_ID: store2_8510
JAVA_OPTS: ${HG_STORE_JAVA_OPTS:--Xms4g -Xmx4g -XX:+UseG1GC}
ports:
- "8502:8500"
- "8512:8510"
- "8522:8520"
volumes:
- ./data/store2:/hugegraph-store/storage
- ./logs/store2:/hugegraph-store/logs
networks: [hg-net]
deploy:
resources:
limits:
memory: 8G
reservations:
memory: 6G
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:8520/v1/health >/dev/null || exit 1"]
interval: 15s
timeout: 10s
retries: 40
start_period: 120s

server:
image: hugegraph/server:1.7.0
container_name: cloud-storage-server
depends_on:
store0:
condition: service_healthy
store1:
condition: service_healthy
store2:
condition: service_healthy
environment:
GREMLIN_SERVER_HOST: 0.0.0.0
GREMLIN_SERVER_PORT: "8182"
ports:
- "8080:8080"
- "8182:8182"
volumes:
- ./logs/server:/hugegraph-server/logs
networks: [hg-net]
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:8080/gremlin >/dev/null || exit 1"]
interval: 15s
timeout: 10s
retries: 40
start_period: 120s
56 changes: 56 additions & 0 deletions docker/cloud-storage/entrypoints/pd-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

set -euo pipefail

: "${HG_PD_GRPC_HOST:=pd}"
: "${HG_PD_GRPC_PORT:=8686}"
: "${HG_PD_REST_PORT:=8620}"
: "${HG_PD_RAFT_ADDRESS:=pd:8610}"
: "${HG_PD_RAFT_PEERS_LIST:=pd:8610}"
: "${HG_PD_DATA_PATH:=/hugegraph-pd/pd_data}"
: "${HG_PD_INITIAL_STORE_LIST:=store0:8500,store1:8500,store2:8500}"
: "${HG_PD_INITIAL_STORE_COUNT:=3}"

json_escape() {
local s="$1"
s=${s//\\/\\\\}
s=${s//\"/\\\"}
s=${s//$'\n'/}
printf "%s" "$s"
}

export SPRING_APPLICATION_JSON="$(cat <<JSON
{
"grpc": { "host": "$(json_escape "${HG_PD_GRPC_HOST}")", "port": "$(json_escape "${HG_PD_GRPC_PORT}")" },
"server": { "port": "$(json_escape "${HG_PD_REST_PORT}")" },
"raft": {
"address": "$(json_escape "${HG_PD_RAFT_ADDRESS}")",
"peers-list": "$(json_escape "${HG_PD_RAFT_PEERS_LIST}")"
},
"pd": {
"initial-store-list": "$(json_escape "${HG_PD_INITIAL_STORE_LIST}")",
"initial-store-count": "$(json_escape "${HG_PD_INITIAL_STORE_COUNT}")"
},
"app": { "data-path": "$(json_escape "${HG_PD_DATA_PATH}")" }
}
JSON
)"

exec ./bin/start-hugegraph-pd.sh -d false -j "${JAVA_OPTS:-}"

Loading
Loading