Compare commits

...

3 commits

Author SHA1 Message Date
Abhijat Malviya
e341819256
fix(hset_family): Fix val being overwritten by TTL (#5094)
When hset is loaded from rdb, if a ttl is specified by the user, the
code recreates a string_view on top of the same memory location,
tset_blob_, that was used for val earlier. This causes the val string
view to point to the same value now as TTL has. For example if the val
string view was 'x' earlier (points to tset_blob_, size 1), and ttl is
7777777, val now becomes '7'.

To fix this val is now given it's own string. TTL is kept as string
view as the pointer is not reused anywhere in the following loop.

Signed-off-by: Abhijat Malviya <abhijat@dragonflydb.io>
2025-05-10 20:11:42 +05:30
Roman Gershman
8ce8ee68df
chore: support fetching a huffman encoded string from CompactObj (#5086)
chore: supports reading huffman encoded strings from CompactObj

This requires implementing HashCode, operator== methods as well.
Fixes #4880

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-05-09 18:13:36 +03:00
romange
e148f1aa69 chore(helm-chart): update to v1.30.0 2025-05-09 12:09:26 +00:00
31 changed files with 252 additions and 154 deletions

View file

@ -15,13 +15,13 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: v1.29.0 version: v1.30.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes. # It is recommended to use it with quotes.
appVersion: "v1.29.0" appVersion: "v1.30.0"
home: https://dragonflydb.io/ home: https://dragonflydb.io/

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -72,7 +72,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -60,7 +60,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -67,7 +67,7 @@ spec:
image: busybox:latest image: busybox:latest
name: sidecar-string name: sidecar-string
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -64,7 +64,7 @@ spec:
command: ["/bin/sh"] command: ["/bin/sh"]
args: ["-c", "date; sleep 3600;"] args: ["-c", "date; sleep 3600;"]
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/extra-manifests.yaml # Source: dragonfly/templates/extra-manifests.yaml
@ -47,7 +47,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -69,7 +69,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -87,7 +87,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/extra-manifests.yaml # Source: dragonfly/templates/extra-manifests.yaml
@ -39,7 +39,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -61,7 +61,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -79,7 +79,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -60,7 +60,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -68,7 +68,7 @@ spec:
name: initcontainer-string name: initcontainer-string
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -65,7 +65,7 @@ spec:
args: ["-c", "date; sleep 1;"] args: ["-c", "date; sleep 1;"]
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/extra-manifests.yaml # Source: dragonfly/templates/extra-manifests.yaml
@ -28,7 +28,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -50,7 +50,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/extra-manifests.yaml # Source: dragonfly/templates/extra-manifests.yaml
@ -28,7 +28,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -50,7 +50,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -68,7 +68,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/extra-manifests.yaml # Source: dragonfly/templates/extra-manifests.yaml
@ -28,7 +28,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -50,7 +50,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -68,7 +68,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/extra-manifests.yaml # Source: dragonfly/templates/extra-manifests.yaml
@ -28,7 +28,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -50,7 +50,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
serviceName: test serviceName: test
@ -69,7 +69,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
serviceName: test serviceName: test
@ -61,7 +61,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -17,7 +17,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -29,7 +29,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -51,7 +51,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -70,7 +70,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/metrics-service.yaml # Source: dragonfly/templates/metrics-service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
type: metrics type: metrics
spec: spec:
@ -43,7 +43,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -65,7 +65,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -83,7 +83,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly
@ -124,7 +124,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
endpoints: endpoints:

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -60,7 +60,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -64,7 +64,7 @@ spec:
- name: dragonfly - name: dragonfly
securityContext: securityContext:
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: LoadBalancer type: LoadBalancer
@ -43,7 +43,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -61,7 +61,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/metrics-service.yaml # Source: dragonfly/templates/metrics-service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
type: metrics type: metrics
spec: spec:
@ -43,7 +43,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -65,7 +65,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -83,7 +83,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly
@ -125,7 +125,7 @@ metadata:
release: prometheus-stack release: prometheus-stack
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
endpoints: endpoints:

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -78,7 +78,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/extra-manifests.yaml # Source: dragonfly/templates/extra-manifests.yaml
@ -28,7 +28,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
type: kubernetes.io/tls type: kubernetes.io/tls
data: data:
@ -44,7 +44,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -66,7 +66,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -77,7 +77,7 @@ spec:
template: template:
metadata: metadata:
annotations: annotations:
checksum/tls-secret: 7c145e31680ebd4dd212c79a60417b49fc509298adf57258a5961a24ce43b702 checksum/tls-secret: af53017303e9019c5b65fd3b16260fb76fdc3c35034ae64eec62987b3be0dd39
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
@ -85,7 +85,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -8,7 +8,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
--- ---
# Source: dragonfly/templates/service.yaml # Source: dragonfly/templates/service.yaml
@ -20,7 +20,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
type: ClusterIP type: ClusterIP
@ -42,7 +42,7 @@ metadata:
labels: labels:
app.kubernetes.io/name: dragonfly app.kubernetes.io/name: dragonfly
app.kubernetes.io/instance: test app.kubernetes.io/instance: test
app.kubernetes.io/version: "v1.29.0" app.kubernetes.io/version: "v1.30.0"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@ -63,7 +63,7 @@ spec:
serviceAccountName: test-dragonfly serviceAccountName: test-dragonfly
containers: containers:
- name: dragonfly - name: dragonfly
image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.29.0" image: "docker.dragonflydb.io/dragonflydb/dragonfly:v1.30.0"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: dragonfly - name: dragonfly

View file

@ -787,13 +787,17 @@ CompactObj& CompactObj::operator=(CompactObj&& o) noexcept {
size_t CompactObj::Size() const { size_t CompactObj::Size() const {
size_t raw_size = 0; size_t raw_size = 0;
uint8_t first_byte = 0;
if (IsInline()) { if (IsInline()) {
raw_size = taglen_; raw_size = taglen_;
first_byte = u_.inline_str[0];
} else { } else {
switch (taglen_) { switch (taglen_) {
case SMALL_TAG: case SMALL_TAG:
raw_size = u_.small_str.size(); raw_size = u_.small_str.size();
if (mask_bits_.encoding == HUFFMAN_ENC) {
return DecodedLen(raw_size, u_.small_str.first_byte());
}
break; break;
case INT_TAG: { case INT_TAG: {
absl::AlphaNum an(u_.ival); absl::AlphaNum an(u_.ival);
@ -802,11 +806,16 @@ size_t CompactObj::Size() const {
} }
case EXTERNAL_TAG: case EXTERNAL_TAG:
raw_size = u_.ext_ptr.serialized_size; raw_size = u_.ext_ptr.serialized_size;
CHECK(mask_bits_.encoding != HUFFMAN_ENC);
break; break;
case ROBJ_TAG: case ROBJ_TAG:
raw_size = u_.r_obj.Size(); raw_size = u_.r_obj.Size();
if (mask_bits_.encoding == HUFFMAN_ENC) {
return DecodedLen(raw_size, *(uint8_t*)u_.r_obj.inner_obj());
}
break; break;
case JSON_TAG: case JSON_TAG:
DCHECK_EQ(mask_bits_.encoding, NONE_ENC);
if (JsonEnconding() == kEncodingJsonFlat) { if (JsonEnconding() == kEncodingJsonFlat) {
raw_size = u_.json_obj.flat.json_len; raw_size = u_.json_obj.flat.json_len;
} else { } else {
@ -814,48 +823,54 @@ size_t CompactObj::Size() const {
} }
break; break;
case SBF_TAG: case SBF_TAG:
DCHECK_EQ(mask_bits_.encoding, NONE_ENC);
raw_size = u_.sbf->current_size(); raw_size = u_.sbf->current_size();
break; break;
default: default:
LOG(DFATAL) << "Should not reach " << int(taglen_); LOG(DFATAL) << "Should not reach " << int(taglen_);
} }
} }
return mask_bits_.encoding ? DecodedLen(raw_size) : raw_size; return mask_bits_.encoding ? DecodedLen(raw_size, first_byte) : raw_size;
} }
uint64_t CompactObj::HashCode() const { uint64_t CompactObj::HashCode() const {
DCHECK(taglen_ != JSON_TAG) << "JSON type cannot be used for keys!"; DCHECK(taglen_ != JSON_TAG) << "JSON type cannot be used for keys!";
uint8_t encoded = mask_bits_.encoding; if (mask_bits_.encoding == NONE_ENC) {
if (IsInline()) {
return XXH3_64bits_withSeed(u_.inline_str, taglen_, kHashSeed);
}
switch (taglen_) {
case SMALL_TAG:
return u_.small_str.HashCode();
case ROBJ_TAG:
return u_.r_obj.HashCode();
case INT_TAG: {
absl::AlphaNum an(u_.ival);
return XXH3_64bits_withSeed(an.data(), an.size(), kHashSeed);
}
}
}
DCHECK(mask_bits_.encoding);
if (IsInline()) { if (IsInline()) {
if (encoded) { char buf[kInlineLen * 3]; // should suffice for most huffman decodings.
char buf[kInlineLen * 2]; size_t decoded_len = DecodedLen(taglen_, u_.inline_str[0]);
size_t decoded_len = DecodedLen(taglen_); if (mask_bits_.encoding == HUFFMAN_ENC) {
if (decoded_len <= sizeof(buf) &&
tl.huff_decoder.Decode({u_.inline_str + 1, size_t(taglen_ - 1)}, decoded_len, buf)) {
return XXH3_64bits_withSeed(buf, decoded_len, kHashSeed);
}
} else {
detail::ascii_unpack(to_byte(u_.inline_str), decoded_len, buf); detail::ascii_unpack(to_byte(u_.inline_str), decoded_len, buf);
return XXH3_64bits_withSeed(buf, decoded_len, kHashSeed); return XXH3_64bits_withSeed(buf, decoded_len, kHashSeed);
} }
return XXH3_64bits_withSeed(u_.inline_str, taglen_, kHashSeed);
} }
if (encoded) { string_view sv = GetSlice(&tl.tmp_str);
string_view sv = GetSlice(&tl.tmp_str); return XXH3_64bits_withSeed(sv.data(), sv.size(), kHashSeed);
return XXH3_64bits_withSeed(sv.data(), sv.size(), kHashSeed);
}
switch (taglen_) {
case SMALL_TAG:
return u_.small_str.HashCode();
case ROBJ_TAG:
return u_.r_obj.HashCode();
case INT_TAG: {
absl::AlphaNum an(u_.ival);
return XXH3_64bits_withSeed(an.data(), an.size(), kHashSeed);
}
}
// We need hash only for keys.
LOG(DFATAL) << "Should not reach " << int(taglen_);
return 0;
} }
uint64_t CompactObj::HashCode(string_view str) { uint64_t CompactObj::HashCode(string_view str) {
@ -1111,7 +1126,8 @@ void CompactObj::GetString(char* dest) const {
detail::ascii_unpack(to_byte(u_.inline_str), taglen_ + 2, dest); detail::ascii_unpack(to_byte(u_.inline_str), taglen_ + 2, dest);
break; break;
case HUFFMAN_ENC: case HUFFMAN_ENC:
tl.huff_decoder.Decode(u_.inline_str, taglen_, dest); tl.huff_decoder.Decode({u_.inline_str + 1, size_t(taglen_ - 1)},
u_.inline_str[0] + taglen_ - 1, dest);
break; break;
case NONE_ENC: case NONE_ENC:
memcpy(dest, u_.inline_str, taglen_); memcpy(dest, u_.inline_str, taglen_);
@ -1132,24 +1148,39 @@ void CompactObj::GetString(char* dest) const {
if (taglen_ == ROBJ_TAG) { if (taglen_ == ROBJ_TAG) {
CHECK_EQ(OBJ_STRING, u_.r_obj.type()); CHECK_EQ(OBJ_STRING, u_.r_obj.type());
DCHECK_EQ(OBJ_ENCODING_RAW, u_.r_obj.encoding()); DCHECK_EQ(OBJ_ENCODING_RAW, u_.r_obj.encoding());
size_t decoded_len = DecodedLen(u_.r_obj.Size()); size_t decoded_len = DecodedLen(u_.r_obj.Size(), *(const uint8_t*)u_.r_obj.inner_obj());
if (mask_bits_.encoding == HUFFMAN_ENC) {
CHECK(tl.huff_decoder.Decode({(const char*)u_.r_obj.inner_obj() + 1, u_.r_obj.Size() - 1},
decoded_len, dest));
return;
}
detail::ascii_unpack_simd(to_byte(u_.r_obj.inner_obj()), decoded_len, dest); detail::ascii_unpack_simd(to_byte(u_.r_obj.inner_obj()), decoded_len, dest);
} else if (taglen_ == SMALL_TAG) { } else {
size_t decoded_len = DecodedLen(u_.small_str.size()); CHECK_EQ(SMALL_TAG, taglen_);
string_view slices[2];
unsigned num = u_.small_str.GetV(slices);
DCHECK_EQ(2u, num);
size_t decoded_len = DecodedLen(u_.small_str.size(), slices[0][0]);
if (mask_bits_.encoding == HUFFMAN_ENC) {
tl.tmp_buf.resize(slices[0].size() + slices[1].size() - 1);
uint8_t* next = tl.tmp_buf.data();
memcpy(next, slices[0].data() + 1, slices[0].size() - 1);
next += slices[0].size() - 1;
memcpy(next, slices[1].data(), slices[1].size());
string_view src(reinterpret_cast<const char*>(tl.tmp_buf.data()), tl.tmp_buf.size());
CHECK(tl.huff_decoder.Decode(src, decoded_len, dest));
return;
}
// we left some space on the left to allow inplace ascii unpacking. // we left some space on the left to allow inplace ascii unpacking.
size_t space_left = decoded_len - u_.small_str.size(); size_t space_left = decoded_len - u_.small_str.size();
string_view slices[2];
unsigned num = u_.small_str.GetV(slices);
DCHECK_EQ(2u, num);
char* next = dest + space_left; char* next = dest + space_left;
memcpy(next, slices[0].data(), slices[0].size()); memcpy(next, slices[0].data(), slices[0].size());
next += slices[0].size(); next += slices[0].size();
memcpy(next, slices[1].data(), slices[1].size()); memcpy(next, slices[1].data(), slices[1].size());
detail::ascii_unpack_simd(reinterpret_cast<uint8_t*>(dest + space_left), decoded_len, dest); detail::ascii_unpack_simd(reinterpret_cast<uint8_t*>(dest + space_left), decoded_len, dest);
} else {
LOG(FATAL) << "Unsupported tag " << int(taglen_);
} }
return; return;
} }
@ -1343,8 +1374,25 @@ bool CompactObj::EqualNonInline(std::string_view sv) const {
} }
bool CompactObj::CmpEncoded(string_view sv) const { bool CompactObj::CmpEncoded(string_view sv) const {
size_t encode_len = binpacked_len(sv.size()); if (mask_bits_.encoding == HUFFMAN_ENC) {
size_t sz = Size();
if (sv.size() != sz)
return false;
if (IsInline()) {
constexpr size_t kMaxHuffLen = kInlineLen * 3;
if (sz <= kMaxHuffLen) {
char buf[kMaxHuffLen];
CHECK(tl.huff_decoder.Decode({u_.inline_str + 1, size_t(taglen_ - 1)}, sz, buf));
return sv == string_view(buf, sz);
}
}
tl.tmp_str.resize(sz);
GetString(tl.tmp_str.data());
return sv == tl.tmp_str;
}
size_t encode_len = binpacked_len(sv.size());
if (IsInline()) { if (IsInline()) {
if (encode_len != taglen_) if (encode_len != taglen_)
return false; return false;
@ -1524,8 +1572,12 @@ StringOrView CompactObj::GetRawString() const {
return {}; return {};
} }
size_t CompactObj::DecodedLen(size_t sz) const { size_t CompactObj::DecodedLen(size_t sz, uint8_t b) const {
unsigned delta = (mask_bits_.encoding == ASCII1_ENC ? 1 : 0); DCHECK(mask_bits_.encoding);
if (mask_bits_.encoding == HUFFMAN_ENC) {
return sz + b - 1;
}
unsigned delta = (mask_bits_.encoding == ASCII1_ENC) ? 1 : 0;
return ascii_len(sz) - delta; return ascii_len(sz) - delta;
} }

View file

@ -410,7 +410,7 @@ class CompactObj {
private: private:
void EncodeString(std::string_view str); void EncodeString(std::string_view str);
size_t DecodedLen(size_t sz) const; size_t DecodedLen(size_t sz, uint8_t firstb) const;
bool EqualNonInline(std::string_view sv) const; bool EqualNonInline(std::string_view sv) const;

View file

@ -4,6 +4,7 @@
#include "core/compact_object.h" #include "core/compact_object.h"
#include <absl/strings/str_cat.h> #include <absl/strings/str_cat.h>
#include <gtest/gtest.h>
#include <mimalloc.h> #include <mimalloc.h>
#include <xxhash.h> #include <xxhash.h>
@ -13,6 +14,7 @@
#include "base/logging.h" #include "base/logging.h"
#include "core/detail/bitpacking.h" #include "core/detail/bitpacking.h"
#include "core/flat_set.h" #include "core/flat_set.h"
#include "core/huff_coder.h"
#include "core/mi_memory_resource.h" #include "core/mi_memory_resource.h"
#include "core/string_set.h" #include "core/string_set.h"
@ -656,6 +658,30 @@ TEST_F(CompactObjectTest, lpGetInteger) {
lpFree(lp); lpFree(lp);
} }
TEST_F(CompactObjectTest, HuffMan) {
array<unsigned, 256> hist;
hist.fill(1);
hist['a'] = 100;
hist['b'] = 50;
HuffmanEncoder encoder;
ASSERT_TRUE(encoder.Build(hist.data(), hist.size() - 1, nullptr));
string bindata = encoder.Export();
ASSERT_TRUE(CompactObj::InitHuffmanThreadLocal(bindata));
for (unsigned i = 30; i < 2048; i += 10) {
string data(i, 'a');
cobj_.SetString(data);
bool malloc_used = i >= 60;
ASSERT_EQ(malloc_used, cobj_.MallocUsed() > 0) << i;
ASSERT_EQ(data.size(), cobj_.Size());
ASSERT_EQ(CompactObj::HashCode(data), cobj_.HashCode());
string actual;
cobj_.GetString(&actual);
EXPECT_EQ(data, actual);
EXPECT_EQ(cobj_, data);
}
}
static void ascii_pack_naive(const char* ascii, size_t len, uint8_t* bin) { static void ascii_pack_naive(const char* ascii, size_t len, uint8_t* bin) {
const char* end = ascii + len; const char* end = ascii + len;

View file

@ -144,7 +144,7 @@ bool HuffmanDecoder::Decode(std::string_view src, size_t dest_size, char* dest)
HUF_decompress1X_usingDTable(dest, dest_size, src.data(), src.size(), huf_dtable_.get(), 1); HUF_decompress1X_usingDTable(dest, dest_size, src.data(), src.size(), huf_dtable_.get(), 1);
if (HUF_isError(res)) { if (HUF_isError(res)) {
LOG(FATAL) << "Failed to decompress: " << HUF_getErrorName(res); LOG(DFATAL) << "Failed to decompress: " << HUF_getErrorName(res);
return false; return false;
} }
return true; return true;

View file

@ -50,6 +50,10 @@ class SmallString {
bool DefragIfNeeded(float ratio); bool DefragIfNeeded(float ratio);
uint8_t first_byte() const {
return prefix_[0];
}
private: private:
// prefix of the string that is broken down into 2 parts. // prefix of the string that is broken down into 2 parts.
char prefix_[kPrefLen]; char prefix_[kPrefLen];

View file

@ -482,11 +482,12 @@ void RdbLoaderBase::OpaqueObjLoader::CreateHMap(const LoadTrace* ltrace) {
} }
}); });
std::string key; std::string key;
std::string val;
for (size_t i = 0; i < ltrace->arr.size(); i += increment) { for (size_t i = 0; i < ltrace->arr.size(); i += increment) {
// ToSV may reference an internal buffer, therefore we can use only before the // ToSV may reference an internal buffer, therefore we can use only before the
// next call to ToSV. To workaround, copy the key locally. // next call to ToSV. To workaround, copy the key locally.
key = ToSV(ltrace->arr[i].rdb_var); key = ToSV(ltrace->arr[i].rdb_var);
string_view val = ToSV(ltrace->arr[i + 1].rdb_var); val = ToSV(ltrace->arr[i + 1].rdb_var);
if (ec_) if (ec_)
return; return;

View file

@ -1,23 +1,18 @@
import random
from itertools import chain, repeat
import re
import pytest
import asyncio
import async_timeout
import platform import platform
import pymemcache import shutil
import logging
import tarfile import tarfile
import urllib.request import urllib.request
import shutil from itertools import chain, repeat
from redis import asyncio as aioredis
from .utility import * import async_timeout
from .instance import DflyInstanceFactory, DflyInstance import pymemcache
from .seeder import Seeder as SeederV2
from . import dfly_args from . import dfly_args
from .instance import DflyInstanceFactory, DflyInstance
from .proxy import Proxy from .proxy import Proxy
from .seeder import DebugPopulateSeeder from .seeder import DebugPopulateSeeder
from .seeder import Seeder as SeederV2
from .utility import *
ADMIN_PORT = 1211 ADMIN_PORT = 1211
@ -3115,3 +3110,23 @@ async def test_partial_replication_on_same_source_master(df_factory, use_takeove
lines = replica2.find_in_logs(f"Started full with localhost:{replica1.port}") lines = replica2.find_in_logs(f"Started full with localhost:{replica1.port}")
assert len(lines) == 0 assert len(lines) == 0
assert len(replica1.find_in_logs("No partial sync due to diff")) > 0 assert len(replica1.find_in_logs("No partial sync due to diff")) > 0
async def test_replicate_hset_with_expiry(df_factory: DflyInstanceFactory):
master = df_factory.create(proactor_threads=2)
replica = df_factory.create(proactor_threads=2)
master.start()
replica.start()
cm = master.client()
await cm.execute_command("HSETEX key 86400 name 1234")
cr = replica.client()
await cr.execute_command(f"REPLICAOF localhost {master.port}")
await wait_available_async(cr)
result = await cr.hgetall("key")
assert "name" in result
assert result["name"] == "1234"