#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 a second and maxes at an hour) until it is interrupted,
shutdown, or successful.


* How do I get a reference to the DocIdPusher?

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.