Skip to content

Commit

Permalink
transition to System.Text.Json
Browse files Browse the repository at this point in the history
  • Loading branch information
stasput committed Nov 15, 2024
1 parent 1a1fa22 commit 2b5bc58
Show file tree
Hide file tree
Showing 40 changed files with 1,234 additions and 1,355 deletions.
2 changes: 1 addition & 1 deletion .start-all.cmd
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
wsl -u root sh -c "service docker status || (service docker start && echo 'artificially waiting 20s for docker to warmup...' && sleep 20s)"
wsl docker-compose -f docker-compose.linux.yaml up -d --build
wsl docker-compose -f docker-compose.yaml up -d --build
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Changelog

## v4.0.0 - 2024.11.15
- System.Text.Json is used instead Newtonsoft. That's why the whole serialization has been changed.

## v3.2.0 - 2024.03.05
- always render task tree link; render action buttons based on server response
- add same logic to details cards in table
Expand Down
27 changes: 13 additions & 14 deletions Cassandra.DistributedTaskQueue.Monitoring.TestService/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,22 @@

using SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Json;

namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.TestService
namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.TestService;

public class Startup
{
public class Startup
public void ConfigureServices(IServiceCollection services)
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers().AddNewtonsoftJson(options => options.SerializerSettings.Converters.Add(new LongToStringConverter()));
services.AddSingleton<IControllerFactory>(new GroboControllerFactory());
}
services.AddControllers().AddJsonOptions(options => options.JsonSerializerOptions.Converters.Add(new LongToStringConverter()));
services.AddSingleton<IControllerFactory>(new GroboControllerFactory());
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();

app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapControllers());
}
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapControllers());
}
}
Original file line number Diff line number Diff line change
@@ -1,33 +1,28 @@
using JetBrains.Annotations;

using Newtonsoft.Json;
using System.Text.Json.Serialization;

using SkbKontur.Cassandra.DistributedTaskQueue.Cassandra.Entities;

namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api
namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api;

