#summary frequently asked questions with answers

= Developer FAQ =

* How should one handle repository being unavailable during init()?

It is OK for init() to error if repository is unavailable, as the
!GsaCommunicationHandler will retry init() using exponential backoff
(starting at some seconds and maxing out at an hour) until it is interrupted, shutdown, or successful.


* How do I get a reference to the D!ocIdPusher?

Use !AdaptorContext.!getDocIdPusher() that you get in init.


* How do I feed document that has changed?

Send a Record for that !DocId with crawl-immediately being true.


* How do I feed a document that has been deleted?

Tell the GSA to crawl the document, which will result in 404, which will result in a deletion.  If you'd like you can set delete to be true in Record, but that's not necessary.


* How do I make an !ACL?

Use !Acl.!Builder


* Can I represent multiple !ACLs for same document?

Yes. 

Consider: some/path/Folder and some/path/Folder/File

Acls:<br>
some/path/Folder (sent via retriever)<br>
generated/inherit_file/some/path/Folder (sent via pushNamedResources)<br>
generated/inherit_folder/some/path/Folder (sent via pushNamedResources)<br>
some/path/Folder/File inherits from generated/inherit_file/some/path/Folder (sent via retriever)<br>

To send using pushNamedResources, create the other ACLs and then spawn a new thread that calls pushNamedResources.

* I'm getting interruption exception, what am I doing wrong?

The adaptor has 30 seconds to start sending content, and 3 minutes to complete sending content.  The config values are adaptor.docContentTimeoutSecs and adaptor.docHeaderTimeoutSecs.