From 2cb4576ad29f3365b0e97b4c823cc50def5280e6 Mon Sep 17 00:00:00 2001 From: Adrien Guillo Date: Mon, 18 Dec 2023 17:44:04 +0100 Subject: [PATCH 1/9] Revert upload/download artifact BS This reverts commit 74335076d203d81e05fbcacdfcbc3b7b7feeeb24. --- .github/workflows/publish_docker_images.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish_docker_images.yml b/.github/workflows/publish_docker_images.yml index 47f5e6cf0cf..74852e5b47b 100644 --- a/.github/workflows/publish_docker_images.yml +++ b/.github/workflows/publish_docker_images.yml @@ -72,15 +72,15 @@ jobs: - name: Export digest run: | - mkdir -p /tmp/digests/${{ matrix.platform }} + mkdir -p /tmp/digests digest="${{ steps.build.outputs.digest }}" - touch "/tmp/digests/${{ matrix.platform }}/${digest#sha256:}" + touch "/tmp/digests/${digest#sha256:}" - name: Upload digest - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: name: digest - path: /tmp/digests/${{ matrix.platform }}/* + path: /tmp/digests/* if-no-files-found: error retention-days: 1 @@ -89,10 +89,10 @@ jobs: needs: [docker] steps: - name: Download digests - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v3 with: name: digest - path: /tmp/digests/${{ matrix.platform }} + path: /tmp/digests - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -114,7 +114,7 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} - name: Create manifest list and push tags - working-directory: /tmp/digests/${{ matrix.platform }} + working-directory: /tmp/digests run: | docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ $(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) From fb1fe6a49abc35e475993f961e8d32ac50a7786d Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Tue, 19 Dec 2023 12:04:42 +0900 Subject: [PATCH 2/9] bugfix retain shards (#4300) * bugfix retain shards * Bugfix retain shards. We need to update the model BEFORE calling retain shard. --- .../src/control_plane.rs | 83 ++++++++++++------- 1 file changed, 51 insertions(+), 32 deletions(-) diff --git a/quickwit/quickwit-control-plane/src/control_plane.rs b/quickwit/quickwit-control-plane/src/control_plane.rs index 3f211b70f66..eb3866b509b 100644 --- a/quickwit/quickwit-control-plane/src/control_plane.rs +++ b/quickwit/quickwit-control-plane/src/control_plane.rs @@ -347,12 +347,12 @@ impl Handler for ControlPlane { .flat_map(|shard_entry| shard_entry.ingester_nodes()) .collect(); + self.model.delete_index(&index_uid); + self.ingest_controller .sync_with_ingesters(&ingester_needing_resync, &self.model) .await; - self.model.delete_index(&index_uid); - // TODO: Refine the event. Notify index will have the effect to reload the entire state from // the metastore. We should update the state of the control plane. self.indexing_scheduler @@ -567,6 +567,7 @@ impl EventSubscriber for ControlPlaneEventSubscriber { #[cfg(test)] mod tests { + use mockall::Sequence; use quickwit_actors::{AskError, Observe, SupervisorMetrics}; use quickwit_config::{IndexConfig, SourceParams, INGEST_SOURCE_ID}; use quickwit_indexing::IndexingService; @@ -1301,46 +1302,33 @@ mod tests { let ingester_pool = IngesterPool::default(); let mut ingester_mock = IngesterServiceClient::mock(); - ingester_mock - .expect_retain_shards() - .times(2) - .returning(|mut request| { - assert_eq!(request.retain_shards_for_sources.len(), 1); - let retain_shards_for_source = request.retain_shards_for_sources.pop().unwrap(); - assert_eq!(&retain_shards_for_source.shard_ids, &[15]); - Ok(RetainShardsResponse {}) - }); - ingester_pool.insert("node1".into(), ingester_mock.into()); + let mut seq = Sequence::new(); let mut index_0 = IndexMetadata::for_test("test-index-0", "ram:///test-index-0"); - let index_uid_clone = index_0.index_uid.clone(); - - let mut mock_metastore = MetastoreServiceClient::mock(); - mock_metastore.expect_delete_index().return_once( - move |delete_index_request: DeleteIndexRequest| { - assert_eq!(delete_index_request.index_uid, index_uid_clone.to_string()); - Ok(EmptyResponse {}) - }, - ); - let mut source = SourceConfig::ingest_v2_default(); source.enabled = true; index_0.add_source(source.clone()).unwrap(); + let index_uid_clone = index_0.index_uid.clone(); let index_0_clone = index_0.clone(); - mock_metastore.expect_list_indexes_metadata().return_once( - move |list_indexes_request: ListIndexesMetadataRequest| { + + let mut mock_metastore = MetastoreServiceClient::mock(); + mock_metastore + .expect_list_indexes_metadata() + .times(1) + .in_sequence(&mut seq) + .returning(move |list_indexes_request: ListIndexesMetadataRequest| { assert_eq!(list_indexes_request, ListIndexesMetadataRequest::all()); Ok(ListIndexesMetadataResponse::try_from_indexes_metadata(vec![ index_0_clone.clone() ]) .unwrap()) - }, - ); - - let index_uid_clone = index_0.index_uid.clone(); - mock_metastore.expect_list_shards().return_once( - move |_list_shards_request: ListShardsRequest| { + }); + mock_metastore + .expect_list_shards() + .times(1) + .in_sequence(&mut seq) + .returning(move |_list_shards_request: ListShardsRequest| { let list_shards_resp = ListShardsResponse { subresponses: vec![ListShardsSubresponse { index_uid: index_uid_clone.to_string(), @@ -1359,8 +1347,39 @@ mod tests { }], }; Ok(list_shards_resp) - }, - ); + }); + + ingester_mock + .expect_retain_shards() + .times(1) + .in_sequence(&mut seq) + .returning(|mut request| { + assert_eq!(request.retain_shards_for_sources.len(), 1); + let retain_shards_for_source = request.retain_shards_for_sources.pop().unwrap(); + assert_eq!(&retain_shards_for_source.shard_ids, &[15]); + Ok(RetainShardsResponse {}) + }); + + let index_uid_clone = index_0.index_uid.clone(); + mock_metastore + .expect_delete_index() + .times(1) + .in_sequence(&mut seq) + .returning(move |delete_index_request: DeleteIndexRequest| { + assert_eq!(delete_index_request.index_uid, index_uid_clone.to_string()); + Ok(EmptyResponse {}) + }); + ingester_mock + .expect_retain_shards() + .times(1) + .in_sequence(&mut seq) + .returning(|mut request| { + assert_eq!(request.retain_shards_for_sources.len(), 1); + let retain_shards_for_source = request.retain_shards_for_sources.pop().unwrap(); + assert!(&retain_shards_for_source.shard_ids.is_empty()); + Ok(RetainShardsResponse {}) + }); + ingester_pool.insert("node1".into(), ingester_mock.into()); let (control_plane_mailbox, _control_plane_handle) = ControlPlane::spawn( &universe, From 2e08c05d88b120418475d3b06f1a87b8e2d4e826 Mon Sep 17 00:00:00 2001 From: PSeitz Date: Tue, 19 Dec 2023 04:28:49 +0100 Subject: [PATCH 3/9] add IngestV2Error to IngestServiceError conversion (#4294) --- quickwit/quickwit-ingest/src/errors.rs | 18 ++++++++++++++++++ quickwit/quickwit-proto/src/ingest/mod.rs | 1 - quickwit/quickwit-search/src/error.rs | 1 + .../src/ingest_api/rest_handler.rs | 7 ++----- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/quickwit/quickwit-ingest/src/errors.rs b/quickwit/quickwit-ingest/src/errors.rs index 94c660c2aed..ebbca9296ae 100644 --- a/quickwit/quickwit-ingest/src/errors.rs +++ b/quickwit/quickwit-ingest/src/errors.rs @@ -22,6 +22,7 @@ use std::io; use mrecordlog::error::*; use quickwit_actors::AskError; use quickwit_common::tower::BufferError; +use quickwit_proto::ingest::IngestV2Error; use quickwit_proto::{tonic, ServiceError, ServiceErrorCode}; use serde::Serialize; @@ -69,6 +70,23 @@ impl From for IngestServiceError { IngestServiceError::IoError(io_error.to_string()) } } +impl From for IngestServiceError { + fn from(err: IngestV2Error) -> Self { + match err { + IngestV2Error::Internal(_) => IngestServiceError::Internal(err.to_string()), + IngestV2Error::IngesterUnavailable { ingester_id } => { + IngestServiceError::Internal(format!("ingester {} is unavailable", ingester_id)) + } + IngestV2Error::ShardNotFound { shard_id } => IngestServiceError::Internal(format!( + "shard {} is not found in the ingester", + shard_id + )), + IngestV2Error::Timeout => IngestServiceError::Unavailable, + IngestV2Error::TooManyRequests => IngestServiceError::RateLimited, + IngestV2Error::Transport(msg) => IngestServiceError::Internal(msg.to_string()), + } + } +} impl From for IngestServiceError { fn from(status: tonic::Status) -> Self { diff --git a/quickwit/quickwit-proto/src/ingest/mod.rs b/quickwit/quickwit-proto/src/ingest/mod.rs index db3ab069627..f074306d423 100644 --- a/quickwit/quickwit-proto/src/ingest/mod.rs +++ b/quickwit/quickwit-proto/src/ingest/mod.rs @@ -82,7 +82,6 @@ impl From for tonic::Status { impl From for IngestV2Error { fn from(status: tonic::Status) -> Self { - dbg!(&status); match status.code() { tonic::Code::Unavailable => IngestV2Error::Transport(status.message().to_string()), tonic::Code::ResourceExhausted => IngestV2Error::TooManyRequests, diff --git a/quickwit/quickwit-search/src/error.rs b/quickwit/quickwit-search/src/error.rs index 29e4941eb1d..a0d62e04539 100644 --- a/quickwit/quickwit-search/src/error.rs +++ b/quickwit/quickwit-search/src/error.rs @@ -65,6 +65,7 @@ impl From for tonic::Status { /// Parse tonic error and returns `SearchError`. pub fn parse_grpc_error(grpc_error: &tonic::Status) -> SearchError { + // TODO: the serialization to JSON part is missing. serde_json::from_str(grpc_error.message()) .unwrap_or_else(|_| SearchError::Internal(grpc_error.message().to_string())) } diff --git a/quickwit/quickwit-serve/src/ingest_api/rest_handler.rs b/quickwit/quickwit-serve/src/ingest_api/rest_handler.rs index 19184f757e2..6923a916938 100644 --- a/quickwit/quickwit-serve/src/ingest_api/rest_handler.rs +++ b/quickwit/quickwit-serve/src/ingest_api/rest_handler.rs @@ -27,7 +27,7 @@ use quickwit_proto::ingest::router::{ IngestFailureReason, IngestRequestV2, IngestResponseV2, IngestRouterService, IngestRouterServiceClient, IngestSubrequest, }; -use quickwit_proto::ingest::{DocBatchV2, IngestV2Error}; +use quickwit_proto::ingest::DocBatchV2; use quickwit_proto::types::IndexId; use serde::Deserialize; use thiserror::Error; @@ -150,10 +150,7 @@ async fn ingest_v2( commit_type: ingest_options.commit_type as i32, subrequests: vec![subrequest], }; - let response = ingest_router - .ingest(request) - .await - .map_err(|err: IngestV2Error| IngestServiceError::Internal(err.to_string()))?; + let response = ingest_router.ingest(request).await?; convert_ingest_response_v2(response, num_docs) } From 66d27b583f2110311c8548f2b7981fdec95c97c1 Mon Sep 17 00:00:00 2001 From: PSeitz Date: Tue, 19 Dec 2023 08:56:06 +0100 Subject: [PATCH 4/9] add undocumented `type` in field capabilities (#4302) add undocumented `type` in field capabilities add ignore_unavailable parameter --- .../model/field_capability.rs | 83 ++++++++++++------- .../0001-field-capabilities.yaml | 7 ++ 2 files changed, 58 insertions(+), 32 deletions(-) diff --git a/quickwit/quickwit-serve/src/elastic_search_api/model/field_capability.rs b/quickwit/quickwit-serve/src/elastic_search_api/model/field_capability.rs index 03edfdd9a99..123e4638b01 100644 --- a/quickwit/quickwit-serve/src/elastic_search_api/model/field_capability.rs +++ b/quickwit/quickwit-serve/src/elastic_search_api/model/field_capability.rs @@ -40,6 +40,8 @@ pub struct FieldCapabilityQueryParams { #[serde(deserialize_with = "from_simple_list")] #[serde(default)] pub fields: Option>, + #[serde(default)] + pub ignore_unavailable: Option, } #[derive(Debug, Default, Clone, Deserialize, PartialEq)] @@ -58,24 +60,34 @@ pub struct FieldCapabilityResponse { indices: Vec, fields: HashMap, } -#[derive(Serialize, Deserialize, Debug, Default)] -struct FieldCapabilityFieldTypesResponse { - #[serde(skip_serializing_if = "Option::is_none")] - long: Option, - #[serde(skip_serializing_if = "Option::is_none")] - keyword: Option, - #[serde(skip_serializing_if = "Option::is_none")] - text: Option, - #[serde(skip_serializing_if = "Option::is_none")] - date_nanos: Option, - #[serde(skip_serializing_if = "Option::is_none")] - binary: Option, - #[serde(skip_serializing_if = "Option::is_none")] - double: Option, // Do we need float ? - #[serde(skip_serializing_if = "Option::is_none")] - boolean: Option, - #[serde(skip_serializing_if = "Option::is_none")] - ip: Option, + +type FieldCapabilityFieldTypesResponse = + HashMap; + +#[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq, Hash)] +enum FieldCapabilityEntryType { + #[serde(rename = "long")] + Long, + #[serde(rename = "keyword")] + Keyword, + #[serde(rename = "text")] + Text, + #[serde(rename = "date_nanos")] + DateNanos, + #[serde(rename = "binary")] + Binary, + #[serde(rename = "double")] + Double, + #[serde(rename = "boolean")] + Boolean, + #[serde(rename = "ip")] + Ip, + // Unmapped currently + #[serde(rename = "nested")] + Nested, + // Unmapped currently + #[serde(rename = "object")] + Object, } #[derive(Serialize, Deserialize, Debug, Clone)] @@ -83,6 +95,9 @@ struct FieldCapabilityEntryResponse { metadata_field: bool, // Always false searchable: bool, aggregatable: bool, + // Option since it is filled later + #[serde(rename = "type")] + typ: Option, indices: Vec, // [ "index1", "index2" ], #[serde(skip_serializing_if = "Vec::is_empty")] non_aggregatable_indices: Vec, // [ "index1" ] @@ -95,6 +110,7 @@ impl FieldCapabilityEntryResponse { metadata_field: false, searchable: entry.searchable, aggregatable: entry.aggregatable, + typ: None, indices: entry.index_ids.clone(), non_aggregatable_indices: entry.non_aggregatable_index_ids, non_searchable_indices: entry.non_searchable_index_ids, @@ -128,24 +144,27 @@ pub fn convert_to_es_field_capabilities_response( let field_type = ListFieldType::from_i32(list_field_resp.field_type).unwrap(); let add_entry = FieldCapabilityEntryResponse::from_list_field_entry_response(list_field_resp); - match field_type { + let types = match field_type { ListFieldType::Str => { - if add_entry.aggregatable { - entry.keyword = Some(add_entry.clone()); - } - if add_entry.searchable { - entry.text = Some(add_entry); - } + vec![ + FieldCapabilityEntryType::Keyword, + FieldCapabilityEntryType::Text, + ] } - ListFieldType::U64 => entry.long = Some(add_entry), - ListFieldType::I64 => entry.long = Some(add_entry), - ListFieldType::F64 => entry.double = Some(add_entry), - ListFieldType::Bool => entry.boolean = Some(add_entry), - ListFieldType::Date => entry.date_nanos = Some(add_entry), + ListFieldType::U64 => vec![FieldCapabilityEntryType::Long], + ListFieldType::I64 => vec![FieldCapabilityEntryType::Long], + ListFieldType::F64 => vec![FieldCapabilityEntryType::Double], + ListFieldType::Bool => vec![FieldCapabilityEntryType::Boolean], + ListFieldType::Date => vec![FieldCapabilityEntryType::DateNanos], ListFieldType::Facet => continue, ListFieldType::Json => continue, - ListFieldType::Bytes => entry.binary = Some(add_entry), // Is this mapping correct? - ListFieldType::IpAddr => entry.ip = Some(add_entry), + ListFieldType::Bytes => vec![FieldCapabilityEntryType::Binary], + ListFieldType::IpAddr => vec![FieldCapabilityEntryType::Ip], + }; + for field_type in types { + let mut add_entry = add_entry.clone(); + add_entry.typ = Some(field_type.clone()); + entry.insert(field_type, add_entry); } } FieldCapabilityResponse { indices, fields } diff --git a/quickwit/rest-api-tests/scenarii/es_field_capabilities/0001-field-capabilities.yaml b/quickwit/rest-api-tests/scenarii/es_field_capabilities/0001-field-capabilities.yaml index c006adb3a08..0e71e1dde2a 100644 --- a/quickwit/rest-api-tests/scenarii/es_field_capabilities/0001-field-capabilities.yaml +++ b/quickwit/rest-api-tests/scenarii/es_field_capabilities/0001-field-capabilities.yaml @@ -9,6 +9,7 @@ expected: fields: nested.response: long: + type: long metadata_field: false searchable: true aggregatable: true @@ -16,12 +17,14 @@ expected: - fieldcaps nested.name: keyword: + type: keyword metadata_field: false searchable: true aggregatable: true indices: - fieldcaps text: + type: text metadata_field: false searchable: true aggregatable: true @@ -29,6 +32,7 @@ expected: - fieldcaps host: ip: + type: ip metadata_field: false searchable: true aggregatable: true @@ -229,6 +233,7 @@ expected: fields: nested.response: long: + type: long metadata_field: false searchable: true aggregatable: true @@ -245,6 +250,7 @@ expected: fields: host: ip: + type: ip metadata_field: false searchable: true aggregatable: true @@ -261,6 +267,7 @@ expected: fields: date: date_nanos: + type: date_nanos metadata_field: false searchable: true aggregatable: true From f892f7d0dce8f0f914bbd8441709c9d980285fb4 Mon Sep 17 00:00:00 2001 From: PSeitz Date: Tue, 19 Dec 2023 12:23:52 +0100 Subject: [PATCH 5/9] fix index pattern matching in fieldcaps (#4304) align the index pattern matching behaviour to elasticsearch. That means empty results if the index pattern matches nothing but contains a wildcard. Error if the index pattern matches nothing but is exact. --- quickwit/quickwit-search/src/list_fields.rs | 16 ++--- quickwit/quickwit-search/src/root.rs | 2 +- .../0001-field-capabilities.yaml | 59 +++++++++++++++++++ 3 files changed, 68 insertions(+), 9 deletions(-) diff --git a/quickwit/quickwit-search/src/list_fields.rs b/quickwit/quickwit-search/src/list_fields.rs index ebb052e787b..dc3a4a8cb7a 100644 --- a/quickwit/quickwit-search/src/list_fields.rs +++ b/quickwit/quickwit-search/src/list_fields.rs @@ -40,6 +40,7 @@ use quickwit_proto::types::IndexUid; use quickwit_storage::Storage; use crate::leaf::open_split_bundle; +use crate::root::check_all_index_metadata_found; use crate::service::SearcherContext; use crate::{list_relevant_splits, ClusterClient, SearchError, SearchJob}; @@ -292,23 +293,22 @@ pub async fn root_list_fields( ListIndexesMetadataRequest::all() } else { ListIndexesMetadataRequest { - // TODO: Check index id pattern index_id_patterns: list_fields_req.index_ids.clone(), } }; // Get the index ids from the request - let indexes_metadatas = metastore + let indexes_metadata = metastore .clone() .list_indexes_metadata(list_indexes_metadata_request) .await? .deserialize_indexes_metadata()?; - if indexes_metadatas.is_empty() { - return Err(SearchError::IndexesNotFound { - index_ids: list_fields_req.index_ids.clone(), - }); + check_all_index_metadata_found(&indexes_metadata[..], &list_fields_req.index_ids[..])?; + // The request contains a wildcard, but couldn't find any index. + if indexes_metadata.is_empty() { + return Ok(ListFieldsResponse { fields: vec![] }); } - let index_uid_to_index_meta: HashMap = indexes_metadatas + let index_uid_to_index_meta: HashMap = indexes_metadata .iter() .map(|index_metadata| { let index_metadata_for_leaf_search = IndexMetasForLeafSearch { @@ -322,7 +322,7 @@ pub async fn root_list_fields( ) }) .collect(); - let index_uids: Vec = indexes_metadatas + let index_uids: Vec = indexes_metadata .into_iter() .map(|index_metadata| index_metadata.index_uid) .collect(); diff --git a/quickwit/quickwit-search/src/root.rs b/quickwit/quickwit-search/src/root.rs index 9cbf017873b..ccd0bf1832f 100644 --- a/quickwit/quickwit-search/src/root.rs +++ b/quickwit/quickwit-search/src/root.rs @@ -830,7 +830,7 @@ fn finalize_aggregation_if_any( /// We put this check here and not in the metastore to make sure the logic is independent /// of the metastore implementation, and some different use cases could require different /// behaviors. This specification was principally motivated by #4042. -fn check_all_index_metadata_found( +pub fn check_all_index_metadata_found( index_metadatas: &[IndexMetadata], index_id_patterns: &[String], ) -> crate::Result<()> { diff --git a/quickwit/rest-api-tests/scenarii/es_field_capabilities/0001-field-capabilities.yaml b/quickwit/rest-api-tests/scenarii/es_field_capabilities/0001-field-capabilities.yaml index 0e71e1dde2a..1ed8000f83f 100644 --- a/quickwit/rest-api-tests/scenarii/es_field_capabilities/0001-field-capabilities.yaml +++ b/quickwit/rest-api-tests/scenarii/es_field_capabilities/0001-field-capabilities.yaml @@ -271,4 +271,63 @@ expected: metadata_field: false searchable: true aggregatable: true +--- +# Wildcard on index name +method: [GET] +engines: + - quickwit + - elasticsearch +endpoint: fieldca*/_field_caps?fields=date +expected: + indices: + - fieldcaps + fields: + date: + date_nanos: + type: date_nanos + metadata_field: false + searchable: true + aggregatable: true +--- +# Wildcard on index name + Wildcard without match +method: [GET] +engines: + - quickwit + - elasticsearch +endpoint: fieldca*,blub*/_field_caps?fields=date +expected: + indices: + - fieldcaps + fields: + date: + date_nanos: + type: date_nanos + metadata_field: false + searchable: true + aggregatable: true + +--- +# Exact match index + Non matching excact index +method: [GET] +engines: + - quickwit + - elasticsearch +endpoint: fieldcaps,blub/_field_caps?fields=date +status_code: 404 +--- +# Compare ip field with elastic search +method: [GET] +engines: + - quickwit + - elasticsearch +endpoint: doesnotexist/_field_caps?fields=date +status_code: 404 +--- +# Compare ip field with elastic search +method: [GET] +engines: + - quickwit + - elasticsearch +endpoint: doesno*texist/_field_caps?fields=date +status_code: 200 From 329b1461520b4262564d93921a4e490063c1611e Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Tue, 19 Dec 2023 23:41:11 +0900 Subject: [PATCH 6/9] bugfix control plane (#4307) --- .../scheduling/scheduling_logic.rs | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/quickwit/quickwit-control-plane/src/indexing_scheduler/scheduling/scheduling_logic.rs b/quickwit/quickwit-control-plane/src/indexing_scheduler/scheduling/scheduling_logic.rs index 82af447012a..1bd649dce60 100644 --- a/quickwit/quickwit-control-plane/src/indexing_scheduler/scheduling/scheduling_logic.rs +++ b/quickwit/quickwit-control-plane/src/indexing_scheduler/scheduling/scheduling_logic.rs @@ -58,7 +58,7 @@ pub fn solve( fn remove_extraneous_shards(problem: &SchedulingProblem, solution: &mut SchedulingSolution) { let mut num_shards_per_source: Vec = vec![0; problem.num_sources()]; - for indexer_assignment in &mut solution.indexer_assignments { + for indexer_assignment in &solution.indexer_assignments { if let Some((&source_ord, _)) = indexer_assignment.num_shards_per_source.last_key_value() { assert!(source_ord < problem.num_sources() as SourceOrd); } @@ -81,8 +81,10 @@ fn remove_extraneous_shards(problem: &SchedulingProblem, solution: &mut Scheduli let mut nodes_with_source: HashMap> = HashMap::default(); for (node_id, indexer_assignment) in solution.indexer_assignments.iter().enumerate() { - for &source in indexer_assignment.num_shards_per_source.keys() { - nodes_with_source.entry(source).or_default().push(node_id); + for (&source, &num_shards) in &indexer_assignment.num_shards_per_source { + if num_shards > 0 { + nodes_with_source.entry(source).or_default().push(node_id); + } } } @@ -292,6 +294,9 @@ fn compute_unassigned_sources( .collect(); for indexer_assignment in &solution.indexer_assignments { for (&source_ord, &num_shards) in &indexer_assignment.num_shards_per_source { + if num_shards == 0 { + continue; + } let Entry::Occupied(mut entry) = unassigned_sources.entry(source_ord) else { panic!("The solution contains more shards than the actual problem."); }; @@ -603,10 +608,8 @@ mod tests { let mut solution = SchedulingSolution::with_num_indexers(num_nodes); for (node_id, indexer_assignment) in indexer_assignments.iter().enumerate() { for (source_ord, num_shards) in indexer_assignment.iter().copied().enumerate() { - if num_shards > 0 { - solution.indexer_assignments[node_id] - .add_shards(source_ord as u32, num_shards); - } + solution.indexer_assignments[node_id] + .add_shards(source_ord as u32, num_shards); } } solution @@ -624,6 +627,23 @@ mod tests { }) } + #[test] + fn test_problem_leading_to_zero_shard() { + let mut problem = SchedulingProblem::with_indexer_cpu_capacities( + vec![CpuCapacity::from_cpu_millis(0), + CpuCapacity::from_cpu_millis(0), + ]); + problem.add_source(0, NonZeroU32::new(1).unwrap()); + let mut previous_solution = problem.new_solution(); + previous_solution.indexer_assignments[0].add_shards(0, 0); + previous_solution.indexer_assignments[1].add_shards(0, 0); + let (solution, still_unassigned) = solve(&problem, previous_solution); + assert_eq!(solution.indexer_assignments[0].num_shards(0), 0); + assert_eq!(solution.indexer_assignments[1].num_shards(0), 0); + assert!(still_unassigned.is_empty()); + + } + proptest! { #[test] fn test_proptest_post_conditions((problem, solution) in problem_solution_strategy()) { From 4e7764dccf770b4f2c18666139cdbe80ec3425e6 Mon Sep 17 00:00:00 2001 From: Adrien Guillo Date: Tue, 19 Dec 2023 16:20:52 +0100 Subject: [PATCH 7/9] Fix fmt --- .../indexing_scheduler/scheduling/scheduling_logic.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/quickwit/quickwit-control-plane/src/indexing_scheduler/scheduling/scheduling_logic.rs b/quickwit/quickwit-control-plane/src/indexing_scheduler/scheduling/scheduling_logic.rs index 1bd649dce60..a4419a01aa1 100644 --- a/quickwit/quickwit-control-plane/src/indexing_scheduler/scheduling/scheduling_logic.rs +++ b/quickwit/quickwit-control-plane/src/indexing_scheduler/scheduling/scheduling_logic.rs @@ -629,10 +629,10 @@ mod tests { #[test] fn test_problem_leading_to_zero_shard() { - let mut problem = SchedulingProblem::with_indexer_cpu_capacities( - vec![CpuCapacity::from_cpu_millis(0), - CpuCapacity::from_cpu_millis(0), - ]); + let mut problem = SchedulingProblem::with_indexer_cpu_capacities(vec![ + CpuCapacity::from_cpu_millis(0), + CpuCapacity::from_cpu_millis(0), + ]); problem.add_source(0, NonZeroU32::new(1).unwrap()); let mut previous_solution = problem.new_solution(); previous_solution.indexer_assignments[0].add_shards(0, 0); @@ -641,7 +641,6 @@ mod tests { assert_eq!(solution.indexer_assignments[0].num_shards(0), 0); assert_eq!(solution.indexer_assignments[1].num_shards(0), 0); assert!(still_unassigned.is_empty()); - } proptest! { From 9bcbf399974c3b4197c973358034e6686c5fbb7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Massot?= Date: Tue, 19 Dec 2023 23:42:12 +0100 Subject: [PATCH 8/9] Add new tutorial to send docker logs into Quickwit. (#4013) * Add new tutorial to send docker logs into Quickwit. * Add screenshot in docker logs tutorial. --- ...enshot-quickwit-ui-docker-compose-logs.png | Bin 0 -> 204516 bytes .../send-logs/send-docker-logs.md | 147 ++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 docs/assets/images/screenshot-quickwit-ui-docker-compose-logs.png create mode 100644 docs/log-management/send-logs/send-docker-logs.md diff --git a/docs/assets/images/screenshot-quickwit-ui-docker-compose-logs.png b/docs/assets/images/screenshot-quickwit-ui-docker-compose-logs.png new file mode 100644 index 0000000000000000000000000000000000000000..2f42bbad17c9b4b3b3a811dd9731e5578badf2f9 GIT binary patch literal 204516 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[^\|]+)\|(?P[^\|]+)\|(?P[^$]+)$ + type: regex_parser + if: 'attributes?.attrs?.tag != nil' + - from: attributes.name + to: resource["docker.container.name"] + type: move + if: 'attributes?.name != nil' + - from: attributes.image_name + to: resource["docker.image.name"] + type: move + if: 'attributes?.image_name != nil' + - from: attributes.id + to: resource["docker.container.id"] + type: move + if: 'attributes?.id != nil' + - from: attributes.log + to: body + type: move + +processors: + batch: + timeout: 5s + +exporters: + otlp/qw: + endpoint: quickwit:7281 + compression: none + tls: + insecure: true + +service: + pipelines: + logs: + receivers: [filelog] + processors: [batch] + exporters: [otlp/qw] +``` + +## Start the OTEL collector and a Quickwit instance + +Let's use `docker compose` with the following configuration: + +```yaml title="docker-compose.yaml" +version: "3" + +x-default-logging: &logging + driver: "json-file" + options: + max-size: "5m" + max-file: "2" + tag: "{{.Name}}|{{.ImageName}}|{{.ID}}" + +services: + quickwit: + image: quickwit/quickwit:${QW_VERSION:-0.6.5} + volumes: + - ./qwdata:/quickwit/qwdata + ports: + - 7280:7280 + environment: + - NO_COLOR=true + command: ["run"] + logging: *logging + + otel-collector: + user: "0" # Needed to access the directory /var/lib/docker/containers/ + image: otel/opentelemetry-collector-contrib:${OTEL_VERSION:-0.87.0} + volumes: + - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml + - /var/lib/docker/containers:/var/lib/docker/containers:ro + command: ["--config=/etc/otel-collector-config.yaml"] + logging: *logging +``` + + +You will notice the custom `logging`, the OTEL collector will use that additional information to enrich the logs. + +## Run it and search + +Download the configuration files and start the containers: + +```bash + +mkdir qwdata +docker compose up +``` + +After a few seconds, you will see the logs in the Quickwit UI [http://localhost:7280](http://localhost:7280). + + +Here is what it should look like: + +```json +{ + "attributes": { + "log.file.name": "34ad1a84c71de1d29ad75f99b56d01205e2976440f2398734037151ba2bcde1a-json.log", + "stream": "stdout" + }, + "body": { + "message": "2023-10-23T16:39:57.892 INFO --- [ asgi_gw_1] localstack.request.aws : AWS s3.ListObjects => 200\n" + }, + "observed_timestamp_nanos": 1698079197979435000, + "service_name": "unknown_service", + "severity_number": 0, + "timestamp_nanos": 1698079197892726000, + "trace_flags": 0 +} +``` + + +## Troubleshooting + +It's possible that you get no logs in the UI. In this case, check the `docker compose` logs. The problem can typically come from a wrong configuration of the OTEL collector. From fbe8dab625fe0517578a3d9fe36a10b0278a295e Mon Sep 17 00:00:00 2001 From: tuziben Date: Wed, 20 Dec 2023 16:17:12 +0800 Subject: [PATCH 9/9] url decode the search index pattern (#4292) * url decode the search index pattern * use percent_decode crate * tiny fix * refine error message * remove duplicated decode * code format * Remove unwrap in extract_index_id_patterns --------- Co-authored-by: fmassot --- quickwit/Cargo.lock | 1 + quickwit/Cargo.toml | 1 + quickwit/quickwit-serve/Cargo.toml | 1 + .../src/search_api/rest_handler.rs | 30 +++++++++---------- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/quickwit/Cargo.lock b/quickwit/Cargo.lock index f9ee3b2324b..b79a0838f81 100644 --- a/quickwit/Cargo.lock +++ b/quickwit/Cargo.lock @@ -5965,6 +5965,7 @@ dependencies = [ "num_cpus", "once_cell", "opentelemetry", + "percent-encoding", "quickwit-actors", "quickwit-cluster", "quickwit-common", diff --git a/quickwit/Cargo.toml b/quickwit/Cargo.toml index 5e0190d5a7e..95dab9e19c2 100644 --- a/quickwit/Cargo.toml +++ b/quickwit/Cargo.toml @@ -123,6 +123,7 @@ openssl-probe = "0.1.5" opentelemetry = { version = "0.19", features = ["rt-tokio"] } opentelemetry-otlp = "0.12.0" ouroboros = "0.18.0" +percent-encoding = "2.3.1" pin-project = "1.1.0" pnet = { version = "0.33.0", features = ["std"] } postcard = { version = "1.0.4", features = [ diff --git a/quickwit/quickwit-serve/Cargo.toml b/quickwit/quickwit-serve/Cargo.toml index a6c53953d1a..4fe411e96de 100644 --- a/quickwit/quickwit-serve/Cargo.toml +++ b/quickwit/quickwit-serve/Cargo.toml @@ -24,6 +24,7 @@ itertools = { workspace = true } mime_guess = { workspace = true } num_cpus = { workspace = true } once_cell = { workspace = true } +percent-encoding = { workspace = true } regex = { workspace = true } rust-embed = { workspace = true } serde = { workspace = true } diff --git a/quickwit/quickwit-serve/src/search_api/rest_handler.rs b/quickwit/quickwit-serve/src/search_api/rest_handler.rs index 92d9df1a91d..b073e30b21e 100644 --- a/quickwit/quickwit-serve/src/search_api/rest_handler.rs +++ b/quickwit/quickwit-serve/src/search_api/rest_handler.rs @@ -20,16 +20,16 @@ use std::convert::TryFrom; use std::sync::Arc; +use anyhow::Context; use futures::stream::StreamExt; use hyper::header::HeaderValue; use hyper::HeaderMap; -use once_cell::sync::Lazy; +use percent_encoding::percent_decode_str; use quickwit_config::validate_index_id_pattern; use quickwit_proto::search::{CountHits, OutputFormat, SortField, SortOrder}; use quickwit_proto::ServiceError; use quickwit_query::query_ast::query_ast_from_user_text; use quickwit_search::{SearchError, SearchResponseRest, SearchService}; -use regex::Regex; use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_json::Value as JsonValue; use tracing::info; @@ -56,20 +56,18 @@ use crate::{with_arg, BodyFormat}; )] pub struct SearchApi; -// Matches index patterns separated by commas or its URL encoded version '%2C'. -static COMMA_SEPARATED_INDEX_PATTERNS_REGEX: Lazy = - Lazy::new(|| Regex::new(r",|%2C").expect("the regular expression should compile")); - pub(crate) async fn extract_index_id_patterns( comma_separated_index_patterns: String, ) -> Result, Rejection> { + let index_pattern = percent_decode_str(&comma_separated_index_patterns) + .decode_utf8() + .context("index pattern does not contain valid utf8 characters") + .map_err(|error| crate::rest::InvalidArgument(error.to_string()))?; + let mut index_ids_patterns = Vec::new(); - for index_id_pattern in - COMMA_SEPARATED_INDEX_PATTERNS_REGEX.split(&comma_separated_index_patterns) - { - validate_index_id_pattern(index_id_pattern).map_err(|error| { - warp::reject::custom(crate::rest::InvalidArgument(error.to_string())) - })?; + for index_id_pattern in index_pattern.split(',').collect::>() { + validate_index_id_pattern(index_id_pattern) + .map_err(|error| crate::rest::InvalidArgument(error.to_string()))?; index_ids_patterns.push(index_id_pattern.to_string()); } assert!(!index_ids_patterns.is_empty()); @@ -538,16 +536,16 @@ mod tests { .await .unwrap(); assert_eq!( - extract_index_id_patterns("my-index-1,my-index-2".to_string()) + extract_index_id_patterns("my-index-1,my-index-2%2A".to_string()) .await .unwrap(), - vec!["my-index-1".to_string(), "my-index-2".to_string()] + vec!["my-index-1".to_string(), "my-index-2*".to_string()] ); assert_eq!( - extract_index_id_patterns("my-index-1%2Cmy-index-2".to_string()) + extract_index_id_patterns("my-index-1%2Cmy-index-%2A".to_string()) .await .unwrap(), - vec!["my-index-1".to_string(), "my-index-2".to_string()] + vec!["my-index-1".to_string(), "my-index-*".to_string()] ); extract_index_id_patterns("".to_string()).await.unwrap_err(); extract_index_id_patterns(" ".to_string())