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

issue 2283 - eliminate redundant reads during ingestion #2426

Merged
merged 2 commits into from
May 26, 2021

Conversation

punktilious
Copy link
Collaborator

Signed-off-by: Robin Arnold robin.arnold23@ibm.com

Signed-off-by: Robin Arnold <robin.arnold23@ibm.com>
@punktilious punktilious requested review from lmsurpre, JohnTimm and tbieste and removed request for michaelwschroeder May 25, 2021 16:47
Resource contextResource) throws Exception {
return doRead(type, id, throwExcOnNull, includeDeleted, contextResource, null);
}

@Override
public Resource doRead(String type, String id, boolean throwExcOnNull, boolean includeDeleted,
public SingleResourceResult<? extends Resource> doRead(String type, String id, boolean throwExcOnNull, boolean includeDeleted,
Copy link
Member

Choose a reason for hiding this comment

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

Do we still need to pass includeDeleted now that we have the isDeleted marker in the response?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It would be possible to refactor the entire handling of deleted status, but this is a much bigger task. Currently the persistence layer will throw an exception to signal the resource has been deleted. Handling this without using an exception is non-trivial.

Copy link
Member

Choose a reason for hiding this comment

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

Currently the persistence layer will throw an exception to signal the resource has been deleted.

but only conditionally, based on this flag.

I guess was was hoping we could maybe get away with only breaking this method signature once and remove includeDeleted now. I'm fine with saving that for "future work" and I agree its probably not a priority.

@@ -392,6 +393,9 @@ private FHIRRestOperationResponse doPatchOrUpdate(String type, String id, FHIRPa
} else {
id = newResource.getId();
}

// No match, so deletion status doesn't matter
isDeleted = false;
Copy link
Contributor

Choose a reason for hiding this comment

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

The boolean is already going to be false by default, but I guess it doesn't hurt to do this for clarity (same on line 415) along with the comment.

Copy link
Member

Choose a reason for hiding this comment

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

yeah, i actually prefer explicitly initializing it (even though it is redundant)...just one less thing to remember :-)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Actually it's not initialized on purpose:

        boolean isDeleted; // stash the deleted status of the resource when we first read it

I do this intentionally to make sure I set it in each of the if/then/else paths. If I miss a path, the compiler will catch it.

Copy link
Member

Choose a reason for hiding this comment

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

I think that is true for Boolean fields, but is it true for booleans?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Default is false if it's a member of the class. But for local variables in the method, default is unassigned (Eclipse will complain too if you try to use it without assigning a value).

Signed-off-by: Robin Arnold <robin.arnold23@ibm.com>
Copy link
Member

@lmsurpre lmsurpre left a comment

Choose a reason for hiding this comment

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

LGTM

@punktilious punktilious merged commit f3ed28e into main May 26, 2021
@punktilious punktilious deleted the robin-perf-eval branch May 26, 2021 02:49
tbieste pushed a commit that referenced this pull request Jun 9, 2021
issue 2283 - eliminate redundant reads during ingestion
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants