I think your problem has been solved in Prometheus v2.53.5:

[ENHANCEMENT] TSDB: Add backward compatibility with the upcoming TSDB block 
index v3 #16762 <https://github.com/prometheus/prometheus/pull/16762>

On Tuesday, 4 February 2025 at 01:10:46 UTC Gavine Xue wrote:

> Thanks, Brian, for the heads-up.
>
> Hi Ben,
>
> Could you please help clarify the following questions?
>
>    1. 
>    
>    Regarding the statement in the V3 migration guide: *"... you will only 
>    be able to downgrade to v2.55, not lower, without losing your TSDB 
>    persistent data." *— does this mean that downgrading from v3.x to a 
>    pre-v2.55.0 version is completely unsupported, or is it technically 
>    possible but would result in the loss of FormatV3 data after rollback? 
> This 
>    distinction is crucial for our customers.
>    2. 
>    
>    Is there a version — e.g., in a dev branch — where this change is 
>    already effective (i.e., generating FormatV3 TSDB data) so that we can 
> test 
>    it?
>    
> Thanks!
>
> Best regards
> Gavine
>
> On Monday, 3 February 2025 at 7:56:41 pm UTC+11 Brian Candler wrote:
>
>> I am not a developer of prometheus, just a satisfied user who sometimes 
>> shares some PromQL tips.
>>
>> I do know that Ben Kochie is a major figure in the project, therefore I 
>> suggest you follow his advice, and the documented advice, which I would 
>> summarise as: "Don't do that".
>>
>> It is of course open source, and you are free to do what you like with 
>> it, but if you don't use it in the recommended way then you support 
>> yourself. I think that's fair.
>>
>> On Sunday, 2 February 2025 at 23:23:28 UTC Gavine Xue wrote:
>>
>>> 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/9b1fddc4-a260-479a-be68-4ab2e1aa6537n%40googlegroups.com.

Reply via email to