未验证 提交 8fa4eb7d 编写于 作者: K kezhenxu94 提交者: GitHub

Upgrade H2 version to 2.0.202 to fix CVE-2021-23463 (#8332)

上级 8a322e85
...@@ -20,6 +20,8 @@ Release Notes. ...@@ -20,6 +20,8 @@ Release Notes.
* Add the analysis of metrics in Satellite MetricsService. * Add the analysis of metrics in Satellite MetricsService.
* Fix `Can't split endpoint id into 2 parts` bug for endpoint ID. In the TCP in service mesh observability, endpoint * Fix `Can't split endpoint id into 2 parts` bug for endpoint ID. In the TCP in service mesh observability, endpoint
name doesn't exist in TCP traffic. name doesn't exist in TCP traffic.
* Upgrade H2 version to 2.0.202 to fix CVE-2021-23463.
* Extend column name override mechanism working for `ValueColumnMetadata`.
#### UI #### UI
......
...@@ -381,7 +381,7 @@ MPL 2.0 licenses ...@@ -381,7 +381,7 @@ MPL 2.0 licenses
The following components are provided under a MPL 2.0 license. See project link for details. The following components are provided under a MPL 2.0 license. See project link for details.
The text of each license is also included at licenses/LICENSE-[project].txt. The text of each license is also included at licenses/LICENSE-[project].txt.
H2 Database 1.4.196: http://www.h2database.com/html/main.html , MPL 2.0 or EPL 1.0 H2 Database 2.0.202: http://www.h2database.com/html/main.html , MPL 2.0 or EPL 1.0
======================================== ========================================
CC0-1.0 licenses CC0-1.0 licenses
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<graphql-java.version>8.0</graphql-java.version> <graphql-java.version>8.0</graphql-java.version>
<okhttp.version>3.14.9</okhttp.version> <okhttp.version>3.14.9</okhttp.version>
<httpclient.version>4.5.13</httpclient.version> <httpclient.version>4.5.13</httpclient.version>
<h2.version>1.4.196</h2.version> <h2.version>2.0.202</h2.version>
<joda-time.version>2.10.5</joda-time.version> <joda-time.version>2.10.5</joda-time.version>
<zookeeper.version>3.5.7</zookeeper.version> <zookeeper.version>3.5.7</zookeeper.version>
<guava.version>28.1-jre</guava.version> <guava.version>28.1-jre</guava.version>
......
...@@ -32,7 +32,8 @@ import org.apache.skywalking.oap.server.core.query.sql.Function; ...@@ -32,7 +32,8 @@ import org.apache.skywalking.oap.server.core.query.sql.Function;
public enum ValueColumnMetadata { public enum ValueColumnMetadata {
INSTANCE; INSTANCE;
private Map<String, ValueColumn> mapping = new HashMap<>(); private final Map<String, ValueColumn> mapping = new HashMap<>();
private final HashMap<String, String> columnNameOverrideRule = new HashMap<>();
/** /**
* Register the new metadata for the given model name. * Register the new metadata for the given model name.
...@@ -46,11 +47,16 @@ public enum ValueColumnMetadata { ...@@ -46,11 +47,16 @@ public enum ValueColumnMetadata {
mapping.putIfAbsent(modelName, new ValueColumn(valueCName, dataType, function, defaultValue, scopeId)); mapping.putIfAbsent(modelName, new ValueColumn(valueCName, dataType, function, defaultValue, scopeId));
} }
public void overrideColumnName(String oldName, String newName) {
columnNameOverrideRule.put(oldName, newName);
}
/** /**
* Fetch the value column name of the given metrics name. * Fetch the value column name of the given metrics name.
*/ */
public String getValueCName(String metricsName) { public String getValueCName(String metricsName) {
return findColumn(metricsName).valueCName; final String valueCName = findColumn(metricsName).valueCName;
return columnNameOverrideRule.getOrDefault(valueCName, valueCName);
} }
/** /**
...@@ -88,7 +94,7 @@ public enum ValueColumnMetadata { ...@@ -88,7 +94,7 @@ public enum ValueColumnMetadata {
@Getter @Getter
@RequiredArgsConstructor @RequiredArgsConstructor
public class ValueColumn { public static class ValueColumn {
private final String valueCName; private final String valueCName;
private final Column.ValueDataType dataType; private final Column.ValueDataType dataType;
private final Function function; private final Function function;
......
...@@ -166,6 +166,7 @@ public class StorageModels implements IModelManager, ModelCreator, ModelManipula ...@@ -166,6 +166,7 @@ public class StorageModels implements IModelManager, ModelCreator, ModelManipula
public void overrideColumnName(String columnName, String newName) { public void overrideColumnName(String columnName, String newName) {
columnNameOverrideRule.put(columnName, newName); columnNameOverrideRule.put(columnName, newName);
models.forEach(this::followColumnNameRules); models.forEach(this::followColumnNameRules);
ValueColumnMetadata.INSTANCE.overrideColumnName(columnName, newName);
} }
private void followColumnNameRules(Model model) { private void followColumnNameRules(Model model) {
......
...@@ -61,8 +61,9 @@ public class H2AggregationQueryDAO implements IAggregationQueryDAO { ...@@ -61,8 +61,9 @@ public class H2AggregationQueryDAO implements IAggregationQueryDAO {
}); });
} }
sql.append(" group by ").append(Metrics.ENTITY_ID); sql.append(" group by ").append(Metrics.ENTITY_ID);
sql.append(") as T order by value ") sql.append(") as T order by ")
.append(metrics.getOrder().equals(Order.ASC) ? "asc" : "desc") .append(valueColumnName)
.append(metrics.getOrder().equals(Order.ASC) ? " asc" : " desc")
.append(" limit ") .append(" limit ")
.append(metrics.getTopN()); .append(metrics.getTopN());
List<SelectedRecord> topNEntities = new ArrayList<>(); List<SelectedRecord> topNEntities = new ArrayList<>();
...@@ -72,7 +73,7 @@ public class H2AggregationQueryDAO implements IAggregationQueryDAO { ...@@ -72,7 +73,7 @@ public class H2AggregationQueryDAO implements IAggregationQueryDAO {
while (resultSet.next()) { while (resultSet.next()) {
SelectedRecord topNEntity = new SelectedRecord(); SelectedRecord topNEntity = new SelectedRecord();
topNEntity.setId(resultSet.getString(Metrics.ENTITY_ID)); topNEntity.setId(resultSet.getString(Metrics.ENTITY_ID));
topNEntity.setValue(resultSet.getString("value")); topNEntity.setValue(resultSet.getString("result"));
topNEntities.add(topNEntity); topNEntities.add(topNEntity);
} }
} catch (SQLException e) { } catch (SQLException e) {
...@@ -85,7 +86,7 @@ public class H2AggregationQueryDAO implements IAggregationQueryDAO { ...@@ -85,7 +86,7 @@ public class H2AggregationQueryDAO implements IAggregationQueryDAO {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("select * from (select avg(") sql.append("select * from (select avg(")
.append(valueColumnName) .append(valueColumnName)
.append(") value,") .append(") result,")
.append(Metrics.ENTITY_ID) .append(Metrics.ENTITY_ID)
.append(" from ") .append(" from ")
.append(metricsName) .append(metricsName)
......
...@@ -82,8 +82,8 @@ public class H2MetricsQueryDAO extends H2SQLExecutor implements IMetricsQueryDAO ...@@ -82,8 +82,8 @@ public class H2MetricsQueryDAO extends H2SQLExecutor implements IMetricsQueryDAO
sql.toString(), sql.toString(),
parameters.toArray(new Object[0]) parameters.toArray(new Object[0])
)) { )) {
while (resultSet.next()) { if (resultSet.next()) {
return resultSet.getLong("value"); return resultSet.getLong("result");
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
...@@ -94,7 +94,7 @@ public class H2MetricsQueryDAO extends H2SQLExecutor implements IMetricsQueryDAO ...@@ -94,7 +94,7 @@ public class H2MetricsQueryDAO extends H2SQLExecutor implements IMetricsQueryDAO
protected StringBuilder buildMetricsValueSql(String op, String valueColumnName, String conditionName) { protected StringBuilder buildMetricsValueSql(String op, String valueColumnName, String conditionName) {
return new StringBuilder( return new StringBuilder(
"select " + Metrics.ENTITY_ID + " id, " + op + "(" + valueColumnName + ") value from " + conditionName + " where "); "select " + Metrics.ENTITY_ID + " id, " + op + "(" + valueColumnName + ") result from " + conditionName + " where ");
} }
@Override @Override
......
...@@ -56,6 +56,7 @@ public class H2TableInstaller extends ModelInstaller { ...@@ -56,6 +56,7 @@ public class H2TableInstaller extends ModelInstaller {
super(client, moduleManager); super(client, moduleManager);
this.maxSizeOfArrayColumn = maxSizeOfArrayColumn; this.maxSizeOfArrayColumn = maxSizeOfArrayColumn;
this.numOfSearchableValuesPerTag = numOfSearchableValuesPerTag; this.numOfSearchableValuesPerTag = numOfSearchableValuesPerTag;
overrideColumnName("value", "value_");
} }
@Override @Override
......
...@@ -22,6 +22,7 @@ import javax.persistence.Column; ...@@ -22,6 +22,7 @@ import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -29,6 +30,7 @@ import lombok.RequiredArgsConstructor; ...@@ -29,6 +30,7 @@ import lombok.RequiredArgsConstructor;
@Data @Data
@Entity @Entity
@Table(name = "users")
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@RequiredArgsConstructor @RequiredArgsConstructor
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
<jupeter.version>5.6.0</jupeter.version> <jupeter.version>5.6.0</jupeter.version>
<jackson.version>2.9.7</jackson.version> <jackson.version>2.9.7</jackson.version>
<guava.version>30.1.1-jre</guava.version> <guava.version>30.1.1-jre</guava.version>
<h2.version>1.4.199</h2.version> <h2.version>2.0.202</h2.version>
<mysql.version>8.0.13</mysql.version> <mysql.version>8.0.13</mysql.version>
<lombok.version>1.18.20</lombok.version> <lombok.version>1.18.20</lombok.version>
<kafka-clients.version>2.4.1</kafka-clients.version> <kafka-clients.version>2.4.1</kafka-clients.version>
......
...@@ -55,7 +55,7 @@ gson-2.8.6.jar ...@@ -55,7 +55,7 @@ gson-2.8.6.jar
gson-fire-1.8.5.jar gson-fire-1.8.5.jar
guava-28.1-jre.jar guava-28.1-jre.jar
guice-4.1.0.jar guice-4.1.0.jar
h2-1.4.196.jar h2-2.0.202.jar
httpasyncclient-4.1.3.jar httpasyncclient-4.1.3.jar
httpclient-4.5.13.jar httpclient-4.5.13.jar
httpcore-4.4.13.jar httpcore-4.4.13.jar
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册