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

Pika5 new #8

Open
wants to merge 145 commits into
base: unstable
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
145 commits
Select commit Hold shift + click to select a range
7fa2c3e
feat: add configs for rocksdb-cloud in pika and floyd
longfar-ncy Feb 27, 2024
f02470e
feat: add aws-sdk in cmake to make compile successfull
longfar-ncy Feb 28, 2024
fd3e0a5
feat: replace rocksdb::DB with rocksdb::DBCloud in storage
longfar-ncy Feb 28, 2024
ba45390
feat: replace rocksdb::DB with rocksdb::DBCloud in tests of storage
longfar-ncy Feb 28, 2024
42909a2
fix: forget open storage in zset tests
longfar-ncy Feb 28, 2024
c8dcd53
add cloud binlogitem
Mar 1, 2024
5d4882d
pika command can write to cloud binlog
Mar 5, 2024
454b87a
not init binlog while init cloudBinlog
Mar 7, 2024
cc49ee3
Merge branch 'pikacloud' into binlog_pika_cloud
Mar 7, 2024
c8b4bbe
compare local and remote's version by manifest_update_sequence
Mar 7, 2024
b971655
pass db_id, rocksdb_id parameters
Mar 8, 2024
8f41c46
clean code
Mar 8, 2024
18443e5
clean code
Mar 8, 2024
050a3a5
add S3 in DBStrcut
Mar 10, 2024
e3e5dab
fix cloud binlog bug, add s3 schma in dbstruct, add gtest frame
Mar 12, 2024
2d89285
change static define to dynamic
Mar 12, 2024
e048075
clean code
Mar 12, 2024
fbf07eb
fix by review comments
Mar 12, 2024
02cf626
Merge pull request #3 from pikiwidb/binlog_pika_cloud
baixin01 Mar 12, 2024
ddb0d9f
Merge pull request #2 from pikiwidb/feature/wsy_switch_master
baixin01 Mar 12, 2024
62b1ecc
add cloud binlog unit test
Mar 14, 2024
acb61c8
clean code
baixin01 Mar 14, 2024
9c23887
add cloud binlog unit test
Mar 14, 2024
6469c9f
clean code
baixin01 Mar 14, 2024
e152bb8
pika support switch master/slave role
baixin01 Mar 15, 2024
ef1cad4
fix bug
baixin01 Mar 15, 2024
bee290d
support full sync
baixin01 Mar 15, 2024
d32ec45
change config about rocksdb-cloud, add storage ut
Mar 11, 2024
b7bcf0a
slave consume binlog
baixin01 Mar 17, 2024
953a847
fix bug
baixin01 Mar 18, 2024
3250a96
fix bug
baixin01 Mar 18, 2024
10f3126
fix bug
baixin01 Mar 19, 2024
55e6bc6
fix by review comments
Mar 20, 2024
978a151
Merge pull request #4 from pikiwidb/binlog_pika_cloud
baixin01 Mar 20, 2024
d147e2f
Merge pull request #5 from pikiwidb/feature/wsy_change_config
baixin01 Mar 20, 2024
99333ce
implement rocksdb WAL callback function
Mar 22, 2024
9f20776
implement post manifest file to sentinel
Mar 25, 2024
0dea264
fix by review comments
Mar 25, 2024
de3a175
add abstract class for binlog
Mar 25, 2024
b6c8d44
fix by review comments
Mar 26, 2024
aee839b
fix by review comments
Mar 27, 2024
747f395
Merge pull request #7 from pikiwidb/feature/implement_wal_cb
baixin01 Mar 27, 2024
f134419
fix by review comments
Mar 26, 2024
c3fb68a
remove unused code
Mar 26, 2024
fcc46ce
remove unused code
Mar 26, 2024
124dd48
implement rocksdb_cloud's upload_meta_func
Mar 26, 2024
320cb9f
implement rocksdb_cloud's upload_meta_func
Mar 26, 2024
4d6d1ca
implement rocksdb_cloud's upload_meta_func
Mar 26, 2024
2b212d0
support upload meta to sentinel
Mar 27, 2024
caf5e18
fix by review comments
Mar 27, 2024
ba4044b
Merge pull request #8 from pikiwidb/feature/drop_stale_binlog
baixin01 Mar 27, 2024
936cf33
change conf for cloud mode
Mar 28, 2024
152bd12
fix compile error
Mar 28, 2024
4a46c6f
Merge pull request #9 from pikiwidb/feature/change_conf
baixin01 Mar 28, 2024
81a3196
Auto-increment TermID、UPLoad Manifest to S3
baixin01 Mar 20, 2024
c4df9b1
send pkping
baixin01 Mar 22, 2024
ba37856
manifest upload to s3
baixin01 Mar 24, 2024
5ae6186
clean code
baixin01 Mar 25, 2024
b717276
clean code
baixin01 Mar 25, 2024
a927e2f
clean code
baixin01 Mar 25, 2024
f94cfa4
add s3 config
baixin01 Mar 25, 2024
a6fe12c
change parameter name
baixin01 Mar 25, 2024
a680fb3
change http post style
baixin01 Mar 25, 2024
e52826d
add pika pkping command, fix bug
baixin01 Mar 27, 2024
864c512
fix bug
baixin01 Mar 28, 2024
7d0ca49
fix compile error
Mar 28, 2024
43a43ce
fix by review comments
Mar 28, 2024
d12068c
fix by review comments
Mar 28, 2024
697c75c
fix bug
baixin01 Mar 28, 2024
d0de696
fix bug
baixin01 Mar 28, 2024
7c55abf
Merge pull request #10 from pikiwidb/wsy_fix_sentinel_term_cloud
baixin01 Mar 28, 2024
09db142
Merge pull request #11 from pikiwidb/test-pr
baixin01 Mar 28, 2024
1299681
Merge pull request #12 from pikiwidb/fix_sentinel_term_cloud
wangshao1 Mar 28, 2024
e87194d
fix bug
baixin01 Mar 29, 2024
6defd04
Merge pull request #13 from pikiwidb/test-pr
baixin01 Mar 29, 2024
06642f7
fix sync bug
baixin01 Mar 31, 2024
e0098a0
fix binlog sync
Apr 1, 2024
45c85ce
fix compile error
Apr 1, 2024
914d67b
fix switchmaster bug
Apr 2, 2024
bcd9d5c
fix replication error && add debug log
Apr 2, 2024
6118000
fix switchmaster bug
Apr 7, 2024
82fa0cc
fix sentinel bug
baixin01 Apr 7, 2024
68a6035
Merge remote-tracking branch 'origin/fix/fix_binlog_sync' into fix/fi…
baixin01 Apr 7, 2024
14d85b4
Merge branch 'fix/fix_binlog_sync_wsy' into fix/fix_binlog_sync
Apr 7, 2024
8f73782
Merge branch 'fix/fix_binlog_sync' of github.com:pikiwidb/pika into f…
baixin01 Apr 7, 2024
3adb893
change data type of lease_term_id and group_id
Apr 7, 2024
06d3c85
Merge branch 'fix/fix_binlog_sync' of github.com:pikiwidb/pika into f…
baixin01 Apr 8, 2024
c5b59e1
fix code conflict
baixin01 Apr 8, 2024
8bd11f7
clean code
baixin01 Apr 8, 2024
2674fa8
fix binlog sync error
Apr 8, 2024
eee0e10
change pika_model to pika_mode
baixin01 Apr 8, 2024
dc89355
Merge branch 'fix/fix_binlog_sync' of github.com:pikiwidb/pika into f…
baixin01 Apr 8, 2024
88afec2
change model to mode
baixin01 Apr 8, 2024
988ccef
change model to mode
baixin01 Apr 9, 2024
312c495
del XXX.so
baixin01 Apr 9, 2024
c0c34fc
change model
baixin01 Apr 10, 2024
8201490
change modelF
baixin01 Apr 10, 2024
537ff70
change model
baixin01 Apr 10, 2024
9b775f9
Merge pull request #14 from pikiwidb/fix/fix_binlog_sync
AlexStocks Apr 10, 2024
5e6d68e
delete def use_s3
baixin01 Apr 10, 2024
db2aae5
pika encode manifest content before upload to sentinel
Apr 12, 2024
f1f7533
support flushdb command
Apr 25, 2024
ad1f07a
support flushdb command
Apr 26, 2024
662cbc4
support bgsave
baixin01 Apr 26, 2024
db95c47
support bgsave
baixin01 Apr 26, 2024
aedc280
clean code
baixin01 Apr 26, 2024
f527891
clean code
baixin01 Apr 28, 2024
a80ba1d
for test
baixin01 Apr 28, 2024
821b233
add support delbackup cmd
baixin01 Apr 28, 2024
5b461b3
add bgsave multi db
baixin01 Apr 29, 2024
294b051
support redis cache in pikacloud
May 7, 2024
f9e3406
fix compile error
May 7, 2024
c19c7f8
clean code
baixin01 May 8, 2024
d83063d
clean code
baixin01 May 9, 2024
b6e9bd3
use rocksdb-cloud sst-file-cache
May 9, 2024
04ee23c
add comment for debug code
May 9, 2024
33cb852
clean code
baixin01 May 9, 2024
e0c0756
pikacloud support local cache
May 10, 2024
019d41e
fix by review comments
May 10, 2024
5e9aea8
test 360_s3
baixin01 May 10, 2024
61daa11
Merge pull request #18 from pikiwidb/feat/support_local_cache
wangshao1 May 13, 2024
bf6ef73
remove debug log
May 10, 2024
900ebc6
remove debug code
May 13, 2024
f26bd31
fix review comment
baixin01 May 13, 2024
f1156b5
Merge pull request #16 from pikiwidb/fix/fix_flushdb
baixin01 May 13, 2024
25c1b88
Merge pull request #19 from pikiwidb/fix/remove_debug_log
baixin01 May 13, 2024
112eea7
Merge branch 'fix/fix_binlog_sync' into feat/base64_enc_content
baixin01 May 13, 2024
6dc8d72
Merge pull request #15 from pikiwidb/feat/base64_enc_content
baixin01 May 13, 2024
c4f8bc8
Merge branch 'pikacloud' into fix/fix_binlog_sync
baixin01 May 13, 2024
8b5e643
Merge pull request #17 from pikiwidb/fix/fix_binlog_sync
baixin01 May 13, 2024
7e64828
fix analyze manifest bug
baixin01 May 14, 2024
ecf0a97
fix compile on mac bug
baixin01 May 14, 2024
d81215b
Merge pull request #20 from pikiwidb/fix_upload_manifest
baixin01 May 14, 2024
29ff125
change num_shard_bits default value
May 16, 2024
e1f1d99
Merge pull request #21 from pikiwidb/fix/change_num_shard_bits
AlexStocks May 16, 2024
1c02afe
add stall metrics
May 31, 2024
fdc005d
fix
May 31, 2024
e60d75b
add benchmark_client metrics
May 31, 2024
bbfd9b2
add listener
May 31, 2024
85f3e42
Merge branch 'feat/add_stall_metrics' of github.com:pikiwidb/pika int…
May 31, 2024
b0a8c64
add metrics for pikacloud
Jun 2, 2024
f9f430d
specify level0 compaction parameter
Jun 4, 2024
55bef51
wait pending objects in writing binlog
Jun 9, 2024
249e2bc
enable metrics statistic for get command
Jun 11, 2024
f4cdda6
remove unused code
Jun 14, 2024
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
99 changes: 96 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -575,7 +575,81 @@ endif()
set(PROTOBUF_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
set(PROTOBUF_LIBRARY ${INSTALL_LIBDIR}/${LIB_PROTOBUF})
set(PROTOBUF_PROTOC ${STAGED_INSTALL_PREFIX}/bin/protoc)
set(USE_S3 1)

ExternalProject_Add(prometheus_cpp
URL
https://github.com/jupp0r/prometheus-cpp/releases/download/v1.2.4/prometheus-cpp-with-submodules.tar.gz
CMAKE_ARGS
-DBUILD_SHARED_LIBS=ON
-DENABLE_PUSH=OFF
-DENABLE_COMPRESSION=OFF
-DCMAKE_INSTALL_LIBDIR=${INSTALL_LIBDIR}
-DCMAKE_INSTALL_INCLUDEDIR=${INSTALL_INCLUDEDIR}
BUILD_ALWAYS
1
BUILD_COMMAND
make -j${CPU_CORE}
)

set(PROMETHEUS_CPP_CORE_LIB ${INSTALL_LIBDIR}/libprometheus-cpp-core.so)
set(PROMETHEUS_CPP_PULL_LIB ${INSTALL_LIBDIR}/libprometheus-cpp-pull.so)

if (USE_S3)
ExternalProject_Add(rocksdb
DEPENDS
gflags
gtest
snappy
zstd
lz4
zlib
${LIBGPERF_NAME}
${LIBJEMALLOC_NAME}
URL
#temporary for debug, skip download from github
http://10.224.129.40:8000/async_upload/rocksdb_cloud.tar.gz
URL_HASH
MD5=31c2188019b0d9ebc11d4df42ce885f2
DOWNLOAD_NO_PROGRESS
1
UPDATE_COMMAND
""
LOG_CONFIGURE
1
LOG_BUILD
1
LOG_INSTALL
1
BUILD_ALWAYS
1
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${STAGED_INSTALL_PREFIX}
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
-DCMAKE_BUILD_TYPE=${LIB_BUILD_TYPE}
-DUSE_RTTI=1
-DWITH_BENCHMARK=OFF
-DWITH_BENCHMARK_TOOLS=OFF
-DWITH_TOOLS=OFF
-DWITH_CORE_TOOLS=OFF
-DWITH_TESTS=OFF
-DWITH_TRACE_TOOLS=OFF
-DWITH_EXAMPLES=OFF
-DROCKSDB_BUILD_SHARED=OFF
-DWITH_JEMALLOC=${JEMALLOC_ON}
-DWITH_LZ4=ON
-DWITH_SNAPPY=ON
-DWITH_ZLIB=ON
-DWITH_ZSTD=ON
-DWITH_GFLAGS=ON
-DFAIL_ON_WARNINGS=OFF
-DWITH_LIBURING=OFF
-DPORTABLE=1
-DWITH_AWS=ON
BUILD_COMMAND
make -j${CPU_CORE}
)
else()
ExternalProject_Add(rocksdb
DEPENDS
gflags
Expand Down Expand Up @@ -627,6 +701,7 @@ ExternalProject_Add(rocksdb
BUILD_COMMAND
make -j${CPU_CORE}
)
endif()

ExternalProject_Add(rediscache
URL
Expand Down Expand Up @@ -725,6 +800,10 @@ endif()
set(ROCKSDB_INCLUDE_DIR ${INSTALL_INCLUDEDIR})
set(ROCKSDB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${EP_BASE_SUFFIX}/Source/rocksdb)

if(USE_S3)
add_compile_definitions(USE_S3)
endif()

add_subdirectory(src/pstd)
add_subdirectory(src/net)
add_subdirectory(src/storage)
Expand All @@ -734,7 +813,7 @@ if (USE_PIKA_TOOLS)
endif()
aux_source_directory(src DIR_SRCS)

# # generate version
# generate version
string(TIMESTAMP TS "%Y-%m-%d %H:%M:%S" UTC)
set(PIKA_BUILD_DATE "${TS}" CACHE STRING "the time we first built pika")

Expand Down Expand Up @@ -769,7 +848,9 @@ set(PIKA_BUILD_VERSION_CC ${CMAKE_BINARY_DIR}/pika_build_version.cc
message("PIKA_BUILD_VERSION_CC : " ${PIKA_BUILD_VERSION_CC})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/build_version.cc.in ${PIKA_BUILD_VERSION_CC} @ONLY)

set(PROTO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/pika_inner_message.proto ${CMAKE_CURRENT_SOURCE_DIR}/src/rsync_service.proto)
set(PROTO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/pika_inner_message.proto
${CMAKE_CURRENT_SOURCE_DIR}/src/rsync_service.proto
${CMAKE_CURRENT_SOURCE_DIR}/src/pika_cloud_binlog.proto)
custom_protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_FILES})
message("pika PROTO_SRCS = ${PROTO_SRCS}")
message("pika PROTO_HDRS = ${PROTO_HDRS}")
Expand All @@ -784,6 +865,17 @@ target_link_directories(${PROJECT_NAME}
PUBLIC ${INSTALL_LIBDIR_64}
PUBLIC ${INSTALL_LIBDIR})

if (USE_S3)
find_package(AWSSDK REQUIRED COMPONENTS s3-crt transfer kinesis)
include_directories(${AWS_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${AWSSDK_LINK_LIBRARIES})
endif()

# SSL
find_package(OpenSSL REQUIRED)
include_directories(${OPENSSL_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} OpenSSL::SSL OpenSSL::Crypto)

add_dependencies(${PROJECT_NAME}
gflags
gtest
Expand Down Expand Up @@ -827,7 +919,8 @@ target_link_libraries(${PROJECT_NAME}
libz.a
librediscache.a
${LIBUNWIND_LIBRARY}
${JEMALLOC_LIBRARY})
${JEMALLOC_LIBRARY}
)

option(USE_SSL "Enable SSL support" OFF)
add_custom_target(
Expand Down
5 changes: 5 additions & 0 deletions codis/config/dashboard.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,9 @@ sentinel_down_after = "30s"
sentinel_failover_timeout = "5m"
sentinel_notification_script = ""
sentinel_client_reconfig_script = ""
sentinel_pika_local_mode = false
cloud_access_key = "minioadmin"
cloud_secret_key = "minioadmin"
cloud_endpoint_override = "http://10.224.129.40:9000"
cloud_src_bucket_region = "us-east-1"

7 changes: 6 additions & 1 deletion codis/example/dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,12 @@ def _open_config(admin_port, product_name, product_auth=None):
f.write('sentinel_failover_timeout = "10m"\n')
path = os.getcwd()
f.write('sentinel_notification_script = "{}"\n'.format(os.path.join(path, "sentinel_notify.sh")))
f.write('sentinel_client_reconfig_script = "{}"\n'.format(os.path.join(path, "sentinel_reconfig.sh")))
f.write('sentinel_client_reconfig_script = "{}"\n'.format(os.path.join(path, "sentinel_reconfig.sh"))
f.write('sentinel_pika_local_mode = "true"\n')
f.write('cloud_access_key = "minioadmin"\n')
f.write('cloud_secret_key = "minioadmin"\n')
f.write('cloud_endpoint_override = "http://10.224.129.40:9000"\n')
f.write('cloud_src_bucket_region = "us-east-1"\n'))
return config


Expand Down
6 changes: 6 additions & 0 deletions codis/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ replace google.golang.org/grpc => google.golang.org/grpc v1.29.0

require (
github.com/BurntSushi/toml v0.3.1
github.com/aws/aws-sdk-go v1.30.12
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815
github.com/emirpasic/gods v1.18.1
github.com/garyburd/redigo v1.6.4
Expand All @@ -18,6 +19,7 @@ require (
github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11
github.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414
github.com/spinlock/jemalloc-go v0.0.0-20201010032256-e81523fb8524
github.com/stretchr/testify v1.8.0
go.etcd.io/etcd/client/v2 v2.305.7
golang.org/x/net v0.17.0
gopkg.in/alexcesaro/statsd.v2 v2.0.0
Expand All @@ -26,10 +28,14 @@ require (
require (
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 // indirect
github.com/coreos/go-semver v0.3.1 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
go.etcd.io/etcd/api/v3 v3.5.7 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.7 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
23 changes: 23 additions & 0 deletions codis/go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/aws/aws-sdk-go v1.30.12 h1:KrjyosZvkpJjcwMk0RNxMZewQ47v7+ZkbQDXjWsJMs8=
github.com/aws/aws-sdk-go v1.30.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q=
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
Expand All @@ -15,10 +17,16 @@ github.com/garyburd/redigo v1.6.4 h1:LFu2R3+ZOPgSMWMOL+saa/zXRjw0ID2G8FepO53BGlg
github.com/garyburd/redigo v1.6.4/go.mod h1:rTb6epsqigu3kYKBnaF028A7Tf/Aw5s0cqA47doKKqw=
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab h1:xveKWz2iaueeTaUgdetzel+U7exyigDYBryyVfV/rZk=
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/influxdata/influxdb v1.11.0 h1:0X+ZsbcOWc6AEi5MHee9BYqXCKmz8IZsljrRYjmV8Qg=
github.com/influxdata/influxdb v1.11.0/go.mod h1:V93tJcidY0Zh0LtSONZWnXXGDyt20dtVf+Ddp4EnhaA=
github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/martini-contrib/binding v0.0.0-20160701174519-05d3e151b6cf h1:6YSkbjZVghliN7zwJC/U3QQG+OVXOrij3qQ8sxfPIMg=
Expand All @@ -34,25 +42,40 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw=
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414 h1:AJNDS0kP60X8wwWFvbLPwDuojxubj9pbfK7pjHw0vKg=
github.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
github.com/spinlock/jemalloc-go v0.0.0-20201010032256-e81523fb8524 h1:U+dpuWn15gFCqZkqhpUd5a85X1Oe1Tb+DeGF3nn6Bvs=
github.com/spinlock/jemalloc-go v0.0.0-20201010032256-e81523fb8524/go.mod h1:A/ik9Cf2cSgEVcmTWlvTfCxyFgoL1UP/WbevsdDeguc=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
go.etcd.io/etcd/api/v3 v3.5.7 h1:sbcmosSVesNrWOJ58ZQFitHMdncusIifYcrBfwrlJSY=
go.etcd.io/etcd/api/v3 v3.5.7/go.mod h1:9qew1gCdDDLu+VwmeG+iFpL+QlpHTo7iubavdVDgCAA=
go.etcd.io/etcd/client/pkg/v3 v3.5.7 h1:y3kf5Gbp4e4q7egZdn5T7W9TSHUvkClN6u+Rq9mEOmg=
go.etcd.io/etcd/client/pkg/v3 v3.5.7/go.mod h1:o0Abi1MK86iad3YrWhgUsbGx1pmTS+hrORWc2CamuhY=
go.etcd.io/etcd/client/v2 v2.305.7 h1:AELPkjNR3/igjbO7CjyF1fPuVPjrblliiKj+Y6xSGOU=
go.etcd.io/etcd/client/v2 v2.305.7/go.mod h1:GQGT5Z3TBuAQGvgPfhR7VPySu/SudxmEkRq9BgzFU6s=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
gopkg.in/alexcesaro/statsd.v2 v2.0.0 h1:FXkZSCZIH17vLCO5sO2UucTHsH9pc+17F6pl3JVCwMc=
gopkg.in/alexcesaro/statsd.v2 v2.0.0/go.mod h1:i0ubccKGzBVNBpdGV5MocxyA/XlLUJzA7SLonnE4drU=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
1 change: 1 addition & 0 deletions codis/pkg/models/group.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const MaxGroupId = 9999

type Group struct {
Id int `json:"id"`
TermId int `json:"term_id"`
Servers []*GroupServer `json:"servers"`

Promoting struct {
Expand Down
10 changes: 10 additions & 0 deletions codis/pkg/topom/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ sentinel_down_after = "30s"
sentinel_failover_timeout = "5m"
sentinel_notification_script = ""
sentinel_client_reconfig_script = ""
sentinel_pika_local_mode = false
cloud_access_key = "minioadmin"
cloud_secret_key = "minioadmin"
cloud_endpoint_override = "http://10.224.129.40:9000"
cloud_src_bucket_region = "us-east-1"
`

type Config struct {
Expand Down Expand Up @@ -95,6 +100,11 @@ type Config struct {
SentinelFailoverTimeout timesize.Duration `toml:"sentinel_failover_timeout" json:"sentinel_failover_timeout"`
SentinelNotificationScript string `toml:"sentinel_notification_script" json:"sentinel_notification_script"`
SentinelClientReconfigScript string `toml:"sentinel_client_reconfig_script" json:"sentinel_client_reconfig_script"`
SentinelPikaLocalMode bool `toml:"sentinel_pika_local_mode" json:"sentinel_pika_local_mode"`
CloudAccessKey string `toml:"cloud_access_key" json:"cloud_access_key"`
CloudSecretKey string `toml:"cloud_secret_key" json:"cloud_secret_key"`
CloudEndPointOverride string `toml:"cloud_endpoint_override" json:"cloud_endpoint_override"`
CloudSrcBucketRegion string `toml:"cloud_src_bucket_region" json:"cloud_src_bucket_region"`
}

func NewDefaultConfig() *Config {
Expand Down
2 changes: 1 addition & 1 deletion codis/pkg/topom/topom.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ func (s *Topom) Start(routines bool) error {
return nil
}

// Check the status of all masters and slaves every 5 seconds
// Check the status of all masters and slaves every 10 seconds
gxruntime.GoUnterminated(func() {
for !s.IsClosed() {
if s.IsOnline() {
Expand Down
39 changes: 37 additions & 2 deletions codis/pkg/topom/topom_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,20 @@
package topom

import (
"encoding/base64"
"encoding/json"
"fmt"
"io"
"net/http"
"strconv"
"strings"
"time"

_ "net/http/pprof"

"github.com/go-martini/martini"
"github.com/martini-contrib/binding"
"github.com/martini-contrib/gzip"
"github.com/martini-contrib/render"
_ "net/http/pprof"

"pika/codis/v2/pkg/models"
"pika/codis/v2/pkg/utils/errors"
Expand Down Expand Up @@ -74,6 +76,7 @@ func newApiServer(t *Topom) http.Handler {
r.Get("/xping/:xauth", api.XPing)
r.Get("/stats/:xauth", api.Stats)
r.Get("/slots/:xauth", api.Slots)
r.Post("/upload-s3", api.UploadManifestToS3)
r.Put("/reload/:xauth", api.Reload)
r.Put("/shutdown/:xauth", api.Shutdown)
r.Put("/loglevel/:xauth/:value", api.LogLevel)
Expand Down Expand Up @@ -500,6 +503,38 @@ func (s *apiServer) SyncRemoveAction(params martini.Params) (int, string) {
}
}

type UploadRequest struct {
GroupId int `json:"group_id"`
TermId int `json:"term_id"`
S3Bucket string `json:"s3_bucket"`
S3Path string `json:"s3_path"`
Content string `json:"content"`
}

func (s *apiServer) UploadManifestToS3(req *http.Request) (int, string) {
body, err := io.ReadAll(req.Body)
if err != nil {
return rpc.ApiResponseError(err)
}

var uploadReq UploadRequest
err = json.Unmarshal(body, &uploadReq)
if err != nil {
return rpc.ApiResponseError(err)
}

content, err := base64.StdEncoding.DecodeString(uploadReq.Content)
if err != nil {
return rpc.ApiResponseError(err)
}
if err := s.topom.UploadManifestToS3(uploadReq.GroupId, uploadReq.TermId, uploadReq.S3Bucket,
uploadReq.S3Path, content); err != nil {
return rpc.ApiResponseError(err)
} else {
return rpc.ApiResponseJson("OK")
}
}

func (s *apiServer) SlotCreateAction(params martini.Params) (int, string) {
if err := s.verifyXAuth(params); err != nil {
return rpc.ApiResponseError(err)
Expand Down
Loading
Loading