Skip to content

Commit

Permalink
Merge pull request #29 from exacaster/fix_submit_params_conversion_pr…
Browse files Browse the repository at this point in the history
…oblem

Fix property with minus sign conversion problem
  • Loading branch information
pdambrauskas authored Feb 23, 2022
2 parents 4289c76 + 1ee5002 commit 798b0b0
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.exacaster.lighter.configuration;

import com.exacaster.lighter.spark.SubmitParams;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonProperty.Access;
import io.micronaut.context.annotation.ConfigurationInject;
Expand Down Expand Up @@ -77,6 +78,7 @@ public String toString() {
public static class PermanentSession {

private final String id;
@JsonAlias("submit-params")
private final SubmitParams submitParams;

public PermanentSession(String id, SubmitParams submitParams) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.exacaster.lighter.configuration;

import com.exacaster.lighter.configuration.AppConfiguration.PermanentSession;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.micronaut.core.convert.ConversionContext;
import io.micronaut.core.convert.TypeConverter;
import jakarta.inject.Singleton;
import java.util.Map;
import java.util.Optional;

@Singleton
public class PermanentSessionTypeConverter implements TypeConverter<Map, PermanentSession> {

private final ObjectMapper mapper;

public PermanentSessionTypeConverter(ObjectMapper mapper) {
this.mapper = mapper;
}

/**
* When deserializing configuration, Micronaut by default converts config properties with minus (-) sign
* to camel case values. In that case `spark.kubernetes.driver.secrets.spark-secret` key becomes
* `spark.kubernetes.driver.secrets.sparkSecret` that is unexpected behaviour.
* This converter is a workaround for this problem.
*/
@Override
public Optional<PermanentSession> convert(Map object, Class<PermanentSession> targetType, ConversionContext context) {
return Optional.of(mapper.convertValue(object, PermanentSession.class));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ class AppConfigurationTest extends Specification {
appConfiguration.sessionConfiguration.permanentSessions.size() == 1
appConfiguration.sessionConfiguration.permanentSessions.get(0).id == "permanentId1"
appConfiguration.sessionConfiguration.permanentSessions.get(0).submitParams.conf == [
"spark.kubernetes.namespace": "spark"
"spark.kubernetes.namespace": "spark",
"spark.kubernetes.driver.secrets.spark-secret": "/etc/secret"
]
}

Expand Down
1 change: 1 addition & 0 deletions server/src/test/resources/application-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ lighter:
submit-params:
conf:
"spark.kubernetes.namespace": "spark"
"spark.kubernetes.driver.secrets.spark-secret": "/etc/secret"

0 comments on commit 798b0b0

Please sign in to comment.