-
Notifications
You must be signed in to change notification settings - Fork 13
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
Extend Find-IshDocumentObj and Find-IshPublicationOutput cmdlets for server-side out-of-memory protection by time slicing #49
Comments
…PublicationOutput work without parameters potentially returning full database, ROLLING BACK the explicit last-day-MetadataFilter that was added in this branch. Created separate issue #49 for tracking
* Extended Get-IshTypeFieldDefinition with ISHBackgroundTask type * #45 Basic skeleton of Get-IshBackgroundTask is there, all code requires clean up. Up next, the IshBackgroundTask xml parsing and console formatting. * #45 Basic formatting, basic test, and xml object parsing is there. Next check and test all cmdlet parameters * #45 Get-IshMetadataField accepts IshBackgroundTask * #45 Get-IshBackgroundTask is there with doubtfully useful pipelining with test. * #45 Corrected test and added Get-Help * #45 More sturdy test * #45 Introduced NameHelper where I chose underscore as separator. Currently Wrap-function is in the ISHType cmdlet like ISHBackgroundTask (to push down to TrisoftCmdlet all CardField type objects need a generic root class) * #45 Review by hvermeiren on IsBasic and IsDescriptive for ISHBackgroundTask. Removed object.EventType. Implemented 13.0.2+ check. Wide format table layout. * #45 IshSession is no longer mandatory. New-IshSession will save in SessionStore every time. Next optional -RequestedMetadata transformation like Descriptive/Basic/System/All * #45 Parameter value autocompletion on field Name and LovId now respects SessionState * #45 Optional -RequestedMetadata that now initializes to IShSession.DefaultRequestedMetadata (defaults to Basic, old behavior Descriptive, don't care about performance use All). Tweaked some tests. Up next Get-IshEvents over IshTypeFieldSetup or IshSession not mandatory everywhere... * #46 Optional IshSession in cmdlets for Application, Baseline and Field... slower test though because of superfluous New-IshSession * #46 Optional IshSession in cmdlets for Application, Baseline, Field, DocumentObj...More Get-Help examples... but slower tests though, because of superfluous New-IshSession * #46 Optional IshSession in cmdlets for Application, BackgroundTask, Baseline, DocumentObj, EDT, Event, Feature, Field, Folder, ListOfValues, OutputFormat,...More Get-Help examples... but slower tests though, because of superfluous New-IshSession * #46 Optional IshSession in cmdlets for Application, BackgroundTask, Baseline, DocumentObj, EDT, Event, Feature, Field, Folder, ListOfValues, OutputFormat, PublicationOutput, Settings, User, UserGroup, UserRole...More Get-Help examples... but slower tests though, because of superfluous New-IshSession * #48 Implemented WrapAsPSObjectAndAddNoteProperties-Switch-block for DocumentObj... next is Format.ps1xml (see Find-IshDocumentObj example)... then all other classes * #48 Removed WrapAsPSObjectAndAddNoteProperties-Switch-block for BackgroundTask/DocumentObj... implemented IshBaseObject allowing a one-time implementation of WriteObject in TrisoftCmdlt. Next is Format.ps1xml (see Find-IshDocumentObj example)... then all other classes * #48 TrisoftCmdlet::WriteObject using IshBaseObject implemented for BackgroundTask, Baseline, DocumentObj. Next is Format.ps1xml (see Find-IshDocumentObj example)... then all other classes * #48 TrisoftCmdlet::WriteObject using IshBaseObject implemented for BackgroundTask, Baseline, DocumentObj, EDT, Folder, OutputFormat, PublicationOutput, User, UserGroup, UserRole ...Next is more derived IshObject types to allow Format.ps1xml specialized rendering (see Find-IshDocumentObj example)... and Get-IshEvent * #46 Optional IshSession in Get-IshTypeFieldDefinition * #48 TrisoftCmdlet::WriteObject strips hyphens from a field name like DOC-LANGUAGE to avoid clumsy code like $ishObject.'doc-language' ...Next is more derived IshObject types to allow Format.ps1xml specialized rendering (see Find-IshDocumentObj example)... and Get-IshEvent * #46 Optional IshSession makes single Find-IshDocumentObj and Find-IshPublicationOutput work without parameters potentially returning full database, putting in explicit last-day-MetadataFilter * #46 Optional IshSession makes single Find-IshDocumentObj and Find-IshPublicationOutput work without parameters potentially returning full database, ROLLING BACK the explicit last-day-MetadataFilter that was added in this branch. Created separate issue #49 for tracking * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshDocumentObj cmdlets * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshDocumentObj cmdlets, tuned to use cmdlets ISHType for code consistency * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshPublicationOutput cmdlets * #46 Optional IshSession in Get-IshTypeFieldDefinition, making sure that TriDKXmlSetupFilePath overload still works * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshBaseline cmdlets and IshBaselineItem prints sortable date * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshEDT cmdlets * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshFolder cmdlets * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshOutputFormat cmdlets * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshOutputFormat cmdlets, fixed OutputType, added samples and allowed empty value * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshUser cmdlets and cleanup of double IshFolder ps1xml entry * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshUserGroup cmdlets * #48 Factory wrapping base type IshObject allowing .Format.ps1xml formatting now implemented for *-IshUserRole cmdlets * #48 Find-IshDocumentObj over DocumentObj25.Find still returns ISHReusedObj, so altered default to avoid this. Quick performance test. * #4 Reduce warning count in solution by replacing ArgumentNullException with ArgumentException, add readonly list, * #4 Reduce warning count in solution by replacing ArgumentNullException with ArgumentException, add readonly list, added globalsuppressions.cs, wrapped ShouldProcess, refactored using statements * #4 Adding AddIshPublicationOutput.Tests.ps1 * #47 Add GetIshEvent.Tests.ps1 testing the current old-style cmdlet, needs more work, broken at the moment * #47 Add GetIshEvent.Tests.ps1 testing the cmdlet, ready for the code changes. Extended Get-IshTypeFieldDefinition with ISHEvent type. * #47 Finally broke and rewrote Get-IshEvent to use PSNoteProperty with standardized property names. Matching GetIshEvent.Tests.ps1. And proper Format.ps1xml As part of the v0.7 milestone, this request - Closes #44 - Closes #45 - Closes #46 - Closes #47 - Closes #48 - Closes #50
First of all, I think we kind of want to have backward compatibility behavior, but still want to protect the application and database server So I would do something like...
|
Thanks, more food for thought... It looks like we are heading for option 2 so backwards compatible only doing x times more API calls then before, so theoretically somewhat slower but much more predictable for larger setups. On bigger database the Find cmdlet without any filter went wrong anyway as you attempt to pull the full database over.
Now a legacy conversion could be something better than below, the Find cmdlet could even show a progress bar
|
In all scenarios the |
Was looking for more standardized terminology and a way to make querying from Now to database birth date the default. So still pursuing backward compatible option 2.
Considered but not required for closing this issue
|
Investigating further, the idea is good, the performance and accuracy guarantees however not. ISHRemote tries to be version-agnostic where possible, for #49 there are two reasons to put this idea on hold:
As a reminder, the main problem is how to iterate all data, even for large enterprise sets of data. Where this idea was to iterate over time, we are going back to iterating over the folder structure. Continuing with #92 and #91, together they allow to iterate the folder structure and in turn find content-objects/publicationoutputs based on filter criteria like language or recently changed. |
Shorter crisper interactive experience is nice. Programming-wise, an explicit
-IshSession
is still preferred. Remember you can still use two sessions to compare or migrate content. Attempted as part of #45New-IshSession
adaptions, etcGet-IshEvent
protected by-ModifiedSince
defaulting to last dayGet-IshBackgroundTask
protected by-ModifiedSince
defaulting to last dayFind-IshBaseline
used to return everything, low risk on bringing the server downFind-IshEDT
used to return everything, low risk on bringing the server downFind-IshOutputFormat
used to return everything, low risk on bringing the server downFind-IshUserGroup
used to return everything, low risk on bringing the server downFind-IshUserRole
used to return everything, low risk on bringing the server downFind-IshUser
used to return everything, medium risk on bringing the server downFind-IshDocumentObj
used to return everything, high risk on bringing the server down but would mean breaking behavior compatibilityFind-IshPublicationOutput
used to return everything, high risk on bringing the server down but would mean breaking behavior compatibilityFind-IshAnnotation
Add cmdlets *-IShAnnotation #78 will return everything, medium risk on bringing the server down but would mean breaking behavior compatibilityThinking out loud... options are...
IshSession
a singleFind-IshDocumentObj
could bring everything to its knees. Current 0.x behavior, no code change required.-ModifiedSince
(DeltaDateTimeStart, the year 2000 or so),-ModifiedUntil
(DeltaDateTimeEnd, so Now+1day) and-ModifiedStep
(DeltaTimeSpan, so per year?). In practice the API calls would use aMODIFIED-ON
filter to return less from over the API function in one go, but if not pipelined in PowerShell the client-side memory could still explode. Preferably with Write-Progress like behavior. Preferred option if I have the time, cleans up the ISHInsights DeltaCrawl code base as well.Find-IshDocumentObj
andFind-IshPublicationOutput
need this protection I feel. All others are optional for consistency but can be implemented already over-MetadataFilter
-ModifiedSince
(DeltaDateTimeStart, defaulting to last day),-ModifiedUntil
(DeltaDateTimeEnd, so Now+1day) and-ModifiedStep
(DeltaTimeSpan, so more than one day).The text was updated successfully, but these errors were encountered: