Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

backfill experiments #3358

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .nuke/build.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@
"Mocha",
"NpmInstall",
"Pack",
"PublicDocs",
"PublicDocsPreview",
"PublishDocs",
"PublishDocsPreview",
"RebuildDb",
"RecordBenchmarks",
"Restore",
Expand Down Expand Up @@ -135,8 +135,8 @@
"Mocha",
"NpmInstall",
"Pack",
"PublicDocs",
"PublicDocsPreview",
"PublishDocs",
"PublishDocsPreview",
"RebuildDb",
"RecordBenchmarks",
"Restore",
Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<PropertyGroup>
<Version>7.26.1</Version>
<Version>8.0.2</Version>
<LangVersion>12.0</LangVersion>
<Authors>Jeremy D. Miller;Babu Annamalai;Oskar Dudycz;Joona-Pekka Kokko</Authors>
<PackageIconUrl>https://martendb.io/logo.png</PackageIconUrl>
Expand Down
2 changes: 2 additions & 0 deletions src/CoreTests/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
using Xunit;
[assembly: CollectionBehavior(DisableTestParallelization = true)]
2 changes: 1 addition & 1 deletion src/CoreTests/CoreTests.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/DaemonTests/DaemonTests.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
Expand Down
2 changes: 2 additions & 0 deletions src/DocumentDbTests/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
using Xunit;
[assembly: CollectionBehavior(DisableTestParallelization = true)]
2 changes: 1 addition & 1 deletion src/DocumentDbTests/DocumentDbTests.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/EventSourceWorker/EventSourceWorker.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Worker">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<UserSecretsId>dotnet-EventSourceWorker-01BE20B5-3C2D-434B-8822-823B56E3F401</UserSecretsId>
<nullable>enable</nullable>
</PropertyGroup>
Expand Down
2 changes: 2 additions & 0 deletions src/EventSourcingTests/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
using Xunit;
[assembly: CollectionBehavior(DisableTestParallelization = true)]
2 changes: 1 addition & 1 deletion src/EventSourcingTests/EventSourcingTests.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/IssueService/IssueService.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/LinqTests/LinqTests.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
</PropertyGroup>
Expand Down
2 changes: 2 additions & 0 deletions src/Marten.AspNetCore.Testing/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
using Xunit;
[assembly: CollectionBehavior(DisableTestParallelization = true)]
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<IsPackable>false</IsPackable>
</PropertyGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/Marten.AspNetCore/Marten.AspNetCore.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<Description>Helpers for Marten-backed AspNetCore applications</Description>
<VersionPrefix>7.0.0-beta.5</VersionPrefix>
<GenerateAssemblyTitleAttribute>true</GenerateAssemblyTitleAttribute>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
Expand Down
2 changes: 1 addition & 1 deletion src/Marten.CommandLine/Marten.CommandLine.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<Description>Command line tooling for Marten</Description>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
Expand Down
2 changes: 1 addition & 1 deletion src/Marten.NodaTime.Testing/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
using Xunit;
[assembly: CollectionBehavior(DisableTestParallelization = false)]
[assembly: CollectionBehavior(DisableTestParallelization = true)]
2 changes: 1 addition & 1 deletion src/Marten.NodaTime.Testing/Marten.NodaTime.Testing.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<RootNamespace>Marten.NodaTimePlugin.Testing</RootNamespace>
</PropertyGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/Marten.NodaTime/Marten.NodaTime.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<Description>NodaTime extension for Marten</Description>
<VersionPrefix>7.0.0-beta.5</VersionPrefix>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<GenerateAssemblyTitleAttribute>true</GenerateAssemblyTitleAttribute>
<GenerateAssemblyDescriptionAttribute>true</GenerateAssemblyDescriptionAttribute>
<GenerateAssemblyProductAttribute>true</GenerateAssemblyProductAttribute>
Expand Down
2 changes: 2 additions & 0 deletions src/Marten.PLv8.Testing/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
using Xunit;
[assembly: CollectionBehavior(DisableTestParallelization = true)]
2 changes: 1 addition & 1 deletion src/Marten.PLv8.Testing/Marten.PLv8.Testing.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>

<IsPackable>false</IsPackable>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/Marten.PLv8/Marten.PLv8.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<Description>Document transforms and patching extension for Marten</Description>
<VersionPrefix>7.0.0-beta.5</VersionPrefix>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<GenerateAssemblyTitleAttribute>true</GenerateAssemblyTitleAttribute>
<GenerateAssemblyDescriptionAttribute>true</GenerateAssemblyDescriptionAttribute>
<GenerateAssemblyProductAttribute>true</GenerateAssemblyProductAttribute>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<Description>Dummy project for test scenario</Description>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<Description>Dummy project for test scenario</Description>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
Expand Down
2 changes: 2 additions & 0 deletions src/Marten.Testing/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
using Xunit;
[assembly: CollectionBehavior(DisableTestParallelization = true)]
2 changes: 1 addition & 1 deletion src/Marten.Testing/Marten.Testing.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks><!--net6.0;net7.0;-->net8.0</TargetFrameworks>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
</PropertyGroup>
Expand Down
15 changes: 13 additions & 2 deletions src/Marten/Events/EventGraph.Actions.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
using System;
using System.Linq;
using JasperFx.Core;
using Marten.Internal.Sessions;

namespace Marten.Events;

public partial class EventGraph
{
internal StreamAction Append(DocumentSessionBase session, Guid stream, params object[] events)
internal StreamAction Append(DocumentSessionBase session, Guid stream, DateTimeOffset? backfillTimestamp = null, params object[] events)
{
EnsureAsGuidStorage(session);

Expand All @@ -22,6 +23,11 @@ internal StreamAction Append(DocumentSessionBase session, Guid stream, params ob
return e;
}).ToArray();

if (backfillTimestamp is not null)
{
wrapped.Each(x => x.Timestamp = backfillTimestamp.Value);
}

if (session.WorkTracker.TryFindStream(stream, out var eventStream))
{
eventStream.AddEvents(wrapped);
Expand All @@ -37,7 +43,7 @@ internal StreamAction Append(DocumentSessionBase session, Guid stream, params ob
return eventStream;
}

internal StreamAction Append(DocumentSessionBase session, string stream, params object[] events)
internal StreamAction Append(DocumentSessionBase session, string stream, DateTimeOffset? backfillTimestamp = null, params object[] events)
{
EnsureAsStringStorage(session);

Expand All @@ -53,6 +59,11 @@ internal StreamAction Append(DocumentSessionBase session, string stream, params
return e;
}).ToArray();

if (backfillTimestamp is not null)
{
wrapped.Each(x => x.Timestamp = backfillTimestamp.Value);
}

if (session.WorkTracker.TryFindStream(stream, out var eventStream))
{
eventStream.AddEvents(wrapped);
Expand Down
30 changes: 15 additions & 15 deletions src/Marten/Events/EventStore.Append.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,33 +7,33 @@ namespace Marten.Events;

internal partial class EventStore
{
public StreamAction Append(Guid stream, IEnumerable<object> events)
public StreamAction Append(Guid stream, IEnumerable<object> events, DateTimeOffset? backfillTimestamp = null)
{
//TODO NRT: We're ignoring null here as to not unintentionally change any downstream behaviour - Replace with null guards in the future.
return Append(stream, events?.ToArray()!);
return Append(stream, backfillTimestamp, events?.ToArray()!);
}

public StreamAction Append(Guid stream, params object[] events)
public StreamAction Append(Guid stream, DateTimeOffset? backfillTimestamp = null, params object[] events)
{
return _store.Events.Append(_session, stream, events);
return _store.Events.Append(_session, stream,backfillTimestamp, events);
}

public StreamAction Append(string stream, IEnumerable<object> events)
public StreamAction Append(string stream, IEnumerable<object> events, DateTimeOffset? backfillTimestamp = null)
{
return Append(stream, events?.ToArray()!);
return Append(stream, backfillTimestamp, events?.ToArray()!);
}

public StreamAction Append(string stream, params object[] events)
public StreamAction Append(string stream, DateTimeOffset? backfillTimestamp = null, params object[] events)
{
return _store.Events.Append(_session, stream, events);
return _store.Events.Append(_session, stream,backfillTimestamp, events);
}

public StreamAction Append(Guid stream, long expectedVersion, IEnumerable<object> events)
public StreamAction Append(Guid stream, long expectedVersion, IEnumerable<object> events, DateTimeOffset? backfillTimestamp = null)
{
return Append(stream, expectedVersion, events?.ToArray()!);
return Append(stream, expectedVersion, backfillTimestamp, events?.ToArray()!);
}

public StreamAction Append(Guid stream, long expectedVersion, params object[] events)
public StreamAction Append(Guid stream, long expectedVersion, DateTimeOffset? backfillTimestamp = null, params object[] events)
{
var eventStream = Append(stream, events);
eventStream.ExpectedVersionOnServer = expectedVersion - eventStream.Events.Count;
Expand All @@ -45,14 +45,14 @@ public StreamAction Append(Guid stream, long expectedVersion, params object[] ev
return eventStream;
}

public StreamAction Append(string stream, long expectedVersion, IEnumerable<object> events)
public StreamAction Append(string stream, long expectedVersion, IEnumerable<object> events, DateTimeOffset? backfillTimestamp = null)
{
return Append(stream, expectedVersion, events?.ToArray()!);
return Append(stream, expectedVersion, backfillTimestamp, events?.ToArray()!);
}

public StreamAction Append(string stream, long expectedVersion, params object[] events)
public StreamAction Append(string stream, long expectedVersion, DateTimeOffset? backfillTimestamp = null, params object[] events)
{
var eventStream = Append(stream, events);
var eventStream = Append(stream, events, backfillTimestamp);
eventStream.ExpectedVersionOnServer = expectedVersion - eventStream.Events.Count;

return eventStream;
Expand Down
14 changes: 7 additions & 7 deletions src/Marten/Events/IEventOperations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,28 @@ public interface IEventOperations
/// </summary>
/// <param name="stream"></param>
/// <param name="events"></param>
StreamAction Append(Guid stream, IEnumerable<object> events);
StreamAction Append(Guid stream, IEnumerable<object> events, DateTimeOffset? backfillTimestamp = null);

/// <summary>
/// Append one or more events in order to an existing stream
/// </summary>
/// <param name="stream"></param>
/// <param name="events"></param>
StreamAction Append(Guid stream, params object[] events);
StreamAction Append(Guid stream, DateTimeOffset? backfillTimestamp = null, params object[] events);

/// <summary>
/// Append one or more events in order to an existing stream
/// </summary>
/// <param name="stream"></param>
/// <param name="events"></param>
StreamAction Append(string stream, IEnumerable<object> events);
StreamAction Append(string stream, IEnumerable<object> events, DateTimeOffset? backfillTimestamp = null);

/// <summary>
/// Append one or more events in order to an existing stream
/// </summary>
/// <param name="stream"></param>
/// <param name="events"></param>
StreamAction Append(string stream, params object[] events);
StreamAction Append(string stream, DateTimeOffset? backfillTimestamp = null, params object[] events);

/// <summary>
/// Append one or more events in order to an existing stream and verify that maximum event id for the stream
Expand All @@ -40,7 +40,7 @@ public interface IEventOperations
/// <param name="stream"></param>
/// <param name="expectedVersion">Expected maximum event version after append</param>
/// <param name="events"></param>
StreamAction Append(Guid stream, long expectedVersion, params object[] events);
StreamAction Append(Guid stream, long expectedVersion, DateTimeOffset? backfillTimestamp = null, params object[] events);

/// <summary>
/// Append one or more events in order to an existing stream and verify that maximum event id for the stream
Expand All @@ -49,7 +49,7 @@ public interface IEventOperations
/// <param name="stream"></param>
/// <param name="expectedVersion">Expected maximum event version after append</param>
/// <param name="events"></param>
StreamAction Append(string stream, long expectedVersion, IEnumerable<object> events);
StreamAction Append(string stream, long expectedVersion, IEnumerable<object> events, DateTimeOffset? backfillTimestamp = null);

/// <summary>
/// Append one or more events in order to an existing stream and verify that maximum event id for the stream
Expand All @@ -58,7 +58,7 @@ public interface IEventOperations
/// <param name="stream"></param>
/// <param name="expectedVersion">Expected maximum event version after append</param>
/// <param name="events"></param>
StreamAction Append(string stream, long expectedVersion, params object[] events);
StreamAction Append(string stream, long expectedVersion, DateTimeOffset? backfillTimestamp = null, params object[] events);

/// <summary>
/// Creates a new event stream based on a user-supplied Guid and appends the events in order to the new stream
Expand Down
2 changes: 1 addition & 1 deletion src/Marten/Events/IEventStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public interface IEventStore: IEventOperations, IQueryEventStore
/// <param name="stream"></param>
/// <param name="expectedVersion">Expected maximum event version after append</param>
/// <param name="events"></param>
StreamAction Append(Guid stream, long expectedVersion, IEnumerable<object> events);
StreamAction Append(Guid stream, long expectedVersion, IEnumerable<object> events, DateTimeOffset? backfillTimestamp = null);

/// <summary>
/// Creates a new event stream based on a user-supplied Guid and appends the events in order to the new stream
Expand Down
Loading
Loading