See <https://ci-beam.apache.org/job/beam_LoadTests_Java_ParDo_Dataflow_V2_Streaming_Java17/295/display/redirect?page=changes>
Changes: [git] BEAM-13592 Add getOrderingKey in [git] Add CHANGES entry [git] Rename transform name according to review comment [git] Update to pass ordering key [egalpin] Adds ordering key to OutgoingMessage builder, adds new coders to pubsub [egalpin] Fixes pubsub bounded writer allowing for orderingKey [egalpin] Alters order of pubsub message support in registrar [egalpin] Removed publishTime and messageId in grpc pubsub client publish [egalpin] Attempts to allow different pubsub root url for PubsubIO.Write [egalpin] Fixes pubsub tests root url [egalpin] Puts PubsubMessageCoder last in registrar [egalpin] Uses MoreObjects over Objects [egalpin] Renames PubsubMessageCoder to [Robert Bradshaw] Add a multi-process shared utility. [Robert Bradshaw] Add fastener dependency. [Robert Bradshaw] Refactor to have an explicit acquire/release API. [Robert Bradshaw] Drop a TODO about deferred construction parameterization. [Robert Bradshaw] Fix unused import/var. [Moritz Mack] Replace website references to deprecated aws / kinesis modules with more [noreply] fix distribution example in golang guide (#23567) [Alexey Romanenko] [website][adhoc] Fix spellcheck errors and typos [noreply] Add database role to SpannerConfig for role-based access control. [noreply] Remove obsolete and deprecated bigquery native read. (#23557) [noreply] Feature/name all java threads (#23387) [noreply] [Go SDK] Don't construct plans in lock section. (#23583) [noreply] Remove obsolete and deprecated bigquery native write. #23557 (#23558) [noreply] Increase Python PostCommit timeout. (#23595) ------------------------------------------ [...truncated 290.72 KB...] > Task :runners:java-fn-execution:jar UP-TO-DATE > Task :sdks:java:expansion-service:compileJava UP-TO-DATE > Task :sdks:java:expansion-service:classes UP-TO-DATE > Task :sdks:java:expansion-service:jar UP-TO-DATE > Task :sdks:java:harness:shadowJar UP-TO-DATE > Task :sdks:java:io:kafka:compileJava UP-TO-DATE > Task :sdks:java:io:kafka:classes UP-TO-DATE > Task :sdks:java:io:kafka:jar UP-TO-DATE > Task :sdks:java:container:java17:copyDockerfileDependencies UP-TO-DATE > Task :sdks:java:io:google-cloud-platform:compileJava UP-TO-DATE > Task :sdks:java:io:google-cloud-platform:classes UP-TO-DATE > Task :sdks:java:io:google-cloud-platform:jar UP-TO-DATE > Task :sdks:java:testing:load-tests:compileJava UP-TO-DATE > Task :sdks:java:testing:load-tests:classes UP-TO-DATE > Task :sdks:java:testing:load-tests:jar UP-TO-DATE > Task :runners:google-cloud-dataflow-java:compileJava UP-TO-DATE > Task :runners:google-cloud-dataflow-java:classes UP-TO-DATE > Task :runners:google-cloud-dataflow-java:jar UP-TO-DATE > Task :sdks:java:container:goBuild /home/jenkins/go/bin/go1.18.1 build -o ./build/target/linux_amd64/boot boot.go boot_test.go > Task :sdks:java:container:java17:copySdkHarnessLauncher Execution optimizations have been disabled for task ':sdks:java:container:java17:copySdkHarnessLauncher' to ensure correctness due to the following reasons: - Gradle detected a problem with the following location: '<https://ci-beam.apache.org/job/beam_LoadTests_Java_ParDo_Dataflow_V2_Streaming_Java17/ws/src/sdks/java/container/build/target'.> Reason: Task ':sdks:java:container:java17:copySdkHarnessLauncher' uses this output of task ':sdks:java:container:downloadCloudProfilerAgent' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem. - Gradle detected a problem with the following location: '<https://ci-beam.apache.org/job/beam_LoadTests_Java_ParDo_Dataflow_V2_Streaming_Java17/ws/src/sdks/java/container/build/target'.> Reason: Task ':sdks:java:container:java17:copySdkHarnessLauncher' uses this output of task ':sdks:java:container:pullLicenses' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.5.1/userguide/validation_problems.html#implicit_dependency for more details about this problem. > Task :sdks:java:container:java17:dockerPrepare > Task :sdks:java:container:java17:docker > Task :runners:google-cloud-dataflow-java:buildAndPushDockerJavaContainer WARNING: `gcloud docker` will not be supported for Docker client versions above 18.03. As an alternative, use `gcloud auth configure-docker` to configure `docker` to use `gcloud` as a credential helper, then use `docker` as you would for non-GCR registries, e.g. `docker pull gcr.io/project-id/my-image`. Add `--verbosity=error` to silence this warning: `gcloud docker --verbosity=error -- pull gcr.io/project-id/my-image`. See: https://cloud.google.com/container-registry/docs/support/deprecation-notices#gcloud-docker The push refers to repository [us.gcr.io/apache-beam-testing/java-postcommit-it/java] fea3c0943ee9: Preparing 796326a61348: Preparing aeed2218489d: Preparing c9d176b23ba5: Preparing a8a4fd2d1cda: Preparing 9c0293d31ffd: Preparing c1a28951d14a: Preparing 42c81219b811: Preparing 69bc8114a220: Preparing 1a3593aaad35: Preparing 281be8c00450: Preparing d173665c0d07: Preparing 7bbe704574d7: Preparing 4e9825e3d533: Preparing 32169353c5aa: Preparing 3bc383470c05: Preparing e93827457889: Preparing 08fa02ce37eb: Preparing a037458de4e0: Preparing bafdbe68e4ae: Preparing a13c519c6361: Preparing c1a28951d14a: Waiting d173665c0d07: Waiting 32169353c5aa: Waiting 7bbe704574d7: Waiting 1a3593aaad35: Waiting 3bc383470c05: Waiting 42c81219b811: Waiting 281be8c00450: Waiting 4e9825e3d533: Waiting bafdbe68e4ae: Waiting 69bc8114a220: Waiting a037458de4e0: Waiting 9c0293d31ffd: Waiting 08fa02ce37eb: Waiting e93827457889: Waiting aeed2218489d: Pushed 796326a61348: Pushed a8a4fd2d1cda: Pushed c9d176b23ba5: Pushed fea3c0943ee9: Pushed c1a28951d14a: Pushed 42c81219b811: Pushed 1a3593aaad35: Pushed 69bc8114a220: Pushed d173665c0d07: Pushed 9c0293d31ffd: Pushed 3bc383470c05: Layer already exists 281be8c00450: Pushed e93827457889: Layer already exists a037458de4e0: Layer already exists 08fa02ce37eb: Layer already exists a13c519c6361: Layer already exists bafdbe68e4ae: Layer already exists 4e9825e3d533: Pushed 32169353c5aa: Pushed 7bbe704574d7: Pushed 20221012124816: digest: sha256:64970b33e5c7817b14f37b8b37d739ca618eccfee1824b6bfc64075d8459bb41 size: 4729 > Task :sdks:java:testing:load-tests:run Oct 12, 2022 12:48:48 PM org.apache.beam.runners.dataflow.options.DataflowPipelineOptions$StagingLocationFactory create INFO: No stagingLocation provided, falling back to gcpTempLocation Oct 12, 2022 12:48:48 PM org.apache.beam.runners.dataflow.DataflowRunner fromOptions INFO: PipelineOptions.filesToStage was not specified. Defaulting to files from the classpath: will stage 229 files. Enable logging at DEBUG level to see which files will be staged. Oct 12, 2022 12:48:49 PM org.apache.beam.sdk.Pipeline validate WARNING: The following transforms do not have stable unique names: ParDo(TimeMonitor) Oct 12, 2022 12:48:49 PM org.apache.beam.runners.dataflow.DataflowRunner run INFO: Executing pipeline on the Dataflow Service, which will have billing implications related to Google Compute Engine usage and other Google Cloud Services. Oct 12, 2022 12:48:51 PM org.apache.beam.runners.dataflow.util.PackageUtil stageClasspathElements INFO: Uploading 229 files from PipelineOptions.filesToStage to staging location to prepare for execution. Oct 12, 2022 12:48:52 PM org.apache.beam.runners.dataflow.util.PackageUtil stageClasspathElements INFO: Staging files complete: 229 files cached, 0 files newly uploaded in 0 seconds Oct 12, 2022 12:48:52 PM org.apache.beam.runners.dataflow.DataflowRunner run INFO: Staging portable pipeline proto to gs://temp-storage-for-perf-tests/loadtests/staging/ Oct 12, 2022 12:48:52 PM org.apache.beam.runners.dataflow.util.PackageUtil tryStagePackage INFO: Uploading <98542 bytes, hash 76b48870455491de3ce8c7d4c407240d03c83dd62e118e5bdf8f7152dbe2b81b> to gs://temp-storage-for-perf-tests/loadtests/staging/pipeline-drSIcEVUkd486MfUxAckDQPIPdYuEY5b349xUtviuBs.pb Oct 12, 2022 12:48:53 PM org.apache.beam.runners.dataflow.DataflowPipelineTranslator$Translator addStep INFO: Adding Read input/DataflowRunner.StreamingUnboundedRead.ReadWithIds as step s1 Oct 12, 2022 12:48:53 PM org.apache.beam.sdk.io.synthetic.SyntheticUnboundedSource split INFO: Split into 20 bundles: [SyntheticUnboundedSource{startOffset=0, endOffset=1000000}, SyntheticUnboundedSource{startOffset=1000000, endOffset=2000000}, SyntheticUnboundedSource{startOffset=2000000, endOffset=3000000}, SyntheticUnboundedSource{startOffset=3000000, endOffset=4000000}, SyntheticUnboundedSource{startOffset=4000000, endOffset=5000000}, SyntheticUnboundedSource{startOffset=5000000, endOffset=6000000}, SyntheticUnboundedSource{startOffset=6000000, endOffset=7000000}, SyntheticUnboundedSource{startOffset=7000000, endOffset=8000000}, SyntheticUnboundedSource{startOffset=8000000, endOffset=9000000}, SyntheticUnboundedSource{startOffset=9000000, endOffset=10000000}, SyntheticUnboundedSource{startOffset=10000000, endOffset=11000000}, SyntheticUnboundedSource{startOffset=11000000, endOffset=12000000}, SyntheticUnboundedSource{startOffset=12000000, endOffset=13000000}, SyntheticUnboundedSource{startOffset=13000000, endOffset=14000000}, SyntheticUnboundedSource{startOffset=14000000, endOffset=15000000}, SyntheticUnboundedSource{startOffset=15000000, endOffset=16000000}, SyntheticUnboundedSource{startOffset=16000000, endOffset=17000000}, SyntheticUnboundedSource{startOffset=17000000, endOffset=18000000}, SyntheticUnboundedSource{startOffset=18000000, endOffset=19000000}, SyntheticUnboundedSource{startOffset=19000000, endOffset=20000000}] Oct 12, 2022 12:48:53 PM org.apache.beam.runners.dataflow.DataflowPipelineTranslator$Translator addStep INFO: Adding Read input/StripIds as step s2 Oct 12, 2022 12:48:53 PM org.apache.beam.runners.dataflow.DataflowPipelineTranslator$Translator addStep INFO: Adding ParDo(TimeMonitor) as step s3 Oct 12, 2022 12:48:53 PM org.apache.beam.runners.dataflow.DataflowPipelineTranslator$Translator addStep INFO: Adding ParDo(ByteMonitor) as step s4 Oct 12, 2022 12:48:53 PM org.apache.beam.runners.dataflow.DataflowPipelineTranslator$Translator addStep INFO: Adding Step: 0 as step s5 Oct 12, 2022 12:48:53 PM org.apache.beam.runners.dataflow.DataflowPipelineTranslator$Translator addStep INFO: Adding ParDo(TimeMonitor)2 as step s6 Oct 12, 2022 12:48:53 PM org.apache.beam.runners.dataflow.DataflowRunner run INFO: Dataflow SDK version: 2.43.0-SNAPSHOT Oct 12, 2022 12:48:54 PM org.apache.beam.runners.dataflow.DataflowRunner run INFO: To access the Dataflow monitoring console, please navigate to https://console.cloud.google.com/dataflow/jobs/us-central1/2022-10-12_05_48_54-16620110649560562103?project=apache-beam-testing Oct 12, 2022 12:48:54 PM org.apache.beam.runners.dataflow.DataflowRunner run INFO: Submitted job: 2022-10-12_05_48_54-16620110649560562103 Oct 12, 2022 12:48:54 PM org.apache.beam.runners.dataflow.DataflowRunner run INFO: To cancel the job using the 'gcloud' tool, run: > gcloud dataflow jobs --project=apache-beam-testing cancel > --region=us-central1 2022-10-12_05_48_54-16620110649560562103 Oct 12, 2022 12:49:00 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process WARNING: 2022-10-12T12:48:59.276Z: The workflow name is not a valid Cloud Label. Labels applied to Cloud resources (such as GCE Instances) for monitoring will be labeled with this modified job name: load0tests0java170dataflow0v20streaming0pardo04-jenkins-10-igmm. For the best monitoring experience, please name your job with a valid Cloud Label. For details, see: https://cloud.google.com/compute/docs/labeling-resources#restrictions Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:06.597Z: Worker configuration: e2-standard-2 in us-central1-b. Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.184Z: Expanding SplittableParDo operations into optimizable parts. Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.213Z: Expanding CollectionToSingleton operations into optimizable parts. Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.269Z: Expanding CoGroupByKey operations into optimizable parts. Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.306Z: Expanding SplittableProcessKeyed operations into optimizable parts. Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.331Z: Expanding GroupByKey operations into streaming Read/Write steps Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.366Z: Lifting ValueCombiningMappingFns into MergeBucketsMappingFns Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.443Z: Fusing adjacent ParDo, Read, Write, and Flatten operations Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.471Z: Fusing consumer Read input/ParDo(OutputSingleSource)/ParMultiDo(OutputSingleSource) into Read input/Impulse Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.502Z: Fusing consumer Read-input-ParDo-UnboundedSourceAsSDFWrapper--ParMultiDo-UnboundedSourceAsSDFWrapper-/PairWithRestriction into Read input/ParDo(OutputSingleSource)/ParMultiDo(OutputSingleSource) Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.527Z: Fusing consumer Read-input-ParDo-UnboundedSourceAsSDFWrapper--ParMultiDo-UnboundedSourceAsSDFWrapper-/SplitWithSizing into Read-input-ParDo-UnboundedSourceAsSDFWrapper--ParMultiDo-UnboundedSourceAsSDFWrapper-/PairWithRestriction Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.564Z: Fusing consumer Read input/ParDo(StripIds)/ParMultiDo(StripIds) into Read-input-ParDo-UnboundedSourceAsSDFWrapper--ParMultiDo-UnboundedSourceAsSDFWrapper-/ProcessElementAndRestrictionWithSizing Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.592Z: Fusing consumer ParDo(TimeMonitor)/ParMultiDo(TimeMonitor) into Read input/ParDo(StripIds)/ParMultiDo(StripIds) Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.627Z: Fusing consumer ParDo(ByteMonitor)/ParMultiDo(ByteMonitor) into ParDo(TimeMonitor)/ParMultiDo(TimeMonitor) Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.651Z: Fusing consumer Step: 0/ParMultiDo(CounterOperation) into ParDo(ByteMonitor)/ParMultiDo(ByteMonitor) Oct 12, 2022 12:49:08 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.680Z: Fusing consumer ParDo(TimeMonitor)2/ParMultiDo(TimeMonitor) into Step: 0/ParMultiDo(CounterOperation) Oct 12, 2022 12:49:10 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:08.780Z: Running job using Streaming Engine Oct 12, 2022 12:49:10 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:09.052Z: Starting 5 ****s in us-central1-b... Oct 12, 2022 12:49:39 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:38.372Z: Your project already contains 100 Dataflow-created metric descriptors, so new user metrics of the form custom.googleapis.com/* will not be created. However, all user metrics are also available in the metric dataflow.googleapis.com/job/user_counter. If you rely on the custom metrics, you can delete old / unused metric descriptors. See https://developers.google.com/apis-explorer/#p/monitoring/v3/monitoring.projects.metricDescriptors.list and https://developers.google.com/apis-explorer/#p/monitoring/v3/monitoring.projects.metricDescriptors.delete Oct 12, 2022 12:49:51 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:49:50.999Z: Autoscaling: Raised the number of ****s to 5 so that the pipeline can catch up with its backlog and keep up with its input rate. Oct 12, 2022 12:50:49 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:50:47.388Z: Workers have started successfully. Oct 12, 2022 12:53:29 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:53:28.539Z: Cleaning up. Oct 12, 2022 12:53:29 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:53:28.617Z: Stopping **** pool... Oct 12, 2022 12:53:29 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:53:28.691Z: Stopping **** pool... Oct 12, 2022 12:55:45 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:55:44.558Z: Autoscaling: Reduced the number of ****s to 0 based on low average **** CPU utilization, and the pipeline having sufficiently low backlog and keeping up with input rate. Oct 12, 2022 12:55:45 PM org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process INFO: 2022-10-12T12:55:44.594Z: Worker pool stopped. Oct 12, 2022 12:55:49 PM org.apache.beam.runners.dataflow.DataflowPipelineJob logTerminalState INFO: Job 2022-10-12_05_48_54-16620110649560562103 finished with status DONE. Load test results for test (ID): 63e6fef6-a64f-4ec0-8cf8-f301cd9b3b7e and timestamp: 2022-10-12T12:48:48.934000000Z: Metric: Value: dataflow_v2_java17_runtime_sec 36.265 dataflow_v2_java17_total_bytes_count 1.999998E9 > Task :runners:google-cloud-dataflow-java:cleanUpDockerJavaImages Untagged: us.gcr.io/apache-beam-testing/java-postcommit-it/java:20221012124816 Untagged: us.gcr.io/apache-beam-testing/java-postcommit-it/java@sha256:64970b33e5c7817b14f37b8b37d739ca618eccfee1824b6bfc64075d8459bb41 Tag: [us.gcr.io/apache-beam-testing/java-postcommit-it/java:20221012124816] - referencing digest: [us.gcr.io/apache-beam-testing/java-postcommit-it/java@sha256:64970b33e5c7817b14f37b8b37d739ca618eccfee1824b6bfc64075d8459bb41] Deleted [[us.gcr.io/apache-beam-testing/java-postcommit-it/java:20221012124816] (referencing [us.gcr.io/apache-beam-testing/java-postcommit-it/java@sha256:64970b33e5c7817b14f37b8b37d739ca618eccfee1824b6bfc64075d8459bb41])]. Removing untagged image us.gcr.io/apache-beam-testing/java-postcommit-it/java@sha256:64970b33e5c7817b14f37b8b37d739ca618eccfee1824b6bfc64075d8459bb41 Digests: - us.gcr.io/apache-beam-testing/java-postcommit-it/java@sha256:64970b33e5c7817b14f37b8b37d739ca618eccfee1824b6bfc64075d8459bb41 ERROR: (gcloud.container.images.delete) [Errno 104] Connection reset by peer This may be due to network connectivity issues. Please check your network settings, and the status of the service you are trying to reach. > Task :runners:google-cloud-dataflow-java:cleanUpDockerJavaImages FAILED FAILURE: Build failed with an exception. * Where: Build file '<https://ci-beam.apache.org/job/beam_LoadTests_Java_ParDo_Dataflow_V2_Streaming_Java17/ws/src/runners/google-cloud-dataflow-java/build.gradle'> line: 304 * What went wrong: Execution failed for task ':runners:google-cloud-dataflow-java:cleanUpDockerJavaImages'. > Process 'command './scripts/cleanup_untagged_gcr_images.sh'' finished with > non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/7.5.1/userguide/command_line_interface.html#sec:command_line_warnings Execution optimizations have been disabled for 1 invalid unit(s) of work during this build to ensure correctness. Please consult deprecation warnings for more details. BUILD FAILED in 7m 40s 105 actionable tasks: 8 executed, 97 up-to-date Publishing build scan... https://gradle.com/s/bceocs7vyfzmu Build step 'Invoke Gradle script' changed build result to FAILURE Build step 'Invoke Gradle script' marked build as failure --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
