Skip to content

Commit

Permalink
update log-exporter docker, check params for repository.batchDelete
Browse files Browse the repository at this point in the history
Signed-off-by: neo <1100909+neowu@users.noreply.github.com>
  • Loading branch information
neowu committed Jan 12, 2024
1 parent 2a3332f commit a3ab32f
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -239,14 +239,7 @@ private boolean batchUpdated(int[] affectedRows) {
public boolean batchDelete(List<?> primaryKeys) {
var watch = new StopWatch();
if (primaryKeys.isEmpty()) throw new Error("primaryKeys must not be empty");
List<Object[]> params = new ArrayList<>(primaryKeys.size());
for (Object primaryKey : primaryKeys) {
if (primaryKey instanceof final Object[] keys) {
params.add(keys);
} else {
params.add(new Object[]{primaryKey});
}
}
List<Object[]> params = batchDeleteParams(primaryKeys);
int deletedRows = 0;
try {
int[] affectedRows = database.operation.batchUpdate(deleteSQL, params);
Expand All @@ -260,4 +253,20 @@ public boolean batchDelete(List<?> primaryKeys) {
database.track(elapsed, 0, deletedRows, size);
}
}

List<Object[]> batchDeleteParams(List<?> primaryKeys) {
List<Object[]> params = new ArrayList<>(primaryKeys.size());
for (Object primaryKey : primaryKeys) {
if (primaryKey instanceof final Object[] keys) {
if (selectQuery.primaryKeyColumns != keys.length)
throw new Error(Strings.format("the length of primary keys must match columns, primaryKeys={}, columns={}", keys.length, selectQuery.primaryKeyColumns));
params.add(keys);
} else {
if (selectQuery.primaryKeyColumns != 1)
throw new Error(Strings.format("the length of primary keys must match columns, primaryKeys={}, columns={}", 1, selectQuery.primaryKeyColumns));
params.add(new Object[]{primaryKey});
}
}
return params;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -122,4 +122,19 @@ void batchDelete() {
assertThat(repository.get(entity1.id1, entity1.id2)).isNotPresent();
assertThat(repository.get(entity2.id1, entity2.id2)).isNotPresent();
}

@Test
void batchDeleteParams() {
assertThatThrownBy(() -> {
var impl = (RepositoryImpl<CompositeKeyEntity>) repository;
impl.batchDeleteParams(List.of(1, 2, 3));
}).isInstanceOf(Error.class)
.hasMessageContaining("the length of primary keys must match columns");

assertThatThrownBy(() -> {
var impl = (RepositoryImpl<CompositeKeyEntity>) repository;
impl.batchDeleteParams(List.of(new Object[]{1, 1, 1}));
}).isInstanceOf(Error.class)
.hasMessageContaining("the length of primary keys must match columns");
}
}
2 changes: 1 addition & 1 deletion ext/log-exporter/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ LABEL app=log-exporter
RUN apk add --no-cache python3 curl
# gcloud iam requires user home, so must not put --no-create-home
RUN addgroup --gid 1000 --system app && adduser --system --ingroup app --uid 1000 app
RUN curl -SL https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-408.0.0-linux-x86_64.tar.gz | tar xzf - -C /opt \
RUN curl -SL https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-459.0.0-linux-x86_64.tar.gz | tar xzf - -C /opt \
&& ln -s /opt/google-cloud-sdk/bin/gsutil /usr/local/bin/gsutil \
&& mkdir -p /var/log/app && chown -R app.app /var/log/app
VOLUME /var/log/app
Expand Down

0 comments on commit a3ab32f

Please sign in to comment.