Azure / azure-cosmos-dotnet-v3

.NET SDK for Azure Cosmos DB for the core SQL API
MIT License
742 stars 494 forks source link

[v4 SDK] TransactionalBatch support? #1221

Open Mortana89 opened 4 years ago

Mortana89 commented 4 years ago

Can't seem to find the equivalent of Container.CreateTransactionalBatch in the v4 preview SDK. Is this moved to somewhere else, or is this now happening under the bonnet?

ealsur commented 4 years ago

Currently V4 base API is under board review (hence its preview status). Once the base API is accepted and the Types are accepted, we'll move forward and add extra features that exist in V3.

Mortana89 commented 4 years ago

Thanks for the prompt reply! Does this mean V4 is not based on the v3 branch? We're busy upgrading our microservices to .net 3.1, for planning purposes, and without any commitments, when do you think V4 will go GA? We can then take this timeline in account if it's worth waiting for V4, or should focus on v3 for now.

Thanks!

ealsur commented 4 years ago

V4 is based off the V3 branch but the public surface is different at this point. V4 needs to follow Azure SDKs guidelines (for example, V4 uses System.Text.Json instead of Newtonsoft.Json).

Sadly we don't have any official GA dates yet, @kirankumarkolli are there any tentative dates for V4 that can be shared?

ylibrach commented 4 years ago

I wanted to check on this as well, as we are also looking to migrate to v4 and are missing the TransactionalBatch types. Is there any update on what sort of timeframe we're looking at?

ylibrach commented 4 years ago

@ealsur @kirankumarkolli just following up on this to see if there is any ETA?

ealsur commented 4 years ago

We don't have any ETA. @ylibrach Why do you need it on V4? Why can't you use V3? Is there any feature that you want from V4 that is not on V3? If it's System.Text.Json support, you can already do that in V3 with a custom serializer (like the one we have in V4 https://github.com/Azure/azure-cosmos-dotnet-v3/blob/v4/Microsoft.Azure.Cosmos/azuredata/Serializer/CosmosTextJsonSerializer.cs)

Mortana89 commented 4 years ago

We did quite some testing on the V4 preview 3 for now, it's quite solid actually. The reason we decided to invest in v4 is for a few reasons:

So that's what we did, migrate to .NET 3.1, STJ, Cosmos v4 SDK, and we've updated quite some 'boilerplate' code that is shared amongst our microservices. I can say that v4-preview 3 is stable, we didn't encounter many bugs, at least none without a work-around. We only had many issues with serialization, but that was more due to the immaturity of STJ. Hence we also forked Dahomey.JSON to continue working on v4.

We're now actually ready to ship to production slowly. Thanks for that! The only thing remaining is indeed going to an RTM version for v4. The last preview was 3 months ago, so I'm (still!) curious as to when we can use some of the newer features!

ealsur commented 4 years ago

@kirankumarkolli Do you have any comments? Technically V4 is not RTM, so shipping any production code with it is not something I'd recommend.

dennis-yemelyanov commented 3 years ago

@ealsur , is there an example of integrating CosmosTextJsonSerializer.cs with V3? Looks like TextJsonPartitionKeyInternalConverter has a dependency on TextJsonPartitionKeyInternalConverter, which is internal in V3.

Has anyone actually done this before?

It would be great to be able to use both System.Text.Json serializer and transaction support.

xperiandri commented 3 years ago

I use it since March 2020

ealsur commented 3 years ago

I have used System.Text.Json with customer serializer but only for point operations, not transactional batch. For example, https://github.com/ealsur/ondotnet-cosmosdb/blob/master/src/episode1/customserializer/TextJsonSerializer.cs on https://github.com/ealsur/ondotnet-cosmosdb/tree/master/src/episode1/customserializer

moshegutman commented 3 years ago

Are there any updates on this? I was trying to avoid downgrading to v3 just for this feature.