Skip to content

[359] remove use of plugin-driven access time tracking#361

Open
trel wants to merge 7 commits intoirods:mainfrom
trel:359.m
Open

[359] remove use of plugin-driven access time tracking#361
trel wants to merge 7 commits intoirods:mainfrom
trel:359.m

Conversation

@trel
Copy link
Copy Markdown
Member

@trel trel commented Jan 20, 2026

saw a complete local run pass. <-- edit: this was not true. reading is important.

removed lots of tests, no new tests, updated some tests.

haven't seen it green in GHA, yet.

Copy link
Copy Markdown
Contributor

@alanking alanking left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to semantic versioning, I believe that removal of the access_time AVU constitutes a major release as existing deployments may be relying on it in custom violating queries. That would mean that this change moves the plugin to 6.0.0. Just saying that out loud.

Comment thread packaging/test_plugin_unified_storage_tiering.py
Comment thread src/storage_tiering.cpp Outdated
Comment thread packaging/test_plugin_unified_storage_tiering.py
Comment thread README.md
@korydraughn
Copy link
Copy Markdown
Collaborator

According to semantic versioning, I believe that removal of the access_time AVU constitutes a major release as existing deployments may be relying on it in custom violating queries. That would mean that this change moves the plugin to 6.0.0. Just saying that out loud.

That's correct.


@trel Have you thought about whether iRODS 5's atime implementation aligns with storage tiering's original behavior and requirements?

How do the various atime grid configuration options affect storage tiering?

Are we losing anything by switching to the atime information managed by the server?

The server manages atime on the replica level, but storage tiering manages atime on the logical level. How does that affect the plugin?

@trel
Copy link
Copy Markdown
Member Author

trel commented Jan 20, 2026

good questions...

the most relevant option appears to be resolution_in_seconds. defaulting to 24h means that default installations will not be able to set their actual/practical tiering behavior to less/faster than that.

the logical/physical distinction... i think shouldn't matter... but we should probably think through that out loud a bit more together.

Comment thread src/storage_tiering.cpp Outdated
@trel
Copy link
Copy Markdown
Member Author

trel commented Jan 21, 2026

local tests are NOT green. apologies. need to discuss the move from a migration flag on an existing AVU to not being able to assume any AVUs... might have to move to genquery2 for the use of NOT or perhaps EXCEPT...

@trel trel marked this pull request as draft January 21, 2026 14:17
@trel
Copy link
Copy Markdown
Member Author

trel commented Feb 10, 2026

the problem was a comparison of our zero-padded timestamps in the catalog to the non-zero-padded timestamps in this plugin. padding consistently made the comparison correct and the tests pass again.

Comment thread packaging/test_plugin_unified_storage_tiering.py
Comment thread src/main.cpp
Comment thread src/main.cpp
@trel trel marked this pull request as ready for review March 23, 2026 18:22
@trel
Copy link
Copy Markdown
Member Author

trel commented Mar 23, 2026

added the mtime check. clang-format unhappy, i think irrationally. not sure where the other checks went.

@trel
Copy link
Copy Markdown
Member Author

trel commented Mar 23, 2026

i removed the offending whitespace, and now it's MORE angry... the rest is green.

@alanking
Copy link
Copy Markdown
Contributor

i removed the offending whitespace, and now it's MORE angry... the rest is green.

It seems that file got the tab treatment a little prematurely (my bad). Just make it all tabs and ignore clang-format for that file.

@trel
Copy link
Copy Markdown
Member Author

trel commented Mar 24, 2026

that's the fun part... i believe it is already all tabs.

@alanking
Copy link
Copy Markdown
Contributor

that's the fun part... i believe it is already all tabs.

Right, that's what I mean. Seeing as the diff in src/configuration.cpp is just a deletion, I would just put back the tabs and ignore clang-format for that file (or, at the very least, ignore its insistence on using spaces).

Copy link
Copy Markdown
Contributor

@alanking alanking left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice find.

Comment thread src/storage_tiering.cpp Outdated
@trel
Copy link
Copy Markdown
Member Author

trel commented Mar 26, 2026

confirmed my test was working, but because i had tweaked the tier time, the other tests in the same class failed. have now gone back to the original tier time and adjusted my test edits... passing at bench... awaiting greens...

@trel
Copy link
Copy Markdown
Member Author

trel commented Apr 13, 2026

have reviewed all threads....

agree this needs to be a major release. it has major changes internally, it requires admins to update/revisit their specificqueries, and should ship with a script/documentation for removing the atime AVUs the currently-shipped plugin puts everywhere.

so, needing some documentation and then this is ready.

@korydraughn
Copy link
Copy Markdown
Collaborator

I think it's worth going through the training slides to see how things have changed. It might reveal something which isn't captured by this work.

@trel
Copy link
Copy Markdown
Member Author

trel commented Apr 18, 2026

auditing the ugm2025 storage tiering training slides... i see five that need updates...

  • slide 4 - mention/description of the AVU itself
  • slide 12 - the default query needs updating
  • slide 16 - the access time attribute needs to be removed
  • slide 25 - results need to not have access time in the AVUs
  • slide 32 - default query again, and description needs update

Copy link
Copy Markdown
Contributor

@alanking alanking left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems good to me.

@trel
Copy link
Copy Markdown
Member Author

trel commented Apr 20, 2026

ready to squash?

@alanking
Copy link
Copy Markdown
Contributor

Sure, let's squash

@trel
Copy link
Copy Markdown
Member Author

trel commented Apr 20, 2026

squashed for high-quality minus.

Copy link
Copy Markdown
Contributor

@alanking alanking left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please let @korydraughn have another look and then I think this is good to go.

Copy link
Copy Markdown
Collaborator

@korydraughn korydraughn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't spot anything unusual.

Let's hold on merging this until after UGM.

Comment thread README.md
Comment thread README.md Outdated
Comment thread README.md Outdated
Comment thread README.md Outdated
Comment thread README.md Outdated
Comment thread README.md Outdated
Comment thread README.md
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The README does not highlight that writing to a data object no longer triggers a restage.

The admin now has to think about mtime if they care about writes. Keep in mind that only applies to tiering out.

Consider linking to the 5.0.0 documentation for atime at docs.irods.org.

Comment thread src/storage_tiering.cpp
Comment on lines +502 to +503
fmt::format("select DATA_NAME, COLL_NAME, USER_NAME, USER_ZONE, DATA_REPL_NUM where "
"DATA_ACCESS_TIME < '{}' and DATA_MODIFY_TIME < '{}' and DATA_RESC_ID in ({})",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is unrelated to the work in this PR, but we might need to revisit this catch-block. If an exception is caught by this block, the plugin uses a backup/fallback violating query. What if the admin uses criteria that is significantly different from the fallback?

That doesn't seem correct. Thoughts?

iRODS 5.0.0 introduced server-tracked access time for every replica.

The access time tracking provided by this repository is no longer needed
and has been removed.

If a deployment had a custom query defined that checked this AVU-based
access time, it will need to be updated as any new objects will not
have that metadata added and available for matching.  Check the README.md
for an example.

This commit removes the access_time_attribute from the plugin configuration.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants