git config --global user.name "My Name"
git config --global user.email "my@email"
git config --global credential.helper cache
git config --global credential.helper "cache --timeout=86400"
git config --global diff.tool vimdiff
git config --global difftool.prompt false
git config --global merge.tool vimdiff
git config --global mergetool.prompt false
Static analysis is a powerful tool when searching for code issues. It does, however, have its costs. Careful tuning is required so that the developers are not overwhelmed with "false positive" detections, while on the other hand - critical errors are not missed. It also requires simple integration into the development flow, so that new issues are continuously detected and addressed.
In this project we use clang-tidy for automated static analysis
Bucket notifications are important building block in the object storage ecosystem. And persistent bucket notifications in particular, as they let the system overcome broker outages. However, since the persistent notifications are backed with a RADOS queue, they have a cost. Both in the extra load on the RADOS cluster, and with the inability to operate in environemnts where there is no RADOS backend. In this project, we would like to implement persistent bucket notifications in the RADOS Gateway using a Redis Queue. Combined with the "zipper" project we would be able to enjoy bucket notifications with backends like posix, dbstore, daos etc.
Note that on top of using RADOS for the notification queue, our code is depended with RADOS with its implementation of a distributed lock (to make sure that one and only one
- start cluser with realm (single zone):
OSD=1 MON=1 MDS=0 MGR=0 ../src/test/rgw/test-rgw-multisite.sh 1
- disable v2 topics:
bin/radosgw-admin -c run/c1/ceph.conf zonegroup modify --disable-feature=notification_v2
bin/radosgw-admin -c run/c1/ceph.conf period update
bin/radosgw-admin -c run/c1/ceph.conf period commit
Bucket notifications are important building block for many use cases. And persistent bucket notifications in particular, as they let the system overcome broker outages. However, since the persistent notifications are backed with a RADOS queue, they have a cost. Both in the extra load on the RADOS cluster, and with the inability to operate in environemnts where there is no RADOS backend. In this project, we would like to implement persistent bucket notifications in the RADOS Gateway using a Redis Queue. Combined with the "zipper" project we would be able to enjoy bucket notifications with backends like posix, dbstore, daos etc.
Lua scripts on the RADOS Gateway are powerful, so, in the meantime we only allow admins to add them to the RADOS Gatewway. Before we open this possibility to users, we want to add several protection layers to prevent from careless users to take down the system.
- verify machine has extra disks. e.g.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 893.8G 0 disk
__sda1 8:1 0 893.8G 0 part /
nvme0n1 259:0 0 1.5T 0 disk
nvme3n1 259:1 0 1.5T 0 disk
nvme1n1 259:2 0 1.5T 0 disk
nvme5n1 259:3 0 1.5T 0 disk
- vstart
- create bucket:
~/go/bin/hsbench -a 0555b35654ad1656d804 -s h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q== \
-u http://localhost:8000 -bp bk -b 1 -r default -m i
- create kafka topic:
aws --region=default --endpoint-url http://localhost:8000 sns create-topic --name=fishtopic \
--attributes='{"push-endpoint": "kafka://localhost"}'
- get our boto extensions file (from this PR)
wget https://raw.githubusercontent.com/ceph/ceph/15ac96a42d9aa2e828d68b9b21556063ef2c8531/examples/rgw/boto3/service-2.sdk-extras.json
- copy to the right place:
mkdir -p ~/.aws/models/s3/2006-03-01/
cp ./service-2.sdk-extras.json ~/.aws/models/s3/2006-03-01/
2023-11-27T14:18:57.001+0000 7f34bf328700 20 Lua INFO: ***************************************** [89/1934]
2023-11-27T14:18:57.001+0000 7f34bf328700 20 Lua INFO: op was: create_bucket
2023-11-27T14:18:57.001+0000 7f34bf328700 20 Lua INFO: header: CONTENT_LENGTH = 0
2023-11-27T14:18:57.001+0000 7f34bf328700 20 Lua INFO: header: HTTP_ACCEPT_ENCODING = identity
2023-11-27T14:18:57.001+0000 7f34bf328700 20 Lua INFO: header: HTTP_AMZ_SDK_INVOCATION_ID = 515f92f7-28c4-40ce-82c5-85ae32b289f5
2023-11-27T14:18:57.001+0000 7f34bf328700 20 Lua INFO: header: HTTP_AMZ_SDK_REQUEST = attempt=1
2023-11-27T14:18:57.001+0000 7f34bf328700 20 Lua INFO: header: HTTP_AUTHORIZATION = AWS4-HMAC-SHA256 Credential=0555b35654ad1656d804/20231127/default/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=e697901ed
454198d69dcb4fe5828eb00f4435917bd8dfd1642a958801
sudo dnf -y debuginfo-install ceph-radosgw-18.0.0-7437.gd67340ee.el9.x86_64
sudo gdb /usr/bin/radosgw -p $(pgrep radosgw)
while :; do pgrep -a radosgw; sleep 1; done