-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
InfluxDB should do a partial write on mismatched type errors #7814
Comments
The reason for this is that telegraf (and any system writing batches to InfluxDB) currently can get into a situation where a mismatched type can cause the entire batch to be dropped. If the entire batch is not dropped, then it will be in a state where all batches continually fail forever, as the mismatched point will always fail the entire retried batch. |
Actually, this isn't quite true. I got into this without fully explaining it in my comment over on #4856 (comment) With a mismatched type, all the points in the batch prior to the mismatch get written. The ones after it do not. |
@phemmer I think there might be a separate but related bug. I also initially see all points prior get "written" (they appear in I'm not sure exactly why, but I believe they're getting registered in the index but not fully committed. I'm working on opening a separate issue. |
@jwilder should we throw this into the 1.2 milestone? |
We have seen this phenomena in an even weirder scenario - when there is a mismatched type error, other unrelated points being processed at the same time may be dropped. |
Should be fixed by #7836. |
Bug report
When a point is written with a mismatched type, it is handled differently than a malformed point.
With a malformed point, a partial write is done of all well-formed points that are provided in the batch, and a "partial write" error is returned.
With a mismatched point, no points are written and a "mismatched type" error is returned.
both cases return http status code 400.
I think that we should treat mismatched types the same as malformed points, performing a partial write of the well-formed and valid points in the batch.
System info: [Include InfluxDB version, operating system name, and other relevant details]
InfluxDB master, commit 8c2cfd1 (master some ways after 1.1.0)
Steps to reproduce:
test
as a float:test
as an integer and then a new metric calledtest2
:test2
metric does not get created, even though it is valid.test
completely malformed and then a new metric calledtest2
:test2
does get created, though a 400 status code and "partial write" is still returned.Not sure, but this might be a dupe of #4856
The text was updated successfully, but these errors were encountered: