Behavior of IBM Bluemix Swift Object Storage "X-Newest" flag - ibm-cloud

I am using the IBM Cloud Object Storage with Swift API on IBM Bluemix as seen here https://console.bluemix.net/catalog/infrastructure/object-storage-group.
I need to get the newest version of an object, or to know if it was deleted. To do so I use the X-Newest header flag in the request, but still I can get an object that was already deleted. Is there a known problem with this flag? Is it supported by the storage service? If it is, can you help to investigate why it happens?
Problematic scenario (Swift local client):
add an object
delete this object
pull this object (Get or Head) with X-Newest flag
and expect always to get "Object Not found" 404 status code (because it was deleted in the previous step). But in reality, sometimes I get this object back although it was deleted. Swift is eventually consistent, and without this flag, it would be a normal behavior. But with this flag, I should not get old versions of the object.
Do you know why it happens?

Related

Changes in IBM Bluemix API that introduced potential bug

We successfully used IBM Bluemix Speech-to-text API for almost a year. However, API suddenly stopped working for us. The reported error was that word_alternatives_threshold could not be None. This contradicts to documentation. In any case, we set word_alternatives_threshold and received another error right away. This time, API reported that “keywords_threshold” was not defined. This also contradicts to the current documentation. If we set “keywords_threshold”, then we are asked to set keywords list, that we don't really need for our application. Setting keyword list gives another error that list is empty.
Were any changes introduced to API?
Update: Removing options from input fixed the issue.

How can I get a list of my Installations in Azure Notification Hub

I'm trying to figure out how to use the recommended approach from Microsoft and use the Installation Model to handle registrations.
I want to be able to get some information about the installations that should have been saved and I see that there are two methods that could be useful
GetInstallation(string installationId) and GetInstallationAsync(string installationId)
Problem is that when making at call to any of them I never get a response back. I can't figure out what I might be doing wrong.
Here's the answer from a similar question (that still holds true as of Nov 2016):
... there's no way to get all installations for a hub. In the future, the
product team is planning to add this feature to the installations
model, but it will work in a different way. Instead of making it a
runtime operation, you'll provide your storage [account] connection string and
you'll get a blob with everything associated with the hub.

Bluemix cloudant: Sudden errors being thrown by service

We are using Node.js module nano to interact with Cloudant instance on Bluemix. Suddenly today we have started getting the below errors while getting data from a view in a Cloudant instance. Any clue what might be wrong?
[{couch_os_process,prompt,3,[{file,"src/couch_os_process.erl"},{line,65}]},
{couch_query_servers,'-map_docs/2-fun-1-',2,
[{file,"src/couch_query_servers.erl"},{line,243}]},
{lists,map,2,[{file,"lists.erl"},{line,1237}]},
{couch_query_servers,map_docs,2,
[{file,"src/couch_query_servers.erl"},{line,239}]},
{couch_view_updater,view_compute,2,
[{file,"src/couch_view_updater.erl"},{line,256}]},
{couch_view_updater,do_map,2,
[{file,"src/couch_view_updater.erl"},{line,161}]},
{lists,foldl,3,[{file,"lists.erl"},{line,1261}]},
{couch_view_updater,do_maps,4,
[{file,"src/couch_view_updater.erl"},{line,153}]}]}
It appears that the indexer is crashing trying to index a particular document. Probably you made a change to your documents, likely the ingestion of a larger document. One indication that it is a 'recent' change to a document causing the crash is to query the view with stale=ok. This will request a response from the last built version of the index (with the last correct version of the document). If this returns correctly it means that the issue is caused by a recent change attempting to be indexed.
This may be an intermittent issue due to a login and application management issue in the US-South region. You can track Platform and Service issues at the Bluemix Status page. If the system status is okay and you still get these errors, open a Bluemix Support ticket.
It's probably a problem with one of the Map Reduce views you have defined on the design document that contains the view you are accessing.

Is there any delay between file get uploaded and get listed?

I use gcloud node v0.24 for interacting with Google Cloud Storage. I've encountered an issue when immediate list after upload doesn't return all the files that were uploaded.
So the question is
does Bucket#getFiles always list files right after Bucket#upload?
or
is there any delay between upload's callback and when file becomes available (e.g. can be listed, downloaded)?
Note: below answer is no longer up to date -- GCS object listing is strongly consistent.
Google Cloud Storage provides strong global consistency for all read-after-write, read-after-update, and read-after-delete operations, including both data and metadata. As soon as you get a success response from an upload message, you may immediately read the object.
However, object and bucket listing is only eventually consistent. Objects will show up in a list call after you upload them, but not necessarily immediately.
In other words, if you know the name of an object that you have just uploaded, you can immediately download it, but you cannot necessarily discover that object by listing the objects in a bucket immediately.
For more, see https://cloud.google.com/storage/docs/consistency.

How is the best way to overcome bad / inconsistent data in an event-store?

Event stores are supposed to be Add only, you never delete or edit data.
In my case, we didn't disallow some mid-stream changes that were made by a user, and the data is "bad" / inconsistent... in that they changed a domain name for google docs that we were provisioning mid-stream...
I can reprovision from the event store, but that data is broken.
Should I create a mutator of some kind that as it pulls the data from the event store, fix it up?
I need some ideas here!
If I understand you correctly, the "bad" data were correct back then?
I suggest you fix this by not touching the events, but update the provisioning service to handle the broken domain names. That could be a component which knows how to fix a domain name or a url: You send a resource in and get a corrected version in return. Unknown resources could be returned as is.