Hi Brian,

Hope you had a good weekend!

I’d like to confirm the exact behavior when rolling back from *Prometheus 
v3.x* (where *FormatV3 TSDB* is generated) to a *pre-v2.55 version*, such 
as *v2.54.1*.

The *v3 migration guide* states:

"... you will only be able to downgrade to v2.55, not lower, without losing 
your TSDB persistent data."

This gives me the impression that *downgrading to v2.54.1 is still possible*, 
but I’d appreciate clarification on the expected behavior:

   1. *Would Prometheus v2.54.1 start after rollback, ignoring / losing 
   FormatV3 TSDB data, while FormatV2 blocks (if present) remain intact?*
   2. *Or is downgrading to v2.54.1 entirely unsupported, e.g. Prometheus 
   v2.54.1 won't start at all?*

>From reviewing the source code, this block:
🔗 *db.go#L1600-L1615 
<https://github.com/prometheus/prometheus/blob/main/tsdb/db.go#L1600-L1615>*
suggests that *Prometheus may fail even though openBlocks() returns OK with 
FormatV3 blocks put into corrupted*. Could you confirm if this is the 
intended behavior?
Thanks!

Best regards
Gavine
On Tuesday, 28 January 2025 at 11:23:12 am UTC+11 Jian Xue wrote:

> Hey Brian,
>
> Thanks for the links — they are exactly what we’ve been referring to.
>
> It’s great to hear that 'in principle, it could still be compatible as far 
> back as Prometheus 2.15.' If I’m interpreting this correctly, our initial 
> thought should work, right? Specifically, simply changing the version from 
> 3 to 2 in the index file for a V3-formatted TSDB block should make it 
> recognizable and properly handled by Prometheus versions prior to 2.55, 
> going back to 2.15.  Of course, this is theoretical, and proper testing 
> will be necessary once Prometheus releases a version that generates 
> V3-formatted TSDB blocks.
>
> Bumping the version is absolutely justified given the breaking changes in 
> the format. We are, however, seeking a feasible solution to meet our 
> requirements — enabling rollback from Prometheus v3 to a version prior to 
> v2.55 (though not as old as 2.15).
>
> Thanks!
> Best regards
> Gavine
>
> On Tue, 28 Jan 2025 at 00:20, 'Brian Candler' via Prometheus Users <
> [email protected]> wrote:
>
>> The release notes for v2.55 describe this as an "upcoming index v3", and 
>> links to
>> https://github.com/prometheus/prometheus/pull/14934
>> which in turn links to
>> https://github.com/prometheus/prometheus/issues/14749
>>
>> That has the full details of what's compatible. If I read this correctly, 
>> the proposal is to remove some obsolete fields. Once the format change has 
>> been made (and it hasn't yet), in principle it could still be compatible as 
>> far back as prometheus 2.15.
>>
>> However, not only prometheus reads these chunk files (there's also 
>> thanos, mimir, ...) so good engineering practice says that along with 
>> changing the format, the version number will be bumped.
>>
>> On Friday, 24 January 2025 at 13:24:33 UTC Gavine Xue wrote:
>>
>>> Hi Brian,
>>>
>>> Thanks for your prompt reply.
>>>
>>> We were thinking the same — 'it's fairly obvious that won't work.' 
>>> However, when we quickly reviewed the changes in v2.55.0, we noticed that 
>>> it primarily makes FormatV3 recognizable while applying the same logic as 
>>> FormatV2 (Backward compatibility with upcoming index v3 · 
>>> prometheus/prometheus@5ccb069 · GitHub 
>>> <https://github.com/prometheus/prometheus/commit/5ccb0694146d666e49068e82c159300fedef6b76>
>>>  ). 
>>> Other changes under the tsdb folder seem irrelevant (though we could be 
>>> mistaken, as we didn’t dive into the details).
>>>
>>> Additionally, Prometheus V2, starting from some versions, has already 
>>> stopped reading/parsing Label Index 1...N and the Label Index Table — both 
>>> of which are removed in Format V3. All this makes us wonder if simply 
>>> changing the version number would suffice.
>>>
>>> Are there any other changes in v2.55.0 that we should inspect further?
>>>
>>> Another question: Have we decided which v3 version will make this change 
>>> effective? The current v3 is still generating FormatV2 TSDB. 
>>> Thanks!
>>>
>>> Best regards
>>> Gavine
>>>
>>> On Friday, 24 January 2025 at 7:49:46 pm UTC+11 Brian Candler wrote:
>>>
>>>> On Monday, 20 January 2025 at 13:32:11 UTC Harpreet Rekhi wrote:
>>>>
>>>> Two steps rollback is also not supported ? Like rollback from v3.x to 
>>>> v2.55 and then rollback from v2.55 to v2.53 without breaking the storage 
>>>> format or storage compatibility?
>>>>
>>>>
>>>> That is exactly what Ben said. v2.55 knows how to work with the data 
>>>> format from v3, but will not convert it back to the older format.
>>>>
>>>> It sounds to me like you would be best served by staying on the LTS 
>>>> version v2.53, which still has bug and security fix support.  Why do you 
>>>> want to run anything later?
>>>>
>>>> If you *absolutely* need new features introduced in later versions, 
>>>> then you will have to remain between versions v2.55 and v3.x - as there is 
>>>> no rollback to anything earlier than v2.55 without losing data. But that's 
>>>> fine, because if you *need* those new features then you wouldn't be able 
>>>> to 
>>>> rollback anyway.  Bear in mind that you will also have to keep upgrading 
>>>> to 
>>>> all v3.x versions to get bugfixes and security fixes, until the next LTS 
>>>> release comes along.
>>>>
>>>> If you just want to test the newer versions then do that on a 
>>>> non-production system where you know you'll never need to roll back prior 
>>>> to v2.55
>>>>
>>>> Gavine Xue wrote:
>>>> > do you foresee any issues if we develop a conversion tool to change 
>>>> the version number in index files back to 2 before a rollback?
>>>>
>>>> I think it's fairly obvious that won't work. If the *only* difference 
>>>> between the data formats was the version number, then there would have 
>>>> been 
>>>> no need for a change in the version number.  The change in the version 
>>>> number implies that the way that the data is stored has been changed in an 
>>>> incompatible way.
>>>>
>>> -- 
>>
> You received this message because you are subscribed to the Google Groups 
>> "Prometheus Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>>
> To view this discussion visit 
>> https://groups.google.com/d/msgid/prometheus-users/1fa127fb-9c9f-4018-9859-18106cb8354bn%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/prometheus-users/1fa127fb-9c9f-4018-9859-18106cb8354bn%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/prometheus-users/aad36298-33ae-4291-9ec2-c4d0a6782efan%40googlegroups.com.

Reply via email to