See
<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/4927/display/redirect>
Changes:
------------------------------------------
[...truncated 590.72 KB...]
copying apache_beam/transforms/environments.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/environments_test.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/external.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/external_test.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/external_test_it.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/external_test_py3.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/external_test_py37.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/ptransform.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/ptransform_test.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/py_dataflow_distribution_counter.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/sideinputs.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/sideinputs_test.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/stats.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/stats_test.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/timeutil.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/transforms_keyword_only_args_test_py3.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/trigger.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/trigger_test.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/userstate.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/userstate_test.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/util.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/util_test.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/window.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/window_test.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/transforms/write_ptransform_test.py ->
apache-beam-2.18.0.dev0/apache_beam/transforms
copying apache_beam/typehints/__init__.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/decorators.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/decorators_test.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/decorators_test_py3.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/native_type_compatibility.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/native_type_compatibility_test.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/opcodes.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/schemas.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/schemas_test.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/trivial_inference.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/trivial_inference_test.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/trivial_inference_test_py3.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/typecheck.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/typed_pipeline_test.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/typed_pipeline_test_py3.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/typehints.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/typehints_test.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/typehints/typehints_test_py3.py ->
apache-beam-2.18.0.dev0/apache_beam/typehints
copying apache_beam/utils/__init__.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/annotations.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/annotations_test.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/counters.pxd ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/counters.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/counters_test.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/plugin.py -> apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/processes.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/processes_test.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/profiler.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/proto_utils.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/retry.py -> apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/retry_test.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/subprocess_server.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/thread_pool_executor.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/thread_pool_executor_test.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/timestamp.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/timestamp_test.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/urns.py -> apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/windowed_value.pxd ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/windowed_value.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
copying apache_beam/utils/windowed_value_test.py ->
apache-beam-2.18.0.dev0/apache_beam/utils
Writing apache-beam-2.18.0.dev0/setup.cfg
creating dist
Creating tar archive
removing 'apache-beam-2.18.0.dev0' (and everything under it)
SDK_LOCATION=$(find dist/apache-beam-*.tar.gz)
find dist/apache-beam-*.tar.gz
# Run ValidatesRunner tests on Google Cloud Dataflow service
echo ">>> RUNNING DATAFLOW RUNNER VALIDATESCONTAINER TEST"
>>> RUNNING DATAFLOW RUNNER VALIDATESCONTAINER TEST
python setup.py nosetests \
--attr ValidatesContainer \
--nologcapture \
--processes=1 \
--process-timeout=900 \
--with-xunitmp \
--xunitmp-file=$XUNIT_FILE \
--ignore-files '.*py3\d?\.py$' \
--test-pipeline-options=" \
--runner=TestDataflowRunner \
--project=$PROJECT \
--worker_harness_container_image=$CONTAINER:$TAG \
--staging_location=$GCS_LOCATION/staging-validatesrunner-test \
--temp_location=$GCS_LOCATION/temp-validatesrunner-test \
--output=$GCS_LOCATION/output \
--sdk_location=$SDK_LOCATION \
--num_workers=1"
setup.py:198: UserWarning: You are using Apache Beam with Python 2. New
releases of Apache Beam will soon support Python 3 only.
'You are using Apache Beam with Python 2. '
<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/container/venv/python/local/lib/python2.7/site-packages/setuptools/dist.py>:476:
UserWarning: Normalizing '2.18.0.dev' to '2.18.0.dev0'
normalized_version,
running nosetests
running egg_info
<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/gen_protos.py>:58:
UserWarning: Installing grpcio-tools is recommended for development.
warnings.warn('Installing grpcio-tools is recommended for development.')
writing requirements to apache_beam.egg-info/requires.txt
writing apache_beam.egg-info/PKG-INFO
writing top-level names to apache_beam.egg-info/top_level.txt
writing dependency_links to apache_beam.egg-info/dependency_links.txt
writing entry points to apache_beam.egg-info/entry_points.txt
reading manifest file 'apache_beam.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'README.md'
warning: no files found matching 'NOTICE'
warning: no files found matching 'LICENSE'
writing manifest file 'apache_beam.egg-info/SOURCES.txt'
<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/apache_beam/__init__.py>:84:
UserWarning: You are using Apache Beam with Python 2. New releases of Apache
Beam will soon support Python 3 only.
'You are using Apache Beam with Python 2. '
No handlers could be found for logger
"apache_beam.io.gcp.datastore.v1.datastoreio"
WARNING:root:python-snappy is not installed; some tests will be skipped.
WARNING:root:Tensorflow is not installed, so skipping some tests.
WARNING:apache_beam.runners.interactive.interactive_environment:Interactive
Beam requires Python 3.5.3+.
WARNING:apache_beam.runners.interactive.interactive_environment:Dependencies
required for Interactive Beam PCollection visualization are not available,
please use: `pip install apache-beam[interactive]` to install necessary
dependencies to enable all data visualization features.
WARNING:apache_beam.runners.interactive.interactive_environment:You cannot use
Interactive Beam features when you are not in an interactive environment such
as a Jupyter notebook or ipython terminal.
WARNING:root:Make sure that locally built Python SDK docker image has Python
2.7 interpreter.
<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/apache_beam/transforms/trigger_test.py>:517:
YAMLLoadWarning: calling yaml.load_all() without Loader=... is deprecated, as
the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full
details.
for spec in yaml.load_all(open(transcript_filename)):
WARNING:apache_beam.options.pipeline_options:--region not set; will default to
us-central1. Future releases of Beam will require the user to set --region
explicitly, or else have a default set via the gcloud tool.
https://cloud.google.com/compute/docs/regions-zones
WARNING:apache_beam.options.pipeline_options:--region not set; will default to
us-central1. Future releases of Beam will require the user to set --region
explicitly, or else have a default set via the gcloud tool.
https://cloud.google.com/compute/docs/regions-zones
test_wordcount_fnapi_it (apache_beam.examples.wordcount_it_test.WordCountIT)
... ok
WARNING:apache_beam.options.pipeline_options:--region not set; will default to
us-central1. Future releases of Beam will require the user to set --region
explicitly, or else have a default set via the gcloud tool.
https://cloud.google.com/compute/docs/regions-zones
WARNING:apache_beam.options.pipeline_options:--region not set; will default to
us-central1. Future releases of Beam will require the user to set --region
explicitly, or else have a default set via the gcloud tool.
https://cloud.google.com/compute/docs/regions-zones
test_metrics_fnapi_it
(apache_beam.runners.dataflow.dataflow_exercise_metrics_pipeline_test.ExerciseMetricsPipelineTest)
... ERROR
======================================================================
ERROR: test_metrics_fnapi_it
(apache_beam.runners.dataflow.dataflow_exercise_metrics_pipeline_test.ExerciseMetricsPipelineTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File
"<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/apache_beam/runners/dataflow/dataflow_exercise_metrics_pipeline_test.py",>
line 56, in test_metrics_fnapi_it
result = self.run_pipeline(experiment='beam_fn_api')
File
"<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/apache_beam/runners/dataflow/dataflow_exercise_metrics_pipeline_test.py",>
line 44, in run_pipeline
return dataflow_exercise_metrics_pipeline.apply_and_run(p)
File
"<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/apache_beam/runners/dataflow/dataflow_exercise_metrics_pipeline.py",>
line 180, in apply_and_run
result = pipeline.run()
File
"<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/apache_beam/pipeline.py",>
line 416, in run
self._options).run(False)
File
"<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/apache_beam/pipeline.py",>
line 429, in run
return self.runner.run_pipeline(self, self._options)
File
"<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/apache_beam/runners/dataflow/test_dataflow_runner.py",>
line 66, in run_pipeline
self.result.wait_until_finish(duration=wait_duration)
File
"<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/apache_beam/runners/dataflow/dataflow_runner.py",>
line 1442, in wait_until_finish
(self.state, getattr(self._runner, 'last_error_msg', None)), self)
DataflowRuntimeException: Dataflow pipeline failed. State: FAILED, Error:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: Error
received from SDK harness for instruction -476: Traceback (most recent call
last):
File
"/usr/local/lib/python2.7/site-packages/apache_beam/runners/worker/sdk_worker.py",
line 136, in _execute
response = task()
File
"/usr/local/lib/python2.7/site-packages/apache_beam/runners/worker/sdk_worker.py",
line 154, in <lambda>
lambda: self.create_worker().do_instruction(request), request)
File
"/usr/local/lib/python2.7/site-packages/apache_beam/runners/worker/sdk_worker.py",
line 286, in do_instruction
request.instruction_id)
File
"/usr/local/lib/python2.7/site-packages/apache_beam/runners/worker/sdk_worker.py",
line 306, in process_bundle
instruction_id, request.process_bundle_descriptor_id)
File
"/usr/local/lib/python2.7/site-packages/apache_beam/runners/worker/sdk_worker.py",
line 239, in get
self.fns[bundle_descriptor_id],
KeyError: u'-450'
at
java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at
java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)
at org.apache.beam.sdk.util.MoreFutures.get(MoreFutures.java:57)
at
org.apache.beam.runners.dataflow.worker.fn.control.RegisterAndProcessBundleOperation.finish(RegisterAndProcessBundleOperation.java:330)
at
org.apache.beam.runners.dataflow.worker.util.common.worker.MapTaskExecutor.execute(MapTaskExecutor.java:85)
at
org.apache.beam.runners.dataflow.worker.fn.control.BeamFnMapTaskExecutor.execute(BeamFnMapTaskExecutor.java:125)
at
org.apache.beam.runners.dataflow.worker.BatchDataflowWorker.executeWork(BatchDataflowWorker.java:411)
at
org.apache.beam.runners.dataflow.worker.BatchDataflowWorker.doWork(BatchDataflowWorker.java:380)
at
org.apache.beam.runners.dataflow.worker.BatchDataflowWorker.getAndPerformWork(BatchDataflowWorker.java:305)
at
org.apache.beam.runners.dataflow.worker.DataflowRunnerHarness.start(DataflowRunnerHarness.java:195)
at
org.apache.beam.runners.dataflow.worker.DataflowRunnerHarness.main(DataflowRunnerHarness.java:123)
Suppressed: java.lang.IllegalStateException: Already closed.
at
org.apache.beam.sdk.fn.data.BeamFnDataBufferingOutboundObserver.close(BeamFnDataBufferingOutboundObserver.java:93)
at
org.apache.beam.runners.dataflow.worker.fn.data.RemoteGrpcPortWriteOperation.abort(RemoteGrpcPortWriteOperation.java:220)
at
org.apache.beam.runners.dataflow.worker.util.common.worker.MapTaskExecutor.execute(MapTaskExecutor.java:91)
... 6 more
Caused by: java.lang.RuntimeException: Error received from SDK harness for
instruction -476: Traceback (most recent call last):
File
"/usr/local/lib/python2.7/site-packages/apache_beam/runners/worker/sdk_worker.py",
line 136, in _execute
response = task()
File
"/usr/local/lib/python2.7/site-packages/apache_beam/runners/worker/sdk_worker.py",
line 154, in <lambda>
lambda: self.create_worker().do_instruction(request), request)
File
"/usr/local/lib/python2.7/site-packages/apache_beam/runners/worker/sdk_worker.py",
line 286, in do_instruction
request.instruction_id)
File
"/usr/local/lib/python2.7/site-packages/apache_beam/runners/worker/sdk_worker.py",
line 306, in process_bundle
instruction_id, request.process_bundle_descriptor_id)
File
"/usr/local/lib/python2.7/site-packages/apache_beam/runners/worker/sdk_worker.py",
line 239, in get
self.fns[bundle_descriptor_id],
KeyError: u'-450'
at
org.apache.beam.runners.fnexecution.control.FnApiControlClient$ResponseStreamObserver.onNext(FnApiControlClient.java:157)
at
org.apache.beam.runners.fnexecution.control.FnApiControlClient$ResponseStreamObserver.onNext(FnApiControlClient.java:140)
at
org.apache.beam.vendor.grpc.v1p21p0.io.grpc.stub.ServerCalls$StreamingServerCallHandler$StreamingServerCallListener.onMessage(ServerCalls.java:249)
at
org.apache.beam.vendor.grpc.v1p21p0.io.grpc.ForwardingServerCallListener.onMessage(ForwardingServerCallListener.java:33)
at
org.apache.beam.vendor.grpc.v1p21p0.io.grpc.Contexts$ContextualizedServerCallListener.onMessage(Contexts.java:76)
at
org.apache.beam.vendor.grpc.v1p21p0.io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailable(ServerCallImpl.java:297)
at
org.apache.beam.vendor.grpc.v1p21p0.io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1MessagesAvailable.runInContext(ServerImpl.java:738)
at
org.apache.beam.vendor.grpc.v1p21p0.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
at
org.apache.beam.vendor.grpc.v1p21p0.io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
-------------------- >> begin captured stdout << ---------------------
Worker logs:
https://console.cloud.google.com/dataflow/jobsDetail/locations/us-central1/jobs/2019-11-29_22_13_53-4127584631427853494?project=apache-beam-testing
--------------------- >> end captured stdout << ----------------------
----------------------------------------------------------------------
XML: nosetests-python2.7_sdk.xml
----------------------------------------------------------------------
XML:
<https://builds.apache.org/job/beam_PostCommit_Py_ValCont/ws/src/sdks/python/nosetests.xml>
----------------------------------------------------------------------
Ran 2 tests in 674.431s
FAILED (errors=1)
cleanup_container
Untagged: us.gcr.io/apache-beam-testing/jenkins/python2.7_sdk:20191130-060021
Untagged:
us.gcr.io/apache-beam-testing/jenkins/python2.7_sdk@sha256:3ef19137934f13aa7eec6c727bb67f5a3afcf34ab3addf602ea42305d2ea5d36
Deleted: sha256:7aa0d155b02d29d3d89a03818c8c2a327966ce69810f8d6f3a5956398336bfb3
Deleted: sha256:4cfd6ae4993f7a5c64f3b9d6cac0342b46d244068d3e54fa9c197781411ebea5
Deleted: sha256:88f0e4b955ec50a23b6a7f452a0a32ec4e6ea25af598f9d38767ab0386518fb7
Deleted: sha256:027c4bcd621222086fb5f2c3bb385afce94dd6c8abfcfc60061b24e01f058a34
Deleted: sha256:47949a4306f98f8c6cf7fd5fa90621b793cbae9cee26a2f203b71420c30f2d0f
Deleted: sha256:512b82299a5653697304cf51bf5c5728da56fef6e5469eef6c732fe978583e17
Deleted: sha256:7406bac7825b4822e634171d4c4c3cc95587a1fda955b374c5fec02a471fc565
Deleted: sha256:7227e4b8150491b2583a932d4d731ecbb832f1139b563917ed0ec40b16c6f3ce
Deleted: sha256:0fb362d1d823475a11bb9552b33e868e410c1810f5d8ee8227b517b459d5cecf
Deleted: sha256:b370248f9764f6407e788a1785226ff912f6a2b8603737e1d517be0b6fd5684b
Deleted: sha256:d701ca866a72e0db0ab6edec23fa0246712faf9c1a8c9d270179a6184fe74872
Deleted: sha256:8435f92ddcc96b7dee7292e58abe00229a864acb069757436f6d15f27cc41701
Deleted: sha256:644c51f5c727e7e1457e805eb8aa7a9b713a9aa3acf6ec5fd98c05a51796ea19
Deleted: sha256:6496d7af3c609bb78b8694ecdb3d01248e9d6223be0d9c2fa2cadd1189f9c0c4
Deleted: sha256:83cdc39df3c8ed6c30e5d4ec51b3c3e460db475863075a1c299da8e70143fd1b
Deleted: sha256:ebdf00faa9cef1ee017b90df36baffe283b599106d2647213aa9f9ec4f85bc51
Deleted: sha256:96531417c379ad086d2c23e26b74d58083568c589a0737f9b4cfcf24c32f2166
Deleted: sha256:499335a59460718cf6c8e19b6f7c1cb476dddb237704c525620bec81bda8e1ab
Deleted: sha256:20aa1e393e992fb9d6aded7144fbd4e605863f19f9989720bd8b9fc2ec0050c1
Deleted: sha256:7d3cf33ee1d06366c109ce9a7ace290caae575c96b3db1d7fa776e0dde49768f
Digests:
-
us.gcr.io/apache-beam-testing/jenkins/python2.7_sdk@sha256:3ef19137934f13aa7eec6c727bb67f5a3afcf34ab3addf602ea42305d2ea5d36
Associated tags:
- 20191130-060021
Tags:
- us.gcr.io/apache-beam-testing/jenkins/python2.7_sdk:20191130-060021
Deleted [us.gcr.io/apache-beam-testing/jenkins/python2.7_sdk:20191130-060021].
Deleted
[us.gcr.io/apache-beam-testing/jenkins/python2.7_sdk@sha256:3ef19137934f13aa7eec6c727bb67f5a3afcf34ab3addf602ea42305d2ea5d36].
Removed the container
Build step 'Execute shell' marked build as failure
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]