public class RtqMonitoringSearchRequest
{
public class RtqMonitoringSearchRequest
{
[NotNull]
[JsonProperty("enqueueTimestampRange")]
public TimestampRange EnqueueTimestampRange { get; set; }

[CanBeNull]
[JsonProperty("queryString")]
public string QueryString { get; set; }

[CanBeNull]
[JsonProperty("states")]
public TaskState[] States { get; set; }

[CanBeNull, ItemNotNull]
[JsonProperty("names")]
public string[] Names { get; set; }

[JsonProperty("offset")]
public int? Offset { get; set; }

[JsonProperty("count")]
public int? Count { get; set; }
}
[JsonPropertyName("enqueueTimestampRange")]
public TimestampRange EnqueueTimestampRange { get; set; }

#nullable enable
[JsonPropertyName("queryString")]
public string? QueryString { get; set; }

[JsonPropertyName("states")]
public TaskState[]? States { get; set; }

#nullable disable
[JsonPropertyName("names")]
public string[] Names { get; set; }

[JsonPropertyName("offset")]
public int? Offset { get; set; }

[JsonPropertyName("count")]
public int? Count { get; set; }
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
using JetBrains.Annotations;
using System.Text.Json.Serialization;

using Newtonsoft.Json;
namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api;

namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api
public class RtqMonitoringSearchResults
{
public class RtqMonitoringSearchResults
{
[JsonProperty("totalCount")]
public long TotalCount { get; set; }
[JsonPropertyName("totalCount")]
public long TotalCount { get; set; }

[NotNull, ItemNotNull]
[JsonProperty("taskMetas")]
public RtqMonitoringTaskMeta[] TaskMetas { get; set; }
}
#nullable disable
[JsonPropertyName("taskMetas")]
public RtqMonitoringTaskMeta[] TaskMetas { get; set; }
}
115 changes: 55 additions & 60 deletions Cassandra.DistributedTaskQueue.Monitoring/Api/RtqMonitoringTaskMeta.cs
Original file line number Diff line number Diff line change
@@ -1,67 +1,62 @@
using JetBrains.Annotations;
#nullable disable

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.Text.Json.Serialization;

using SkbKontur.Cassandra.DistributedTaskQueue.Cassandra.Entities;
using SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Json;

namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api
namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api;

public class RtqMonitoringTaskMeta
{
public class RtqMonitoringTaskMeta
{
[NotNull]
[JsonProperty("name")]
public string Name { get; set; }

[NotNull]
[JsonProperty("id")]
public string Id { get; set; }

[JsonProperty("ticks")]
[JsonConverter(typeof(LongToStringConverter))]
public long Ticks { get; set; }

[JsonProperty("minimalStartTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long MinimalStartTicks { get; set; }

[JsonProperty("startExecutingTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? StartExecutingTicks { get; set; }

[JsonProperty("finishExecutingTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? FinishExecutingTicks { get; set; }

[JsonProperty("lastModificationTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? LastModificationTicks { get; set; }

[JsonProperty("expirationTimestampTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? ExpirationTimestampTicks { get; set; }

[JsonProperty("expirationModificationTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? ExpirationModificationTicks { get; set; }

[JsonProperty("executionDurationTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? ExecutionDurationTicks { get; set; }

[JsonProperty("state")]
[JsonConverter(typeof(StringEnumConverter))]
public TaskState State { get; set; }

[CanBeNull]
[JsonProperty("taskActions")]
public TaskActions TaskActions { get; set; }

[JsonProperty("attempts")]
public int Attempts { get; set; }

[JsonProperty("parentTaskId")]
public string ParentTaskId { get; set; }
}
[JsonPropertyName("name")]
public string Name { get; set; }

[JsonPropertyName("id")]
public string Id { get; set; }

[JsonPropertyName("ticks")]
[JsonConverter(typeof(LongToStringConverter))]
public long Ticks { get; set; }

[JsonPropertyName("minimalStartTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long MinimalStartTicks { get; set; }

[JsonPropertyName("startExecutingTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? StartExecutingTicks { get; set; }

[JsonPropertyName("finishExecutingTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? FinishExecutingTicks { get; set; }

[JsonPropertyName("lastModificationTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? LastModificationTicks { get; set; }

[JsonPropertyName("expirationTimestampTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? ExpirationTimestampTicks { get; set; }

[JsonPropertyName("expirationModificationTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? ExpirationModificationTicks { get; set; }

[JsonPropertyName("executionDurationTicks")]
[JsonConverter(typeof(LongToStringConverter))]
public long? ExecutionDurationTicks { get; set; }

[JsonPropertyName("state")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public TaskState State { get; set; }

[JsonPropertyName("taskActions")]
public TaskActions TaskActions { get; set; }

[JsonPropertyName("attempts")]
public int Attempts { get; set; }

[JsonPropertyName("parentTaskId")]
public string ParentTaskId { get; set; }
}
Original file line number Diff line number Diff line change
@@ -1,31 +1,26 @@
using JetBrains.Annotations;
#nullable disable

using Newtonsoft.Json;
using System.Text.Json.Serialization;

using SkbKontur.Cassandra.DistributedTaskQueue.Handling;
using SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Json;

namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api
namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api;

public class RtqMonitoringTaskModel
{
public class RtqMonitoringTaskModel
{
public static RtqMonitoringTaskModel Empty => new RtqMonitoringTaskModel();

[NotNull]
[JsonProperty("taskMeta")]
public RtqMonitoringTaskMeta TaskMeta { get; set; }

[NotNull]
[JsonProperty("taskData")]
[JsonConverter(typeof(TaskDataJsonSerializer))]
public IRtqTaskData TaskData { get; set; }

[NotNull, ItemNotNull]
[JsonProperty("childTaskIds")]
public string[] ChildTaskIds { get; set; }

[NotNull, ItemNotNull]
[JsonProperty("exceptionInfos")]
public string[] ExceptionInfos { get; set; }
}
public static RtqMonitoringTaskModel Empty => new();

[JsonPropertyName("taskMeta")]
public RtqMonitoringTaskMeta TaskMeta { get; set; }

[JsonPropertyName("taskData")]
[JsonConverter(typeof(TaskDataJsonSerializer))]
public IRtqTaskData TaskData { get; set; }

[JsonPropertyName("childTaskIds")]
public string[] ChildTaskIds { get; set; }

[JsonPropertyName("exceptionInfos")]
public string[] ExceptionInfos { get; set; }
}
6 changes: 3 additions & 3 deletions Cassandra.DistributedTaskQueue.Monitoring/Api/TaskActions.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using Newtonsoft.Json;
using System.Text.Json.Serialization;

namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api;

public class TaskActions
{
[JsonProperty("canCancel")]
[JsonPropertyName("canCancel")]
public bool CanCancel { get; set; }

[JsonProperty("canRerun")]
[JsonPropertyName("canRerun")]
public bool CanRerun { get; set; }
}
25 changes: 11 additions & 14 deletions Cassandra.DistributedTaskQueue.Monitoring/Api/TimestampRange.cs
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
using JetBrains.Annotations;
#nullable disable

using Newtonsoft.Json;
using System.Text.Json.Serialization;

using SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Json;
using SkbKontur.Cassandra.TimeBasedUuid;

namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api
namespace SkbKontur.Cassandra.DistributedTaskQueue.Monitoring.Api;

public class TimestampRange
{
public class TimestampRange
{
[NotNull]
[JsonProperty("lowerBound")]
[JsonConverter(typeof(TimestampJsonConverter))]
public Timestamp LowerBound { get; set; }
[JsonPropertyName("lowerBound")]
[JsonConverter(typeof(TimestampJsonConverter))]
public Timestamp LowerBound { get; set; }

[NotNull]
[JsonProperty("upperBound")]
[JsonConverter(typeof(TimestampJsonConverter))]
public Timestamp UpperBound { get; set; }
}
[JsonPropertyName("upperBound")]
[JsonConverter(typeof(TimestampJsonConverter))]
public Timestamp UpperBound { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="SkbKontur.EventFeeds" Version="1.1.3" />
<PackageReference Include="System.Text.Json" Version="9.0.0-rc.2.24473.5" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading

0 comments on commit 2b5bc58

Please sign in to comment.